This commit is contained in:
GokaPek 2024-01-07 20:10:38 +04:00
parent 493d7579b1
commit 933c8157cf
3 changed files with 21 additions and 18 deletions

View File

@ -5,20 +5,22 @@ class AuthService extends ApiService {
super('http://localhost:8081/users'); // Указываем базовый URL для аутентификации super('http://localhost:8081/users'); // Указываем базовый URL для аутентификации
} }
async registerUser(userInfo) {
return this.create(userInfo);
}
async loginUser(credentials) { async loginUser(credentials) {
const users = await this.getAll(); // Получаем всех пользователей const users = await this.getAll();
// eslint-disable-next-line max-len // eslint-disable-next-line max-len
const user = users.find((u) => u.email === credentials.email && u.password === credentials.password && u.name === credentials.name); const user = users.find((u) => u.email === credentials.email && u.password === credentials.password);
if (!user) { if (!user) {
throw new Error('Invalid email or password'); throw new Error('Invalid email or password');
} }
return user; return user;
} }
async registerUser(userData) {
// Вероятно вы хотите здесь сохранять пользователя в базе данных?
const registeredUser = await this.create(userData);
return registeredUser;
}
async setRole(userId, role) { async setRole(userId, role) {
return this.update(userId, { role }); return this.update(userId, { role });
} }

View File

@ -8,9 +8,10 @@ const initialState = {
const AuthReducer = (state, action) => { const AuthReducer = (state, action) => {
switch (action.type) { switch (action.type) {
case 'LOGIN': case 'LOGIN':
case 'REGISTER':
return { return {
...state, ...state,
user: action.payload, // Предполагается, что payload содержит данные пользователя. user: action.payload,
}; };
case 'LOGOUT': case 'LOGOUT':
return { return {

View File

@ -15,31 +15,31 @@ const LoginForm = () => {
const handleSubmit = async (e) => { const handleSubmit = async (e) => {
e.preventDefault(); e.preventDefault();
const { user, token } = await AuthService.loginUser(credentials); try {
localStorage.setItem('auth_token', token); // Сохраняем токен в localStorage const user = await AuthService.loginUser(credentials);
dispatch({ dispatch({
type: 'LOGIN', type: 'LOGIN',
payload: { user, token }, // Предполагается, что payload содержит объект с user и token payload: user,
}); });
} catch (error) {
console.error('Login error', error);
}
}; };
const handleRegister = async (e) => { const handleRegister = async (e) => {
e.preventDefault(); e.preventDefault();
try { try {
const { user, token } = await AuthService.registerUser({ ...credentials, role: 'user' }); const user = await AuthService.registerUser({ ...credentials, role: 'user' });
localStorage.setItem('auth_token', token);
dispatch({ dispatch({
type: 'REGISTER', type: 'REGISTER',
payload: { user, token }, // Предполагается, что payload содержит объект с user и token payload: user,
}); });
} catch (error) { } catch (error) {
console.error('Register error', error); console.error('Register error', error);
// Обработать ошибки регистрации
} }
}; };
const handleLogout = () => { const handleLogout = () => {
localStorage.removeItem('auth_token');
dispatch({ type: 'LOGOUT' }); dispatch({ type: 'LOGOUT' });
}; };