feat: implement real user profile viewing and auth state

This commit is contained in:
Cauê Faleiros
2026-02-26 10:18:27 -03:00
parent a175315437
commit dda606ef9b
3 changed files with 54 additions and 26 deletions

View File

@@ -1,7 +1,7 @@
import React, { useState } from 'react';
import { useNavigate } from 'react-router-dom';
import { Hexagon, Lock, Mail, ArrowRight, Loader2, Info } from 'lucide-react';
import { USERS } from '../constants';
import { getUsers } from '../services/dataService';
export const Login: React.FC = () => {
const navigate = useNavigate();
@@ -10,22 +10,22 @@ export const Login: React.FC = () => {
const [password, setPassword] = useState('password');
const [error, setError] = useState('');
const handleLogin = (e: React.FormEvent) => {
const handleLogin = async (e: React.FormEvent) => {
e.preventDefault();
setIsLoading(true);
setError('');
// Simulate API call and validation
setTimeout(() => {
const user = USERS.find(u => u.email.toLowerCase() === email.toLowerCase());
try {
// Fetch all users to find match (simplified auth for demo)
const users = await getUsers('all');
const user = users.find(u => u.email.toLowerCase() === email.toLowerCase());
if (user) {
// Mock Login: Save to local storage
localStorage.setItem('ctms_user_id', user.id);
localStorage.setItem('ctms_tenant_id', user.tenant_id || '');
setIsLoading(false);
// Redirect based on role
if (user.role === 'super_admin') {
navigate('/super-admin');
} else {
@@ -33,9 +33,13 @@ export const Login: React.FC = () => {
}
} else {
setIsLoading(false);
setError('Usuário não encontrado. Tente lidya@fasto.com ou root@system.com');
setError('Usuário não encontrado.');
}
}, 1000);
} catch (err) {
console.error("Login error:", err);
setIsLoading(false);
setError('Erro ao conectar ao servidor.');
}
};
const fillCredentials = (type: 'admin' | 'super') => {

View File

@@ -1,24 +1,33 @@
import React, { useState, useEffect } from 'react';
import { Camera, Save, Mail, User as UserIcon, Building, Shield, Loader2, CheckCircle2 } from 'lucide-react';
import { USERS } from '../constants';
import { getUserById } from '../services/dataService';
import { User } from '../types';
export const UserProfile: React.FC = () => {
// Simulating logged-in user state
const [user, setUser] = useState<User | null>(null);
const [isLoading, setIsLoading] = useState(false);
const [isSuccess, setIsSuccess] = useState(false);
// Form State
const [name, setName] = useState('');
const [bio, setBio] = useState('');
useEffect(() => {
// Simulate fetching user data
const currentUser = USERS[0];
setUser(currentUser);
setName(currentUser.name);
setBio(currentUser.bio || '');
const fetchUser = async () => {
const storedId = localStorage.getItem('ctms_user_id');
if (storedId) {
try {
const fetchedUser = await getUserById(storedId);
if (fetchedUser) {
setUser(fetchedUser);
setName(fetchedUser.name);
setBio(fetchedUser.bio || '');
}
} catch (err) {
console.error("Error fetching profile:", err);
}
}
};
fetchUser();
}, []);
const handleSubmit = (e: React.FormEvent) => {