x1ongzhu 1 жил өмнө
parent
commit
d2b8a8083f

+ 16 - 1
app/Controllers/Http/UsersController.ts

@@ -1,5 +1,5 @@
 import type { HttpContextContract } from '@ioc:Adonis/Core/HttpContext'
-import User from 'App/Models/User'
+import User, { UserRoles } from 'App/Models/User'
 import PaginationService from 'App/Services/PaginationService'
 import { schema, rules } from '@ioc:Adonis/Core/Validator'
 import randomstring from 'randomstring'
@@ -20,6 +20,21 @@ export default class UsersController {
         return await User.create(request.all())
     }
 
+    public async newAdminUser({ request, bouncer }: HttpContextContract) {
+        await bouncer.authorize('admin')
+        const data = await request.validate({
+            schema: schema.create({
+                username: schema.string([]),
+                password: schema.string([]),
+                email: schema.string.optional([rules.email()])
+            })
+        })
+        return await User.create({
+            ...data,
+            role: UserRoles.Admin
+        })
+    }
+
     public async show({ params }: HttpContextContract) {
         return await User.findOrFail(params.id)
     }

+ 1 - 0
start/routes.ts

@@ -89,6 +89,7 @@ Route.group(() => {
             Route.get('my', 'UsersController.my')
             Route.get('admin/my', 'UsersController.myAdmin')
             Route.get('invited', 'UsersController.invited')
+            Route.post('newAdminUser', 'UsersController.newAdminUser')
         }).prefix('users')
         Route.resource('users', 'UsersController')
         Route.resource('userBalances', 'UserBalancesController').apiOnly()