mirror of
https://github.com/awatertrevi/infisical.git
synced 2026-10-08 02:27:37 +00:00
feat: updated code to auth field in permission for identity
This commit is contained in:
@@ -131,12 +131,12 @@ function validateOrgSSO(actorAuthMethod: ActorAuthMethod, isOrgSsoEnforced: TOrg
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
const escapeHandlebarsMissingMetadata = (obj: Record<string, string>) => {
|
const escapeHandlebarsMissingDict = (obj: Record<string, string>, key = "identity.metadata") => {
|
||||||
const handler = {
|
const handler = {
|
||||||
get(target: Record<string, string>, prop: string) {
|
get(target: Record<string, string>, prop: string) {
|
||||||
if (!(prop in target)) {
|
if (!Object.hasOwn(target, prop)) {
|
||||||
// eslint-disable-next-line no-param-reassign
|
// eslint-disable-next-line no-param-reassign
|
||||||
target[prop] = `{{identity.metadata.${prop}}}`; // Add missing key as an "own" property
|
target[prop] = `{{${key}.${prop}}}`; // Add missing key as an "own" property
|
||||||
}
|
}
|
||||||
return target[prop];
|
return target[prop];
|
||||||
}
|
}
|
||||||
@@ -145,4 +145,4 @@ const escapeHandlebarsMissingMetadata = (obj: Record<string, string>) => {
|
|||||||
return new Proxy(obj, handler);
|
return new Proxy(obj, handler);
|
||||||
};
|
};
|
||||||
|
|
||||||
export { escapeHandlebarsMissingMetadata, isAuthMethodSaml, validateOrgSSO };
|
export { escapeHandlebarsMissingDict, isAuthMethodSaml, validateOrgSSO };
|
||||||
|
|||||||
@@ -23,7 +23,7 @@ import { TServiceTokenDALFactory } from "@app/services/service-token/service-tok
|
|||||||
|
|
||||||
import { orgAdminPermissions, orgMemberPermissions, orgNoAccessPermissions, OrgPermissionSet } from "./org-permission";
|
import { orgAdminPermissions, orgMemberPermissions, orgNoAccessPermissions, OrgPermissionSet } from "./org-permission";
|
||||||
import { TPermissionDALFactory } from "./permission-dal";
|
import { TPermissionDALFactory } from "./permission-dal";
|
||||||
import { escapeHandlebarsMissingMetadata, validateOrgSSO } from "./permission-fns";
|
import { escapeHandlebarsMissingDict, validateOrgSSO } from "./permission-fns";
|
||||||
import {
|
import {
|
||||||
TBuildOrgPermissionDTO,
|
TBuildOrgPermissionDTO,
|
||||||
TBuildProjectPermissionDTO,
|
TBuildProjectPermissionDTO,
|
||||||
@@ -244,20 +244,21 @@ export const permissionServiceFactory = ({
|
|||||||
|
|
||||||
const rules = buildProjectPermissionRules(rolePermissions.concat(additionalPrivileges));
|
const rules = buildProjectPermissionRules(rolePermissions.concat(additionalPrivileges));
|
||||||
const templatedRules = handlebars.compile(JSON.stringify(rules), { data: false });
|
const templatedRules = handlebars.compile(JSON.stringify(rules), { data: false });
|
||||||
const metadataKeyValuePair = escapeHandlebarsMissingMetadata(
|
const metadataKeyValuePair = escapeHandlebarsMissingDict(
|
||||||
objectify(
|
objectify(
|
||||||
userProjectPermission.metadata,
|
userProjectPermission.metadata,
|
||||||
(i) => i.key,
|
(i) => i.key,
|
||||||
(i) => i.value
|
(i) => i.value
|
||||||
)
|
)
|
||||||
);
|
);
|
||||||
|
const templateValue = {
|
||||||
|
id: userProjectPermission.userId,
|
||||||
|
username: userProjectPermission.username,
|
||||||
|
metadata: metadataKeyValuePair
|
||||||
|
};
|
||||||
const interpolateRules = templatedRules(
|
const interpolateRules = templatedRules(
|
||||||
{
|
{
|
||||||
identity: {
|
identity: templateValue
|
||||||
id: userProjectPermission.userId,
|
|
||||||
username: userProjectPermission.username,
|
|
||||||
metadata: metadataKeyValuePair
|
|
||||||
}
|
|
||||||
},
|
},
|
||||||
{ data: false }
|
{ data: false }
|
||||||
);
|
);
|
||||||
@@ -318,24 +319,26 @@ export const permissionServiceFactory = ({
|
|||||||
|
|
||||||
const rules = buildProjectPermissionRules(rolePermissions.concat(additionalPrivileges));
|
const rules = buildProjectPermissionRules(rolePermissions.concat(additionalPrivileges));
|
||||||
const templatedRules = handlebars.compile(JSON.stringify(rules), { data: false });
|
const templatedRules = handlebars.compile(JSON.stringify(rules), { data: false });
|
||||||
const identityAuthInfo = requestContext.get("identityAuthInfo");
|
const unescapedIdentityAuthInfo = requestContext.get("identityAuthInfo");
|
||||||
const unescapedMetadata = objectify(
|
const unescapedMetadata = objectify(
|
||||||
identityProjectPermission.metadata,
|
identityProjectPermission.metadata,
|
||||||
(i) => i.key,
|
(i) => i.key,
|
||||||
(i) => i.value
|
(i) => i.value
|
||||||
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
);
|
||||||
) as Record<string, any>;
|
const identityAuthInfo =
|
||||||
if (identityAuthInfo?.identityId === identityId && identityAuthInfo) {
|
unescapedIdentityAuthInfo?.identityId === identityId && unescapedIdentityAuthInfo
|
||||||
unescapedMetadata.auth = identityAuthInfo;
|
? escapeHandlebarsMissingDict(unescapedIdentityAuthInfo as never, "identity.auth")
|
||||||
}
|
: {};
|
||||||
const metadataKeyValuePair = escapeHandlebarsMissingMetadata(unescapedMetadata);
|
const metadataKeyValuePair = escapeHandlebarsMissingDict(unescapedMetadata);
|
||||||
|
const templateValue = {
|
||||||
|
id: identityProjectPermission.identityId,
|
||||||
|
username: identityProjectPermission.username,
|
||||||
|
metadata: metadataKeyValuePair,
|
||||||
|
auth: identityAuthInfo
|
||||||
|
};
|
||||||
const interpolateRules = templatedRules(
|
const interpolateRules = templatedRules(
|
||||||
{
|
{
|
||||||
identity: {
|
identity: templateValue
|
||||||
id: identityProjectPermission.identityId,
|
|
||||||
username: identityProjectPermission.username,
|
|
||||||
metadata: metadataKeyValuePair
|
|
||||||
}
|
|
||||||
},
|
},
|
||||||
{ data: false }
|
{ data: false }
|
||||||
);
|
);
|
||||||
@@ -428,20 +431,21 @@ export const permissionServiceFactory = ({
|
|||||||
|
|
||||||
const rules = buildProjectPermissionRules(rolePermissions.concat(additionalPrivileges));
|
const rules = buildProjectPermissionRules(rolePermissions.concat(additionalPrivileges));
|
||||||
const templatedRules = handlebars.compile(JSON.stringify(rules), { data: false });
|
const templatedRules = handlebars.compile(JSON.stringify(rules), { data: false });
|
||||||
const metadataKeyValuePair = escapeHandlebarsMissingMetadata(
|
const metadataKeyValuePair = escapeHandlebarsMissingDict(
|
||||||
objectify(
|
objectify(
|
||||||
userProjectPermission.metadata,
|
userProjectPermission.metadata,
|
||||||
(i) => i.key,
|
(i) => i.key,
|
||||||
(i) => i.value
|
(i) => i.value
|
||||||
)
|
)
|
||||||
);
|
);
|
||||||
|
const templateValue = {
|
||||||
|
id: userProjectPermission.userId,
|
||||||
|
username: userProjectPermission.username,
|
||||||
|
metadata: metadataKeyValuePair
|
||||||
|
};
|
||||||
const interpolateRules = templatedRules(
|
const interpolateRules = templatedRules(
|
||||||
{
|
{
|
||||||
identity: {
|
identity: templateValue
|
||||||
id: userProjectPermission.userId,
|
|
||||||
username: userProjectPermission.username,
|
|
||||||
metadata: metadataKeyValuePair
|
|
||||||
}
|
|
||||||
},
|
},
|
||||||
{ data: false }
|
{ data: false }
|
||||||
);
|
);
|
||||||
@@ -473,21 +477,21 @@ export const permissionServiceFactory = ({
|
|||||||
|
|
||||||
const rules = buildProjectPermissionRules(rolePermissions.concat(additionalPrivileges));
|
const rules = buildProjectPermissionRules(rolePermissions.concat(additionalPrivileges));
|
||||||
const templatedRules = handlebars.compile(JSON.stringify(rules), { data: false });
|
const templatedRules = handlebars.compile(JSON.stringify(rules), { data: false });
|
||||||
const metadataKeyValuePair = escapeHandlebarsMissingMetadata(
|
const metadataKeyValuePair = escapeHandlebarsMissingDict(
|
||||||
objectify(
|
objectify(
|
||||||
identityProjectPermission.metadata,
|
identityProjectPermission.metadata,
|
||||||
(i) => i.key,
|
(i) => i.key,
|
||||||
(i) => i.value
|
(i) => i.value
|
||||||
)
|
)
|
||||||
);
|
);
|
||||||
|
const templateValue = {
|
||||||
|
id: identityProjectPermission.identityId,
|
||||||
|
username: identityProjectPermission.username,
|
||||||
|
metadata: metadataKeyValuePair
|
||||||
|
};
|
||||||
const interpolateRules = templatedRules(
|
const interpolateRules = templatedRules(
|
||||||
{
|
{
|
||||||
identity: {
|
identity: templateValue
|
||||||
id: identityProjectPermission.identityId,
|
|
||||||
username: identityProjectPermission.username,
|
|
||||||
metadata: metadataKeyValuePair
|
|
||||||
}
|
|
||||||
},
|
},
|
||||||
{ data: false }
|
{ data: false }
|
||||||
);
|
);
|
||||||
|
|||||||
Reference in New Issue
Block a user