import { HttpContextContract } from '@ioc:Adonis/Core/HttpContext' import Logger from '@ioc:Adonis/Core/Logger' type AuthSuccResult = { notification: { type: string, text: string } user: string, role: string } type AuthErrResult = { notification: { text: string, type: string } } export default class AuthController { public async login({auth, request, response}: HttpContextContract) { const username = request.body().username const password = request.body().password const rememberMe = request.body().rememberMe ?? false try { await auth.attempt(username, password, rememberMe) const result : AuthSuccResult = { notification: { type: 'success', text: 'Login successful!' }, user: auth.user?.username ?? '', role: auth.user?.role ?? '' } return response.ok(result) } catch (error) { const result : AuthErrResult = { notification: { type: 'danger', text: error.message } } return response.forbidden(result) } } public async logout({auth, response}: HttpContextContract) { await auth.logout() return response.ok('Logged out successfully') } }