Reorganize app workspaces and align Admin architecture

This commit is contained in:
Igor Martyniuk
2026-07-17 13:46:21 +00:00
parent ba691d3a0c
commit 0ba01cd111
183 changed files with 3745 additions and 4354 deletions
@@ -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) })
}
}
+8
View File
@@ -0,0 +1,8 @@
import { middleware } from '#start/kernel'
import router from '@adonisjs/core/services/router'
const AuthController = () => import('#base_modules/Auth/controller/auth_controller')
router.post('/auth/login', [AuthController, 'login'])
router.post('/auth/logout', [AuthController, 'logout']).use([middleware.auth()])
router.get('/auth/user', [AuthController, 'user']).use([middleware.auth()])
@@ -0,0 +1,8 @@
import vine from '@vinejs/vine'
export const authLoginValidator = vine.compile(
vine.object({
email: vine.string().trim().email(),
password: vine.string().trim().minLength(8),
})
)