Skip to content

Commit

Permalink
refactor(api): move /api/admin/users/{id} route and tests
Browse files Browse the repository at this point in the history
in src/identity-access-management
  • Loading branch information
er-lim committed Nov 4, 2024
1 parent 9e6611e commit 564cbb8
Show file tree
Hide file tree
Showing 7 changed files with 234 additions and 260 deletions.
32 changes: 0 additions & 32 deletions api/lib/application/users/index.js
Original file line number Diff line number Diff line change
@@ -1,43 +1,11 @@
import Joi from 'joi';

import { BadRequestError, sendJsonApiError } from '../../../src/shared/application/http-errors.js';
import { securityPreHandlers } from '../../../src/shared/application/security-pre-handlers.js';
import { identifiersType } from '../../../src/shared/domain/types/identifiers-type.js';
import { userController } from './user-controller.js';

const register = async function (server) {
const adminRoutes = [
{
method: 'GET',
path: '/api/admin/users/{id}',
config: {
validate: {
params: Joi.object({
id: identifiersType.userId,
}),
failAction: (request, h) => {
return sendJsonApiError(new BadRequestError("L'identifiant de l'utilisateur n'est pas au bon format."), h);
},
},
pre: [
{
method: (request, h) =>
securityPreHandlers.hasAtLeastOneAccessOf([
securityPreHandlers.checkAdminMemberHasRoleSuperAdmin,
securityPreHandlers.checkAdminMemberHasRoleCertif,
securityPreHandlers.checkAdminMemberHasRoleSupport,
securityPreHandlers.checkAdminMemberHasRoleMetier,
])(request, h),
},
],
handler: userController.getUserDetailsForAdmin,
notes: [
'- **Cette route est restreinte aux utilisateurs administrateurs**\n' +
"- Elle permet de récupérer le détail d'un utilisateur dans un contexte d'administration",
],
tags: ['api', 'admin', 'user'],
},
},
{
method: 'GET',
path: '/api/admin/users/{id}/organizations',
Expand Down
Original file line number Diff line number Diff line change
@@ -1,5 +1,7 @@
import Joi from 'joi';

import { userController } from '../../../../lib/application/users/user-controller.js';
import { BadRequestError, sendJsonApiError } from '../../../shared/application/http-errors.js';
import { securityPreHandlers } from '../../../shared/application/security-pre-handlers.js';
import { SUPPORTED_LOCALES } from '../../../shared/domain/constants.js';
import { AVAILABLE_LANGUAGES } from '../../../shared/domain/services/language-service.js';
Expand Down Expand Up @@ -120,4 +122,35 @@ export const userAdminRoutes = [
tags: ['api', 'admin', 'identity-access-management'],
},
},
{
method: 'GET',
path: '/api/admin/users/{id}',
config: {
validate: {
params: Joi.object({
id: identifiersType.userId,
}),
failAction: (request, h) => {
return sendJsonApiError(new BadRequestError("L'identifiant de l'utilisateur n'est pas au bon format."), h);
},
},
pre: [
{
method: (request, h) =>
securityPreHandlers.hasAtLeastOneAccessOf([
securityPreHandlers.checkAdminMemberHasRoleSuperAdmin,
securityPreHandlers.checkAdminMemberHasRoleCertif,
securityPreHandlers.checkAdminMemberHasRoleSupport,
securityPreHandlers.checkAdminMemberHasRoleMetier,
])(request, h),
},
],
handler: (request, h) => userController.getUserDetailsForAdmin(request, h),
notes: [
'- **Cette route est restreinte aux utilisateurs administrateurs**\n' +
"- Elle permet de récupérer le détail d'un utilisateur dans un contexte d'administration",
],
tags: ['api', 'admin', 'identity-access-management', 'user'],
},
},
];

This file was deleted.

Loading

0 comments on commit 564cbb8

Please sign in to comment.