diff --git a/.prettierrc.json b/.prettierrc.json index 6c400d5..d7e0a43 100644 --- a/.prettierrc.json +++ b/.prettierrc.json @@ -6,5 +6,5 @@ "jsxSingleQuote": true, "arrowParens": "avoid", "endOfLine": "auto", - "printWidth": 100 + "printWidth": 120 } diff --git a/app/Controllers/Http/UsersController.ts b/app/Controllers/Http/UsersController.ts index d58a1e8..08e62e6 100644 --- a/app/Controllers/Http/UsersController.ts +++ b/app/Controllers/Http/UsersController.ts @@ -21,44 +21,6 @@ export default class UsersController { this.contact = Contact; } - /** - * Attach array of roles to user - * POST /users/:id/attach_roles - */ - public async attach_roles({ request, response, params }: HttpContextContract) { - await request.validate(AddRoleToUserValidator); - - const input: string[] | undefined = request.input('roles'); - const user = await this.user.query().preload('roles').where('id', params.id).firstOrFail(); - const roles = await this.findRolesBySlug(input); - - await this.user.attachRoles(user, roles); - - return response.ok({ - message: 'Roles attached', - data: user.roles, - }); - } - - /** - * Detach array of roles from user - * DELETE /users/:id/detach_roles - */ - public async detach_roles({ request, response, params }: HttpContextContract) { - await request.validate(DelRoleFromUserValidator); - - const input: string[] | undefined = request.input('roles'); - const user = await this.user.query().preload('roles').where('id', params.id).firstOrFail(); - const roles = await this.findRolesBySlug(input); - - await this.user.detachRoles(user, roles); - - return response.ok({ - message: 'Roles detached', - data: user.roles, - }); - } - /** * Shows user info of the access token resource owner. * GET /users/me @@ -182,6 +144,44 @@ export default class UsersController { }); } + /** + * Attach array of roles to user + * POST /users/:id/attach_roles + */ + public async attachRoles({ request, response, params }: HttpContextContract) { + await request.validate(AddRoleToUserValidator); + + const input: string[] | undefined = request.input('roles'); + const user = await this.user.query().preload('roles').where('id', params.id).firstOrFail(); + const roles = await this.findRolesBySlug(input); + + await this.user.attachRoles(user, roles); + + return response.ok({ + message: 'Roles attached', + data: user.roles, + }); + } + + /** + * Detach array of roles from user + * DELETE /users/:id/detach_roles + */ + public async detachRoles({ request, response, params }: HttpContextContract) { + await request.validate(DelRoleFromUserValidator); + + const input: string[] | undefined = request.input('roles'); + const user = await this.user.query().preload('roles').where('id', params.id).firstOrFail(); + const roles = await this.findRolesBySlug(input); + + await this.user.detachRoles(user, roles); + + return response.ok({ + message: 'Roles detached', + data: user.roles, + }); + } + /** * Finds roles by input value and throw error if role does not exist. * diff --git a/start/routes.ts b/start/routes.ts index 97e1eb0..a3e91fc 100644 --- a/start/routes.ts +++ b/start/routes.ts @@ -24,21 +24,23 @@ Route.get('/', () => `Educt Backend API.`); Route.group(() => { /* Auth controller */ - Route.post('login', 'AuthController.login'); - Route.post('logout', 'AuthController.logout').middleware('auth'); + Route.post('login', 'AuthController.login').as('login'); + Route.post('logout', 'AuthController.logout').middleware('auth').as('logout'); /* API */ Route.group(() => { /** * Users controller */ - Route.get('users/me', 'UsersController.me').middleware('role:admin,teacher,student'); - Route.get('users', 'UsersController.index').middleware('role:admin,teacher,student'); - Route.get('users/:id', 'UsersController.show').middleware('role:admin,teacher,student'); - Route.post('users', 'UsersController.store').middleware('role:admin'); - Route.patch('users/:id', 'UsersController.update').middleware('role:admin'); - Route.delete('users/:id', 'UsersController.destroy').middleware('role:admin'); - Route.post('users/:id/attach_roles', 'UsersController.attach_roles').middleware('role:admin'); - Route.delete('users/:id/detach_roles', 'UsersController.detach_roles').middleware('role:admin'); + Route.get('users', 'UsersController.index').middleware('role:admin,teacher,student').as('showAllUsers'); + Route.get('users/me', 'UsersController.me').middleware('role:admin,teacher,student').as('showMe'); + Route.get('users/:id', 'UsersController.show').middleware('role:admin,teacher,student').as('showUserById'); + Route.post('users', 'UsersController.store').middleware('role:admin').as('createUser'); + Route.patch('users/:id', 'UsersController.update').middleware('role:admin').as('updateUser'); + Route.delete('users/:id', 'UsersController.destroy').middleware('role:admin').as('deleteUser'); + Route.post('users/:id/attach-roles', 'UsersController.attachRoles').middleware('role:admin').as('attachUserRole'); + Route.delete('users/:id/detach-roles', 'UsersController.detachRoles').middleware('role:admin').as('detachUserRole'); }).middleware('auth'); -}).prefix('api'); +}) + .prefix('/api/v1') + .as('api');