mirror of
https://github.com/awatertrevi/infisical.git
synced 2026-10-04 22:26:15 +00:00
Update rendering custo role slugs in ST V3 table / modal
This commit is contained in:
@@ -6,7 +6,13 @@ import { BotService } from "../../services";
|
|||||||
import { containsGlobPatterns, repackageSecretToRaw } from "../../helpers/secrets";
|
import { containsGlobPatterns, repackageSecretToRaw } from "../../helpers/secrets";
|
||||||
import { encryptSymmetric128BitHexKeyUTF8 } from "../../utils/crypto";
|
import { encryptSymmetric128BitHexKeyUTF8 } from "../../utils/crypto";
|
||||||
import { getAllImportedSecrets } from "../../services/SecretImportService";
|
import { getAllImportedSecrets } from "../../services/SecretImportService";
|
||||||
import { Folder, IServiceTokenData, Membership, User } from "../../models";
|
import {
|
||||||
|
Folder,
|
||||||
|
IServiceTokenData,
|
||||||
|
Membership,
|
||||||
|
ServiceTokenData,
|
||||||
|
User
|
||||||
|
} from "../../models";
|
||||||
import { getFolderByPath } from "../../services/FolderService";
|
import { getFolderByPath } from "../../services/FolderService";
|
||||||
import { BadRequestError } from "../../utils/errors";
|
import { BadRequestError } from "../../utils/errors";
|
||||||
import { validateRequest } from "../../helpers/validation";
|
import { validateRequest } from "../../helpers/validation";
|
||||||
@@ -190,17 +196,20 @@ export const getSecretsRaw = async (req: Request, res: Response) => {
|
|||||||
query: { include_imports: includeImports }
|
query: { include_imports: includeImports }
|
||||||
} = validatedData;
|
} = validatedData;
|
||||||
|
|
||||||
// if the service token has single scope, it will get all secrets for that scope by default
|
if (req.authData.authPayload instanceof ServiceTokenData) {
|
||||||
const serviceTokenDetails: IServiceTokenData = req?.serviceTokenData;
|
|
||||||
if (
|
// if the service token has single scope, it will get all secrets for that scope by default
|
||||||
serviceTokenDetails &&
|
const serviceTokenDetails: IServiceTokenData = req?.serviceTokenData;
|
||||||
serviceTokenDetails.scopes.length == 1 &&
|
if (
|
||||||
!containsGlobPatterns(serviceTokenDetails.scopes[0].secretPath)
|
serviceTokenDetails &&
|
||||||
) {
|
serviceTokenDetails.scopes.length == 1 &&
|
||||||
const scope = serviceTokenDetails.scopes[0];
|
!containsGlobPatterns(serviceTokenDetails.scopes[0].secretPath)
|
||||||
secretPath = scope.secretPath;
|
) {
|
||||||
environment = scope.environment;
|
const scope = serviceTokenDetails.scopes[0];
|
||||||
workspaceId = serviceTokenDetails.workspace.toString();
|
secretPath = scope.secretPath;
|
||||||
|
environment = scope.environment;
|
||||||
|
workspaceId = serviceTokenDetails.workspace.toString();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!environment || !workspaceId)
|
if (!environment || !workspaceId)
|
||||||
|
|||||||
@@ -148,7 +148,7 @@ export const getWorkspaceServiceTokenData = async (req: Request, res: Response)
|
|||||||
|
|
||||||
const serviceTokenData = await ServiceTokenDataV3.find({
|
const serviceTokenData = await ServiceTokenDataV3.find({
|
||||||
workspace: new Types.ObjectId(workspaceId)
|
workspace: new Types.ObjectId(workspaceId)
|
||||||
});
|
}).populate("customRole");
|
||||||
|
|
||||||
return res.status(200).send({
|
return res.status(200).send({
|
||||||
serviceTokenData
|
serviceTokenData
|
||||||
|
|||||||
@@ -47,6 +47,10 @@ export type ServiceTokenDataV3 = {
|
|||||||
_id: string;
|
_id: string;
|
||||||
name: string;
|
name: string;
|
||||||
role: string;
|
role: string;
|
||||||
|
customRole?: {
|
||||||
|
name: string;
|
||||||
|
slug: string;
|
||||||
|
};
|
||||||
workspace: string;
|
workspace: string;
|
||||||
isActive: boolean;
|
isActive: boolean;
|
||||||
refreshTokenLastUsed?: string;
|
refreshTokenLastUsed?: string;
|
||||||
|
|||||||
@@ -2,7 +2,7 @@
|
|||||||
import { motion } from "framer-motion";
|
import { motion } from "framer-motion";
|
||||||
|
|
||||||
import { Tab, TabList, TabPanel, Tabs } from "@app/components/v2";
|
import { Tab, TabList, TabPanel, Tabs } from "@app/components/v2";
|
||||||
import { ProjectPermissionActions, ProjectPermissionSub, useWorkspace } from "@app/context";
|
import { ProjectPermissionActions, ProjectPermissionSub } from "@app/context";
|
||||||
import { withProjectPermission } from "@app/hoc";
|
import { withProjectPermission } from "@app/hoc";
|
||||||
|
|
||||||
import { MemberListTab } from "./components/MemberListTab";
|
import { MemberListTab } from "./components/MemberListTab";
|
||||||
|
|||||||
@@ -74,6 +74,7 @@ export const MemberListTab = () => {
|
|||||||
orgId,
|
orgId,
|
||||||
workspaceId
|
workspaceId
|
||||||
});
|
});
|
||||||
|
|
||||||
const { data: wsKey } = useGetUserWsKey(workspaceId);
|
const { data: wsKey } = useGetUserWsKey(workspaceId);
|
||||||
const { data: members, isLoading: isMembersLoading } = useGetWorkspaceUsers(workspaceId);
|
const { data: members, isLoading: isMembersLoading } = useGetWorkspaceUsers(workspaceId);
|
||||||
const { data: orgUsers } = useGetOrgUsers(orgId);
|
const { data: orgUsers } = useGetOrgUsers(orgId);
|
||||||
|
|||||||
+5
-1
@@ -151,6 +151,10 @@ export const AddServiceTokenV3Modal = ({
|
|||||||
serviceTokenDataId: string;
|
serviceTokenDataId: string;
|
||||||
name: string;
|
name: string;
|
||||||
role: string;
|
role: string;
|
||||||
|
customRole: {
|
||||||
|
name: string;
|
||||||
|
slug: string;
|
||||||
|
};
|
||||||
trustedIps: ServiceTokenV3TrustedIp[];
|
trustedIps: ServiceTokenV3TrustedIp[];
|
||||||
accessTokenTTL: number;
|
accessTokenTTL: number;
|
||||||
isRefreshTokenRotationEnabled: boolean;
|
isRefreshTokenRotationEnabled: boolean;
|
||||||
@@ -161,7 +165,7 @@ export const AddServiceTokenV3Modal = ({
|
|||||||
if (serviceTokenData) {
|
if (serviceTokenData) {
|
||||||
reset({
|
reset({
|
||||||
name: serviceTokenData.name,
|
name: serviceTokenData.name,
|
||||||
role: serviceTokenData.role,
|
role: serviceTokenData?.customRole?.slug ?? serviceTokenData.role,
|
||||||
trustedIps: serviceTokenData.trustedIps.map(({
|
trustedIps: serviceTokenData.trustedIps.map(({
|
||||||
ipAddress,
|
ipAddress,
|
||||||
prefix
|
prefix
|
||||||
|
|||||||
+8
-2
@@ -32,6 +32,10 @@ type Props = {
|
|||||||
serviceTokenDataId?: string;
|
serviceTokenDataId?: string;
|
||||||
name?: string;
|
name?: string;
|
||||||
role?: string;
|
role?: string;
|
||||||
|
customRole?: {
|
||||||
|
name: string;
|
||||||
|
slug: string;
|
||||||
|
};
|
||||||
trustedIps?: ServiceTokenV3TrustedIp[];
|
trustedIps?: ServiceTokenV3TrustedIp[];
|
||||||
accessTokenTTL?: number;
|
accessTokenTTL?: number;
|
||||||
isRefreshTokenRotationEnabled?: boolean;
|
isRefreshTokenRotationEnabled?: boolean;
|
||||||
@@ -46,7 +50,7 @@ export const ServiceTokenV3Table = ({
|
|||||||
const { currentWorkspace } = useWorkspace();
|
const { currentWorkspace } = useWorkspace();
|
||||||
const { data, isLoading } = useGetWorkspaceServiceTokenDataV3(currentWorkspace?._id || "");
|
const { data, isLoading } = useGetWorkspaceServiceTokenDataV3(currentWorkspace?._id || "");
|
||||||
const { mutateAsync: updateMutateAsync } = useUpdateServiceTokenV3();
|
const { mutateAsync: updateMutateAsync } = useUpdateServiceTokenV3();
|
||||||
|
|
||||||
const handleToggleServiceTokenDataStatus = async ({
|
const handleToggleServiceTokenDataStatus = async ({
|
||||||
serviceTokenDataId,
|
serviceTokenDataId,
|
||||||
isActive
|
isActive
|
||||||
@@ -98,6 +102,7 @@ export const ServiceTokenV3Table = ({
|
|||||||
name,
|
name,
|
||||||
isActive,
|
isActive,
|
||||||
role,
|
role,
|
||||||
|
customRole,
|
||||||
trustedIps,
|
trustedIps,
|
||||||
createdAt,
|
createdAt,
|
||||||
expiresAt,
|
expiresAt,
|
||||||
@@ -127,7 +132,7 @@ export const ServiceTokenV3Table = ({
|
|||||||
)}
|
)}
|
||||||
</ProjectPermissionCan>
|
</ProjectPermissionCan>
|
||||||
</Td>
|
</Td>
|
||||||
<Td>{role}</Td>
|
<Td>{customRole?.slug ?? role}</Td>
|
||||||
<Td>
|
<Td>
|
||||||
{trustedIps.map(({
|
{trustedIps.map(({
|
||||||
_id: trustedIpId,
|
_id: trustedIpId,
|
||||||
@@ -156,6 +161,7 @@ export const ServiceTokenV3Table = ({
|
|||||||
serviceTokenDataId: _id,
|
serviceTokenDataId: _id,
|
||||||
name,
|
name,
|
||||||
role,
|
role,
|
||||||
|
customRole,
|
||||||
trustedIps,
|
trustedIps,
|
||||||
accessTokenTTL,
|
accessTokenTTL,
|
||||||
isRefreshTokenRotationEnabled
|
isRefreshTokenRotationEnabled
|
||||||
|
|||||||
Reference in New Issue
Block a user