Inicio Login funcional e troca de perfis

This commit is contained in:
jp-lima 2025-10-03 17:02:23 -03:00
parent 84c14fdb06
commit bdabcf9f60
9 changed files with 90 additions and 49 deletions

View File

@ -52,17 +52,7 @@ font-weight: 600;
} }
/* Ajuste para a classe calendario, se for usada */ /* Ajuste para a classe calendario, se for usada */
/*
.calendario {
margin-top: 20px;
border-collapse: collapse;
width: 100%;
border-radius: 10px;
overflow: hidden;
box-shadow: 0 4px 12px rgb(255, 255, 255);
border: 10px solid #ffffffc5;
background-color: rgb(253, 253, 253);
}*/
.mostrar-horario td, .mostrar-horario th { .mostrar-horario td, .mostrar-horario th {

View File

@ -1,4 +1,4 @@
/*import React from 'react'; import React from 'react';
function ProfileCard() { function ProfileCard() {
return ( return (
@ -18,4 +18,4 @@ function ProfileCard() {
); );
} }
export default ProfileCard;*/ export default ProfileCard;

View File

@ -1,6 +1,8 @@
import React, { useState } from "react"; import React, { useState } from "react";
import { Link } from "react-router-dom"; import { Link } from "react-router-dom";
import menuItems from "../data/sidebar-items-medico.json"; // Use "sidebar-items-secretaria.json" para secretaria e "sidebar-items-adm.json" para ADM import menuItems from "../data/sidebar-items-medico.json"; // Use "sidebar-items-secretaria.json" para secretaria e "sidebar-items-adm.json" para ADM
import TrocardePerfis from "./TrocardePerfis";
// 1. Recebe 'menuItems' e 'onLogout' como props // 1. Recebe 'menuItems' e 'onLogout' como props
function Sidebar({ menuItems, onLogout }) { function Sidebar({ menuItems, onLogout }) {
@ -120,6 +122,8 @@ function Sidebar({ menuItems, onLogout }) {
</button> </button>
</li> </li>
<TrocardePerfis />
</ul> </ul>
</div> </div>

View File

@ -105,7 +105,6 @@ function PatientForm({ onSave, onCancel, formData, setFormData }) {
const handleSubmit = async () => { const handleSubmit = async () => {
if (!formData.full_name || !formData.cpf || !formData.sex || !formData.birth_date){ if (!formData.full_name || !formData.cpf || !formData.sex || !formData.birth_date){
console.log(formData.full_name, formData.cpf, formData.sex, formData.birth_date)
setErrorModalMsg('Por favor, preencha Nome, CPF, Gênero e data de nascimento.'); setErrorModalMsg('Por favor, preencha Nome, CPF, Gênero e data de nascimento.');
setShowModal404(true); setShowModal404(true);
return return

View File

@ -5,7 +5,7 @@ import { useAuth } from '../components/utils/AuthProvider'
import {useEffect, useState} from 'react' import {useEffect, useState} from 'react'
import { useParams } from 'react-router-dom' import { useParams } from 'react-router-dom'
import API_KEY from '../components/utils/apiKeys' import API_KEY from '../components/utils/apiKeys'
const DoctorEditPage = ( {id, setCurrentPage}) => { const DoctorEditPage = () => {
const {getAuthorizationHeader, isAuthenticated} = useAuth(); const {getAuthorizationHeader, isAuthenticated} = useAuth();
const [DoctorToPUT, setDoctorPUT] = useState({}) const [DoctorToPUT, setDoctorPUT] = useState({})

View File

@ -163,7 +163,7 @@ function TableDoctor({ setCurrentPage, setPatientID }) {
<td> <td>
<div className="d-flex gap-2"> <div className="d-flex gap-2">
{/* Ver Detalhes */} {/* Ver Detalhes */}
<Link to={`/medicos/${medico.id}`}> <Link to={`${medico.id}`}>
<button <button
className="btn btn-sm" className="btn btn-sm"
style={{ style={{
@ -181,7 +181,7 @@ function TableDoctor({ setCurrentPage, setPatientID }) {
</Link> </Link>
{/* Editar */} {/* Editar */}
<Link to={`/medicos/${medico.id}/edit`}> <Link to={`${medico.id}/edit`}>
<button <button
className="btn btn-sm" className="btn btn-sm"
style={{ style={{

View File

@ -1,9 +1,11 @@
import React, { useState, useEffect, use } 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 { useAuth } from '../components/utils/AuthProvider';
import API_KEY from '../components/utils/apiKeys'; import API_KEY from '../components/utils/apiKeys';
import { UserInfos } from '../components/utils/Functions-Endpoints/General';
function Login({ onEnterSystem }) { function Login({ onEnterSystem }) {
const { authTokens, setAuthTokens } = useAuth(); const {setAuthTokens } = useAuth();
const navigate = useNavigate(); const navigate = useNavigate();
const [form, setForm] = useState({ const [form, setForm] = useState({
username: "", username: "",
@ -11,15 +13,16 @@ function Login({ onEnterSystem }) {
}); });
const [alert, setAlert] = useState(""); const [alert, setAlert] = useState("");
const [showPassword, setShowPassword] = useState(false); const [showPassword, setShowPassword] = useState(false);
/*
useEffect(async () => {
useEffect(() => {
var myHeaders = new Headers(); var myHeaders = new Headers();
myHeaders.append("apikey", API_KEY); myHeaders.append("apikey", API_KEY);
myHeaders.append("Content-Type", "application/json"); myHeaders.append("Content-Type", "application/json");
var raw = JSON.stringify({ var raw = JSON.stringify({
"email": "riseup@popcode.com.br", "email": form.username,
"password": "riseup" "password": form.password
}); });
var requestOptions = { var requestOptions = {
@ -30,14 +33,52 @@ function Login({ onEnterSystem }) {
redirect: 'follow' redirect: 'follow'
}; };
fetch("https://yuanqfswhberkoevtmfr.supabase.co/auth/v1/token?grant_type=password", requestOptions) const response = await fetch("https://yuanqfswhberkoevtmfr.supabase.co/auth/v1/token?grant_type=password", requestOptions);
const data = await response.json();
setAuthTokens(data);
console.log(data);
if(data.access_token){
console.log('jasja')
/*var myHeaders = new Headers();
myHeaders.append("Authorization", `Bearer ${data.access_token}`);
myHeaders.append("apikey", API_KEY);
var raw = JSON.stringify({
"email": "secretaria@squad23.com",
"password": "squad23!",
"full_name": "Secretaria",
"phone": "(11) 99999-9999",
"role": "secretaria"
});
var requestOptions = {
method: 'POST',
headers: myHeaders,
body: raw,
redirect: 'follow'
};
fetch("https://yuanqfswhberkoevtmfr.supabase.co/functions/v1/create-user", requestOptions)
.then(response => response.json()) .then(response => response.json())
.then(data => { .then(result => console.log(result))
setAuthTokens(data); .catch(error => console.log('error', error));*/
console.log(data);
}) /* var myHeaders = new Headers();
myHeaders.append("Authorization", `Bearer ${data.access_token}`);
myHeaders.append("apikey", API_KEY);
var requestOptions = {
method: 'GET',
headers: myHeaders,
redirect: 'follow'
};
fetch("https://yuanqfswhberkoevtmfr.supabase.co/rest/v1/user_roles", requestOptions)
.then(response => response.text())
.then(result => console.log(result))
.catch(error => console.log('error', error)); .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 });
@ -47,31 +88,38 @@ function Login({ onEnterSystem }) {
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) {
var myHeaders = new Headers();
/* if (data.access_token) {
console.log("Login bem-sucedido!");
var myHeaders = new Headers();
myHeaders.append("apikey", API_KEY); myHeaders.append("apikey", API_KEY);
myHeaders.append("Authorization", `Bearer ${data.access_token}`); myHeaders.append("Content-Type", "application/json");
var raw = JSON.stringify({
"email": form.username,
"password": form.password
});
var requestOptions = { var requestOptions = {
method: 'GET', method: 'POST',
headers: myHeaders, headers: myHeaders,
body: raw,
redirect: 'follow' redirect: 'follow'
}; };
console.log(data.user.id) const response = await fetch("https://yuanqfswhberkoevtmfr.supabase.co/auth/v1/token?grant_type=password", requestOptions);
const data = await response.json();
setAuthTokens(data);
console.log(data);
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}/`); if (data.access_token){
const UserData = await UserInfos(`bearer ${data.access_token}`);
console.log(UserData, 'Dados do usuário');
navigate(`/admin/`);
}
} else { } else {
setAlert("Preencha todos os campos!"); setAlert("Preencha todos os campos!");
} }

View File

@ -6,7 +6,7 @@ import API_KEY from '../components/utils/apiKeys';
import { useAuth } from '../components/utils/AuthProvider'; import { useAuth } from '../components/utils/AuthProvider';
function PatientCadastroManager( {setCurrentPage} ) { function PatientCadastroManager( {} ) {
const navigate = useNavigate() const navigate = useNavigate()
const [showModal, setShowModal] = useState(false); const [showModal, setShowModal] = useState(false);
const [infosModal, setInfosModal] = useState({title:'', message:''}); const [infosModal, setInfosModal] = useState({title:'', message:''});

View File

@ -115,7 +115,7 @@ function TablePaciente({ setCurrentPage, setPatientID }) {
fetch("https://yuanqfswhberkoevtmfr.supabase.co/rest/v1/patients", requestOptions) fetch("https://yuanqfswhberkoevtmfr.supabase.co/rest/v1/patients", requestOptions)
.then(response => response.json()) .then(response => response.json())
.then(result => setPacientes(result)) .then(result => console.log(result))
.catch(error => console.log('error', error)); .catch(error => console.log('error', error));
}, [isAuthenticated, getAuthorizationHeader]); }, [isAuthenticated, getAuthorizationHeader]);
@ -265,7 +265,7 @@ function TablePaciente({ setCurrentPage, setPatientID }) {
</td> </td>
<td> <td>
<div className="d-flex gap-2"> <div className="d-flex gap-2">
<Link to={`/pacientes/${paciente.id}`}> <Link to={`${paciente.id}`}>
<button <button
className="btn btn-sm" className="btn btn-sm"
style={{ style={{
@ -281,7 +281,7 @@ function TablePaciente({ setCurrentPage, setPatientID }) {
</button> </button>
</Link> </Link>
<Link to={`/pacientes/${paciente.id}/edit`}> <Link to={`${paciente.id}/edit`}>
<button <button
className="btn btn-sm" className="btn btn-sm"
style={{ style={{