From 097737a3b88277de126d8a241f5a0fb4c53a1605 Mon Sep 17 00:00:00 2001 From: Henrriky Date: Tue, 12 Mar 2024 17:11:26 -0300 Subject: [PATCH] feat: add check user right service --- .../UserServices/CheckUserRightService.ts | 33 +++++++++++++++++++ 1 file changed, 33 insertions(+) create mode 100644 backend/src/services/UserServices/CheckUserRightService.ts diff --git a/backend/src/services/UserServices/CheckUserRightService.ts b/backend/src/services/UserServices/CheckUserRightService.ts new file mode 100644 index 0000000..788d630 --- /dev/null +++ b/backend/src/services/UserServices/CheckUserRightService.ts @@ -0,0 +1,33 @@ +import * as Yup from "yup"; +import AppError from "../../errors/AppError"; +import ShowUserService from "./ShowUserService"; + +interface CheckUserRightServiceRequest { + userProfileToCompare: string; + userId: string | number; +} + +type CheckUserRightServiceResponse = boolean; + +const CheckUserRightService = async ({userProfileToCompare, userId}: CheckUserRightServiceRequest): Promise => { + try { + const user = await ShowUserService(userId); + const schema = Yup.object().shape({ + userId: Yup.string().required(), + userProfile: Yup.string().oneOf(['admin', 'user', 'supervisor', 'master']).required() + }); + try { + await schema.validate({ userId, userProfile: userProfileToCompare }); + } catch (err: any) { + throw new AppError(err.message); + } + + return (user.profile == userProfileToCompare) ? true : false + + } catch (error: any) { + console.error('===> Error on CheckUserRightService.ts file: \n', error) + throw new AppError(error.message); + } +}; + +export default CheckUserRightService;