Add initial project files
This commit is contained in:
+9
@@ -0,0 +1,9 @@
|
||||
import { HttpContext } from '@adonisjs/core/http'
|
||||
|
||||
import { getAllPermissions } from '#services/permission_service'
|
||||
|
||||
export default class PermissionsController {
|
||||
public async index({ response }: HttpContext) {
|
||||
return response.ok(await getAllPermissions())
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,14 @@
|
||||
import { BaseModel, column } from '@adonisjs/lucid/orm'
|
||||
import { DateTime } from 'luxon'
|
||||
|
||||
export default class Permission extends BaseModel {
|
||||
static searchable = {
|
||||
string: ['name', 'slug'],
|
||||
number: ['id'],
|
||||
}
|
||||
@column({ isPrimary: true }) declare id: number
|
||||
@column() declare name: string
|
||||
@column() declare slug: string
|
||||
@column.dateTime({ columnName: 'created_at' }) declare createdAt: DateTime | null
|
||||
@column.dateTime({ columnName: 'updated_at' }) declare updatedAt: DateTime | null
|
||||
}
|
||||
@@ -0,0 +1,36 @@
|
||||
import { BasePolicy } from '@adonisjs/bouncer'
|
||||
import type { AuthorizerResponse } from '@adonisjs/bouncer/types'
|
||||
import Admins from '#base_modules/Admin/model/admin'
|
||||
import { getAdminPermissionSlugs } from '#services/permission_service'
|
||||
|
||||
export default class PermissionPolicy extends BasePolicy {
|
||||
async permissionList(user: Admins): Promise<AuthorizerResponse> {
|
||||
if (!user) return false
|
||||
const perms = await getAdminPermissionSlugs(user)
|
||||
return perms.has('permission.view')
|
||||
}
|
||||
|
||||
async viewPermission(user: Admins): Promise<AuthorizerResponse> {
|
||||
if (!user) return false
|
||||
const perms = await getAdminPermissionSlugs(user)
|
||||
return perms.has('permission.view')
|
||||
}
|
||||
|
||||
async createPermission(user: Admins): Promise<AuthorizerResponse> {
|
||||
if (!user) return false
|
||||
const perms = await getAdminPermissionSlugs(user)
|
||||
return perms.has('permission.create')
|
||||
}
|
||||
|
||||
async updatePermission(user: Admins): Promise<AuthorizerResponse> {
|
||||
if (!user) return false
|
||||
const perms = await getAdminPermissionSlugs(user)
|
||||
return perms.has('permission.update')
|
||||
}
|
||||
|
||||
async deletePermission(user: Admins): Promise<AuthorizerResponse> {
|
||||
if (!user) return false
|
||||
const perms = await getAdminPermissionSlugs(user)
|
||||
return perms.has('permission.delete')
|
||||
}
|
||||
}
|
||||
+7
@@ -0,0 +1,7 @@
|
||||
import router from '@adonisjs/core/services/router'
|
||||
import { middleware } from '#start/kernel'
|
||||
|
||||
const permissionController = () =>
|
||||
import('#base_modules/Permission/controller/permission_controller')
|
||||
|
||||
router.resource('/permission', permissionController).apiOnly().use('*', [middleware.auth()]) //.use(['store', 'update', 'destroy'], [middleware.auth()])
|
||||
+9
@@ -0,0 +1,9 @@
|
||||
import vine from '@vinejs/vine'
|
||||
|
||||
export const createPermissionValidator = vine.compile(
|
||||
vine.object({
|
||||
id: vine.number().optional(),
|
||||
name: vine.string().trim(),
|
||||
slug: vine.string().trim(),
|
||||
})
|
||||
)
|
||||
+9
@@ -0,0 +1,9 @@
|
||||
import vine from '@vinejs/vine'
|
||||
|
||||
export const updatePermissionValidator = vine.compile(
|
||||
vine.object({
|
||||
id: vine.number().optional(),
|
||||
name: vine.string().trim(),
|
||||
slug: vine.string().trim(),
|
||||
})
|
||||
)
|
||||
Reference in New Issue
Block a user