feat: added convertor service

This commit is contained in:
=
2025-10-10 00:09:48 +05:30
parent 9d204a66fd
commit fe1bc168f6
4 changed files with 30 additions and 5 deletions
+2 -1
View File
@@ -1728,7 +1728,8 @@ export const registerRoutes = async (
const convertorService = convertorServiceFactory({ const convertorService = convertorServiceFactory({
additionalPrivilegeDAL, additionalPrivilegeDAL,
membershipDAL, membershipDAL,
projectDAL projectDAL,
groupDAL
}); });
const dynamicSecretProviders = buildDynamicSecretProviders({ const dynamicSecretProviders = buildDynamicSecretProviders({
@@ -15,6 +15,7 @@ import { ms } from "@app/lib/ms";
import { readLimit, writeLimit } from "@app/server/config/rateLimiter"; import { readLimit, writeLimit } from "@app/server/config/rateLimiter";
import { verifyAuth } from "@app/server/plugins/auth/verify-auth"; import { verifyAuth } from "@app/server/plugins/auth/verify-auth";
import { AuthMode } from "@app/services/auth/auth-type"; import { AuthMode } from "@app/services/auth/auth-type";
import { isUuidV4 } from "@app/lib/validator";
export const registerGroupProjectRouter = async (server: FastifyZodProvider) => { export const registerGroupProjectRouter = async (server: FastifyZodProvider) => {
server.route({ server.route({
@@ -74,10 +75,16 @@ export const registerGroupProjectRouter = async (server: FastifyZodProvider) =>
} }
}, },
handler: async (req) => { handler: async (req) => {
let groupId = req.params.groupIdOrName;
if (!isUuidV4(req.params.groupIdOrName)) {
const groupDetails = await server.services.convertor.getGroupIdFromName(groupId, req.permission.orgId);
groupId = groupDetails.groupId;
}
const { membership: groupMembership } = await server.services.membershipGroup.createMembership({ const { membership: groupMembership } = await server.services.membershipGroup.createMembership({
permission: req.permission, permission: req.permission,
data: { data: {
groupId: req.params.groupIdOrName, groupId,
roles: req.body.roles || [{ role: req.body.role, isTemporary: false }] roles: req.body.roles || [{ role: req.body.role, isTemporary: false }]
}, },
scopeData: { scopeData: {
@@ -15,6 +15,7 @@ import { ms } from "@app/lib/ms";
import { readLimit, writeLimit } from "@app/server/config/rateLimiter"; import { readLimit, writeLimit } from "@app/server/config/rateLimiter";
import { verifyAuth } from "@app/server/plugins/auth/verify-auth"; import { verifyAuth } from "@app/server/plugins/auth/verify-auth";
import { AuthMode } from "@app/services/auth/auth-type"; import { AuthMode } from "@app/services/auth/auth-type";
import { isUuidV4 } from "@app/lib/validator";
export const registerDeprecatedGroupProjectRouter = async (server: FastifyZodProvider) => { export const registerDeprecatedGroupProjectRouter = async (server: FastifyZodProvider) => {
server.route({ server.route({
@@ -74,10 +75,16 @@ export const registerDeprecatedGroupProjectRouter = async (server: FastifyZodPro
} }
}, },
handler: async (req) => { handler: async (req) => {
let groupId = req.params.groupIdOrName;
if (!isUuidV4(req.params.groupIdOrName)) {
const groupDetails = await server.services.convertor.getGroupIdFromName(groupId, req.permission.orgId);
groupId = groupDetails.groupId;
}
const { membership: groupMembership } = await server.services.membershipGroup.createMembership({ const { membership: groupMembership } = await server.services.membershipGroup.createMembership({
permission: req.permission, permission: req.permission,
data: { data: {
groupId: req.params.groupIdOrName, groupId,
roles: req.body.roles || [{ role: req.body.role, isTemporary: false }] roles: req.body.roles || [{ role: req.body.role, isTemporary: false }]
}, },
scopeData: { scopeData: {
@@ -4,10 +4,12 @@ import { NotFoundError } from "@app/lib/errors";
import { TAdditionalPrivilegeDALFactory } from "../additional-privilege/additional-privilege-dal"; import { TAdditionalPrivilegeDALFactory } from "../additional-privilege/additional-privilege-dal";
import { TMembershipDALFactory } from "../membership/membership-dal"; import { TMembershipDALFactory } from "../membership/membership-dal";
import { TProjectDALFactory } from "../project/project-dal"; import { TProjectDALFactory } from "../project/project-dal";
import { TGroupDALFactory } from "@app/ee/services/group/group-dal";
type TConvertorServiceFactoryDep = { type TConvertorServiceFactoryDep = {
projectDAL: Pick<TProjectDALFactory, "findOne">; projectDAL: Pick<TProjectDALFactory, "findOne">;
membershipDAL: Pick<TMembershipDALFactory, "findOne">; membershipDAL: Pick<TMembershipDALFactory, "findOne">;
groupDAL: Pick<TGroupDALFactory, "findOne">;
additionalPrivilegeDAL: Pick<TAdditionalPrivilegeDALFactory, "findOne">; additionalPrivilegeDAL: Pick<TAdditionalPrivilegeDALFactory, "findOne">;
}; };
@@ -16,7 +18,8 @@ export type TConvertorServiceFactory = ReturnType<typeof convertorServiceFactory
export const convertorServiceFactory = ({ export const convertorServiceFactory = ({
projectDAL, projectDAL,
membershipDAL, membershipDAL,
additionalPrivilegeDAL additionalPrivilegeDAL,
groupDAL
}: TConvertorServiceFactoryDep) => { }: TConvertorServiceFactoryDep) => {
const projectSlugToId = async (dto: { slug: string; orgId: string }) => { const projectSlugToId = async (dto: { slug: string; orgId: string }) => {
const project = await projectDAL.findOne({ const project = await projectDAL.findOne({
@@ -108,6 +111,12 @@ export const convertorServiceFactory = ({
return { privilegeId: privilege.id, privilege }; return { privilegeId: privilege.id, privilege };
}; };
const getGroupIdFromName = async (name: string, orgId: string) => {
const group = await groupDAL.findOne({ orgId, name });
if (!group) throw new NotFoundError({ message: `Failed to find group with name ${name}` });
return { groupId: group.id, group };
};
return { return {
projectSlugToId, projectSlugToId,
userMembershipIdToUserId, userMembershipIdToUserId,
@@ -115,6 +124,7 @@ export const convertorServiceFactory = ({
identityMembershipIdToIdentityId, identityMembershipIdToIdentityId,
additionalPrivilegeIdToDoc, additionalPrivilegeIdToDoc,
additionalPrivilegeNameToDoc, additionalPrivilegeNameToDoc,
identityIdToMembershipId identityIdToMembershipId,
getGroupIdFromName
}; };
}; };