diff --git a/serverless/functions/host.yml b/serverless/functions/host.yml index 8f6f46b..c32e498 100644 --- a/serverless/functions/host.yml +++ b/serverless/functions/host.yml @@ -372,6 +372,22 @@ getPermissionMasters: path: /settings/permission-masters method: get +getHostMemberRoles: + handler: src/modules/host/handlers/settings/getMemberRoles.handler + memorySize: 384 + package: + patterns: + - 'src/modules/host/handlers/settings/**' + - 'src/modules/host/services/**' + - ${file(./serverless/patterns/base.yml):pattern1} + - ${file(./serverless/patterns/base.yml):pattern2} + - ${file(./serverless/patterns/base.yml):pattern3} + - ${file(./serverless/patterns/base.yml):pattern4} + events: + - httpApi: + path: /settings/member-roles + method: get + # Functions with S3/AWS SDK dependencies submitCompanyDetails: handler: src/modules/host/handlers/Host_Admin/onboarding/submitCompanyDetails.handler diff --git a/src/modules/host/handlers/settings/getMemberRoles.ts b/src/modules/host/handlers/settings/getMemberRoles.ts new file mode 100644 index 0000000..0f61e58 --- /dev/null +++ b/src/modules/host/handlers/settings/getMemberRoles.ts @@ -0,0 +1,59 @@ +import { + APIGatewayProxyEvent, + APIGatewayProxyResult, + Context, +} from 'aws-lambda'; + +import { prismaClient } from '../../../../common/database/prisma.lambda.service'; +import { verifyHostToken } from '../../../../common/middlewares/jwt/authForHost'; +import { ROLE } from '../../../../common/utils/constants/common.constant'; +import { safeHandler } from '../../../../common/utils/handlers/safeHandler'; +import ApiError from '../../../../common/utils/helper/ApiError'; + +export const handler = safeHandler(async ( + event: APIGatewayProxyEvent, + context?: Context, +): Promise => { + const token = event.headers['x-auth-token'] || event.headers['X-Auth-Token']; + + if (!token) { + throw new ApiError( + 400, + 'This is a protected route. Please provide a valid token.', + ); + } + + await verifyHostToken(token); + + const roles = await prismaClient.roles.findMany({ + where: { + id: { + in: [ROLE.CO_ADMIN, ROLE.OPERATOR], + }, + isActive: true, + deletedAt: null, + }, + select: { + id: true, + roleName: true, + }, + orderBy: { + id: 'asc', + }, + }); + + return { + statusCode: 200, + headers: { + 'Content-Type': 'application/json', + 'Access-Control-Allow-Origin': '*', + }, + body: JSON.stringify({ + success: true, + message: 'Host member roles fetched successfully', + data: { + roles, + }, + }), + }; +});