Alterações nas rotas e login

This commit is contained in:
jp-lima 2025-10-02 09:32:56 -03:00
parent e6234093de
commit 84c14fdb06
7 changed files with 68 additions and 61 deletions

View File

@ -129,7 +129,7 @@
cursor: pointer; cursor: pointer;
} }
.card:hover { .highlight:hover {
transform: translateY(-6px); transform: translateY(-6px);
box-shadow: 0 8px 20px rgba(30, 58, 138, 0.2); box-shadow: 0 8px 20px rgba(30, 58, 138, 0.2);
background: #f8faff; background: #f8faff;

View File

@ -20,22 +20,22 @@ function UserDashboard() {
</div> </div>
<div className="cards-container"> <div className="cards-container">
<div className="card"> <div className="card highlight">
<p className="card-label">Total de Usuários</p> <p className="card-label">Total de Usuários</p>
<p className="card-value">15</p> <p className="card-value">15</p>
<p className="card-extra positive">+3 este mês</p> <p className="card-extra positive">+3 este mês</p>
</div> </div>
<div className="card"> <div className="card highlight">
<p className="card-label">Usuários Ativos</p> <p className="card-label">Usuários Ativos</p>
<p className="card-value">12</p> <p className="card-value">12</p>
<p className="card-extra">80.0% do total</p> <p className="card-extra">80.0% do total</p>
</div> </div>
<div className="card"> <div className="card highlight">
<p className="card-label">Tempo Médio Sessão</p> <p className="card-label">Tempo Médio Sessão</p>
<p className="card-value">2h 30min</p> <p className="card-value">2h 30min</p>
<p className="card-extra">Última semana</p> <p className="card-extra">Última semana</p>
</div> </div>
<div className="card"> <div className="card highlight">
<p className="card-label">Usuários Hoje</p> <p className="card-label">Usuários Hoje</p>
<p className="card-value">10</p> <p className="card-value">10</p>
<p className="card-extra positive">+2 desde ontem</p> <p className="card-extra positive">+2 desde ontem</p>

View File

@ -9,19 +9,6 @@
"url": "/admin/", "url": "/admin/",
"icon": "house" "icon": "house"
}, },
{
"name": "Cadastro de Pacientes",
"url": "/admin/pacientes/cadastro",
"icon": "heart-pulse-fill"
},
{
"name": "Cadastro do Médico",
"url": "/admin/medicos/cadastro",
"icon": "capsule"
},
{ {
"name": "Lista de Pacientes", "name": "Lista de Pacientes",
"icon": "clipboard-heart-fill", "icon": "clipboard-heart-fill",

View File

@ -95,7 +95,7 @@ function TableDoctor({ setCurrentPage, setPatientID }) {
<div className="card"> <div className="card">
<div className="card-header d-flex justify-content-between align-items-center"> <div className="card-header d-flex justify-content-between align-items-center">
<h4 className="card-title mb-0">Médicos Cadastrados</h4> <h4 className="card-title mb-0">Médicos Cadastrados</h4>
<Link to={'/medicos/cadastro'}> <Link to={'cadastro'}>
<button <button
className="btn btn-primary" className="btn btn-primary"

View File

@ -2,46 +2,17 @@ import React, { useState, useEffect } from 'react';
import { useNavigate } from 'react-router-dom'; import { useNavigate } from 'react-router-dom';
import { FaUser, FaUserPlus, FaCalendarAlt, FaCalendarCheck } from 'react-icons/fa'; import { FaUser, FaUserPlus, FaCalendarAlt, FaCalendarCheck } from 'react-icons/fa';
import './style/Inicio.css'; import './style/Inicio.css';
import { useAuth } from '../components/utils/AuthProvider';
import { Link } from 'react-router-dom'; import { Link } from 'react-router-dom';
function Inicio() { function Inicio() {
const { authTokens, setAuthTokens } = useAuth();
const navigate = useNavigate(); const navigate = useNavigate();
const [pacientes, setPacientes] = useState([]); const [pacientes, setPacientes] = useState([]);
const [agendamentos, setAgendamentos] = useState([]); const [agendamentos, setAgendamentos] = useState([]);
useEffect(() => { useEffect(() => {
var myHeaders = new Headers();
myHeaders.append("apikey", "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJzdXBhYmFzZSIsInJlZiI6Inl1YW5xZnN3aGJlcmtvZXZ0bWZyIiwicm9sZSI6ImFub24iLCJpYXQiOjE3NTQ5NTQzNjksImV4cCI6MjA3MDUzMDM2OX0.g8Fm4XAvtX46zifBZnYVH4tVuQkqUH6Ia9CXQj4DztQ");
myHeaders.append("Content-Type", "application/json");
var raw = JSON.stringify({
"email": "riseup@popcode.com.br",
"password": "riseup"
});
var requestOptions = {
method: 'POST',
headers: myHeaders,
body: raw,
redirect: 'follow'
};
fetch("https://yuanqfswhberkoevtmfr.supabase.co/auth/v1/token?grant_type=password", requestOptions)
.then(response => response.json())
.then(result => {setAuthTokens(result); console.log(result)})
.catch(error => console.log('error', error));
/*const fetchPacientes = async () => { /*const fetchPacientes = async () => {
try { try {
const res = await fetch("https://mock.apidog.com/m1/1053378-0-default/pacientes"); const res = await fetch("https://mock.apidog.com/m1/1053378-0-default/pacientes");
@ -122,14 +93,14 @@ function Inicio() {
<div className="quick-actions"> <div className="quick-actions">
<h2>Ações Rápidas</h2> <h2>Ações Rápidas</h2>
<div className="actions-grid"> <div className="actions-grid">
<div className="action-button" onClick={() => navigate('/secretaria/pacientes/cadastro')}> <div className="action-button" onClick={() => navigate('pacientes/cadastro')}>
<FaUserPlus className="action-icon" /> <FaUserPlus className="action-icon" />
<div className="action-info"> <div className="action-info">
<span className="action-title">Novo Paciente</span> <span className="action-title">Novo Paciente</span>
<span className="action-desc">Cadastrar um novo paciente</span> <span className="action-desc">Cadastrar um novo paciente</span>
</div> </div>
</div> </div>
<div className="action-button" onClick={() => navigate('/secretaria/pacientes')}> <div className="action-button" onClick={() => navigate('pacientes')}>
<FaUser className="action-icon" /> <FaUser className="action-icon" />
<div className="action-info"> <div className="action-info">
<span className="action-title">Lista de Pacientes</span> <span className="action-title">Lista de Pacientes</span>

View File

@ -1,8 +1,9 @@
import React, { useState } from 'react'; import React, { useState, useEffect, use } from 'react';
import { Link, useNavigate } from "react-router-dom"; import { Link, useNavigate } from "react-router-dom";
import { useAuth } from '../components/utils/AuthProvider';
import API_KEY from '../components/utils/apiKeys';
function Login({ onEnterSystem }) { function Login({ onEnterSystem }) {
const { authTokens, setAuthTokens } = useAuth();
const navigate = useNavigate(); const navigate = useNavigate();
const [form, setForm] = useState({ const [form, setForm] = useState({
username: "", username: "",
@ -11,18 +12,66 @@ function Login({ onEnterSystem }) {
const [alert, setAlert] = useState(""); const [alert, setAlert] = useState("");
const [showPassword, setShowPassword] = useState(false); const [showPassword, setShowPassword] = useState(false);
useEffect(() => {
var myHeaders = new Headers();
myHeaders.append("apikey", API_KEY);
myHeaders.append("Content-Type", "application/json");
var raw = JSON.stringify({
"email": "riseup@popcode.com.br",
"password": "riseup"
});
var requestOptions = {
method: 'POST',
headers: myHeaders,
body: raw,
redirect: 'follow'
};
fetch("https://yuanqfswhberkoevtmfr.supabase.co/auth/v1/token?grant_type=password", requestOptions)
.then(response => response.json())
.then(data => {
setAuthTokens(data);
console.log(data);
})
.catch(error => console.log('error', error));
}, []);
const handleChange = (e) => { const handleChange = (e) => {
setForm({ ...form, [e.target.name]: e.target.value }); setForm({ ...form, [e.target.name]: e.target.value });
}; };
const handleLogin = (e) => { const handleLogin = async (e) => {
e.preventDefault(); e.preventDefault();
console.log("Tentando logar com:", form); console.log("Tentando logar com:", form);
if (form.username && form.password) { if (form.username && form.password) {
// ...login logic...
navigate('/admin/inicio');
/* if (data.access_token) {
console.log("Login bem-sucedido!");
var myHeaders = new Headers();
myHeaders.append("apikey", API_KEY);
myHeaders.append("Authorization", `Bearer ${data.access_token}`);
var requestOptions = {
method: 'GET',
headers: myHeaders,
redirect: 'follow'
};
console.log(data.user.id)
fetch(`https://yuanqfswhberkoevtmfr.supabase.co/functions/v1/user-info`, requestOptions)
.then(response => response.text())
.then(result => console.log(result, "vamo ver se da certo"))
.catch(error => console.log('error', error));
}*/
navigate(`/${form.username}/`);
} else { } else {
setAlert("Preencha todos os campos!"); setAlert("Preencha todos os campos!");
} }

View File

@ -156,7 +156,7 @@ function TablePaciente({ setCurrentPage, setPatientID }) {
<div className="card"> <div className="card">
<div className="card-header d-flex justify-content-between align-items-center"> <div className="card-header d-flex justify-content-between align-items-center">
<h4 className="card-title mb-0">Pacientes Cadastrados</h4> <h4 className="card-title mb-0">Pacientes Cadastrados</h4>
<Link to={'/secretaria/pacientes/cadastro'}> <Link to={'cadastro'}>
<button <button
className="btn btn-primary" className="btn btn-primary"
> >