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 для аутентификации
}
async registerUser(userInfo) {
return this.create(userInfo);
}
async loginUser(credentials) {
const users = await this.getAll(); // Получаем всех пользователей
const users = await this.getAll();
// 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) {
throw new Error('Invalid email or password');
}
return user;
}
async registerUser(userData) {
// Вероятно вы хотите здесь сохранять пользователя в базе данных?
const registeredUser = await this.create(userData);
return registeredUser;
}
async setRole(userId, role) {
return this.update(userId, { role });
}

View File

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

View File

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