41 lines
1.6 KiB
JavaScript
41 lines
1.6 KiB
JavaScript
import User from '#models/user';
|
|
import env from '#start/env';
|
|
export default class AuthController {
|
|
async showLogin({ view }) {
|
|
return view.render('admin/login');
|
|
}
|
|
async login({ request, response, auth, session }) {
|
|
const { email, password } = request.only(['email', 'password']);
|
|
if (email === env.get('USER_LOGIN') && password === env.get('USER_PASSWORD')) {
|
|
let user = await User.findBy('email', email);
|
|
if (!user) {
|
|
user = await User.create({
|
|
email,
|
|
password,
|
|
fullName: 'Admin',
|
|
});
|
|
}
|
|
await auth.use('web').login(user);
|
|
return response.redirect('/admin');
|
|
}
|
|
try {
|
|
const user = await User.verifyCredentials(email, password);
|
|
await auth.use('web').login(user);
|
|
return response.redirect('/admin');
|
|
}
|
|
catch (error) {
|
|
const isInvalidCredentials = error && typeof error === 'object' && 'code' in error && error.code === 'E_INVALID_CREDENTIALS';
|
|
if (isInvalidCredentials) {
|
|
session.flashExcept(['_csrf', '_method', 'password']);
|
|
session.flashErrors({ error: 'Identifiants invalides. Vérifiez votre email et mot de passe.' });
|
|
return response.redirect().back();
|
|
}
|
|
throw error;
|
|
}
|
|
}
|
|
async logout({ response, auth }) {
|
|
await auth.use('web').logout();
|
|
return response.redirect('/admin/login');
|
|
}
|
|
}
|
|
//# sourceMappingURL=auth_controller.js.map
|