This commit is contained in:
2025-11-14 17:32:37 +05:30
2 changed files with 101 additions and 0 deletions

View File

@@ -276,6 +276,22 @@ functions:
path: /minglaradmin/update-profile
method: patch
prepopulateTeammate:
handler: src/modules/minglaradmin/handlers/prepopulateTeammate.handler
package:
patterns:
- "src/modules/minglaradmin/**"
- "common/**"
- "src/common/**"
- "node_modules/@prisma/client/**"
- "node_modules/.prisma/**"
events:
- httpApi:
path: /minglaradmin/prepopulate-Roles
method: get
addCompanyDetails:
handler: src/modules/host/handlers/addCompanyDetails.handler
package:

View File

@@ -0,0 +1,85 @@
import {
APIGatewayProxyEvent,
APIGatewayProxyResult,
Context,
} from 'aws-lambda';
import { safeHandler } from '../../../common/utils/handlers/safeHandler';
import { PrismaService } from '../../../common/database/prisma.service';
import ApiError from '../../../common/utils/helper/ApiError';
import { ROLE } from '../../../common/utils/constants/common.constant';
import { verifyMinglarAdminToken } from '../../../common/middlewares/jwt/authForMinglarAdmin';
const prismaService = new PrismaService();
/**
* Get prepopulated roles for Coadmin and Account_manager
* Returns an array of role objects with their IDs
* Only accessible by MINGLAR_ADMIN (role_xid = 1)
*/
export const handler = safeHandler(
async (
event: APIGatewayProxyEvent,
context?: Context,
): Promise<APIGatewayProxyResult> => {
const token =
event.headers['x-auth-token'] || event.headers['X-Auth-Token'];
if (!token) {
throw new ApiError(
401,
'This is a protected route. Please provide a valid token.',
);
}
// Verify token and get user info
const userInfo = await verifyMinglarAdminToken(token);
console.log('User Info:', userInfo);
// Check if user has Minglar Admin role (role_xid = 1)
const user = await prismaService.user.findUnique({
where: { id: userInfo.id },
select: { roleXid: true },
});
if (!user || user.roleXid !== ROLE.MINGLAR_ADMIN) {
throw new ApiError(
403,
'Access denied. Only Minglar Admin can access this route.',
);
}
// Fetch Coadmin and Account_Manager roles
const roles = await prismaService.roles.findMany({
where: {
id: {
in: [ROLE.CO_ADMIN, ROLE.ACCOUNT_MANAGER],
},
isActive: true,
deletedAt: null,
},
select: {
id: true,
roleName: true,
},
orderBy: {
id: 'asc',
},
});
if (!roles || roles.length === 0) {
throw new ApiError(404, 'No roles found for Coadmin or Account_manager');
}
return {
statusCode: 200,
headers: {
'Content-Type': 'application/json',
'Access-Control-Allow-Origin': '*',
},
body: JSON.stringify({
success: true,
message: 'Roles retrieved successfully',
data: roles,
count: roles.length,
}),
};
},
);