Reorganize app workspaces and align Admin architecture
This commit is contained in:
@@ -0,0 +1,49 @@
|
||||
import Admin from '#base_modules/Admin/model/admin'
|
||||
import { HttpContext } from '@adonisjs/core/http'
|
||||
import hash from '@adonisjs/core/services/hash'
|
||||
import { authLoginValidator } from '#base_modules/Auth/validators/auth_login_validator'
|
||||
import db from '@adonisjs/lucid/services/db'
|
||||
|
||||
export default class AuthController {
|
||||
async login({ request, response }: HttpContext) {
|
||||
const { email, password } = await request.validateUsing(authLoginValidator)
|
||||
const admin = await Admin.findBy('email', email)
|
||||
if (!admin) {
|
||||
return response.unauthorized({
|
||||
message: 'Invalid credentials.',
|
||||
})
|
||||
}
|
||||
|
||||
const verified = await hash.verify(admin.password, password)
|
||||
if (!verified) {
|
||||
return response.unauthorized({
|
||||
message: 'Invalid credentials.',
|
||||
})
|
||||
}
|
||||
|
||||
const token = await Admin.accessTokens.create(admin)
|
||||
|
||||
return response.ok({
|
||||
type: 'bearer',
|
||||
token: token.value?.release(),
|
||||
user: admin,
|
||||
})
|
||||
}
|
||||
|
||||
async logout({ auth }: HttpContext) {
|
||||
await auth.use('api').invalidateToken()
|
||||
return { message: 'Logged out' }
|
||||
}
|
||||
|
||||
async user({ response, auth }: HttpContext) {
|
||||
const user = await auth.use('api').user
|
||||
if (!user) return response.unauthorized()
|
||||
await user.load('roles')
|
||||
const roles = user.roles.map((role) => role.id)
|
||||
const permissions = await db
|
||||
.from('role_permissions')
|
||||
.whereIn('role_id', roles)
|
||||
.select('permission_slug')
|
||||
return response.ok({ user, permissions: permissions.map((perm) => perm.permission_slug) })
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user