refactored routes naming

This commit is contained in:
Sergey Yarkov 2021-07-25 15:49:13 +03:00
parent e50700c2ab
commit 2c4e86de1e
3 changed files with 52 additions and 50 deletions

View File

@ -6,5 +6,5 @@
"jsxSingleQuote": true,
"arrowParens": "avoid",
"endOfLine": "auto",
"printWidth": 100
"printWidth": 120
}

View File

@ -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.
*

View File

@ -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');