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
+67
View File
@@ -0,0 +1,67 @@
import hash from '@adonisjs/core/services/hash'
import { compose } from '@adonisjs/core/helpers'
import { withAuthFinder } from '@adonisjs/auth/mixins/lucid'
import { DbAccessTokensProvider } from '@adonisjs/auth/access_tokens'
import { BaseModel, column, manyToMany } from '@adonisjs/lucid/orm'
import type { ManyToMany } from '@adonisjs/lucid/types/relations'
import { DateTime } from 'luxon'
import Role from '#base_modules/Role/model/role'
import Permission from '#base_modules/Permission/model/permission'
const AuthFinder = withAuthFinder(() => hash.use('scrypt'), {
uids: ['email'],
passwordColumnName: 'password',
})
const ComposedModel = compose(BaseModel, AuthFinder) as typeof BaseModel
export default class Admins extends ComposedModel {
static searchable = {
string: ['email', 'first_name', 'last_name'],
number: ['id'],
}
@column({ isPrimary: true, columnName: 'id' })
declare id: number
@column({ columnName: 'first_name' })
declare firstName: string | null
@column({ columnName: 'last_name' })
declare lastName: string | null
@column({ columnName: 'email' })
declare email: string
@column({ columnName: 'status' })
declare status: 'active' | 'inactive'
@column({ serializeAs: null, columnName: 'password' })
declare password: string
@column.dateTime({ autoCreate: true, columnName: 'created_at' })
declare createdAt: DateTime
@column.dateTime({ autoCreate: true, autoUpdate: true, columnName: 'updated_at' })
declare updatedAt: DateTime | null
@manyToMany(() => Role, {
pivotTable: 'admin_roles',
pivotForeignKey: 'admin_id',
pivotRelatedForeignKey: 'role_id',
})
declare roles: ManyToMany<typeof Role>
declare permissions: Permission[]
static accessTokens = DbAccessTokensProvider.forModel(Admins)
async loadPermissions() {
this.permissions = await Permission.query()
.join('role_permissions', 'permissions.id', 'role_permissions.permission_id')
.join('admin_roles', 'role_permissions.role_id', 'admin_roles.role_id')
.where('admin_roles.admin_id', this.id)
.exec()
return this
}
}