mirror of
https://github.com/awatertrevi/infisical.git
synced 2026-10-07 20:27:43 +00:00
feat: rebase conflict issue
This commit is contained in:
@@ -33,7 +33,7 @@ import { ApprovalStatus, TAccessApprovalRequestServiceFactory } from "./access-a
|
|||||||
|
|
||||||
type TSecretApprovalRequestServiceFactoryDep = {
|
type TSecretApprovalRequestServiceFactoryDep = {
|
||||||
additionalPrivilegeDAL: Pick<TAdditionalPrivilegeDALFactory, "create" | "findById">;
|
additionalPrivilegeDAL: Pick<TAdditionalPrivilegeDALFactory, "create" | "findById">;
|
||||||
permissionService: Pick<TPermissionServiceFactory, "getProjectPermission">;
|
permissionService: Pick<TPermissionServiceFactory, "getProjectPermission" | "invalidateProjectPermissionCache">;
|
||||||
accessApprovalPolicyApproverDAL: Pick<TAccessApprovalPolicyApproverDALFactory, "find">;
|
accessApprovalPolicyApproverDAL: Pick<TAccessApprovalPolicyApproverDALFactory, "find">;
|
||||||
projectEnvDAL: Pick<TProjectEnvDALFactory, "findOne">;
|
projectEnvDAL: Pick<TProjectEnvDALFactory, "findOne">;
|
||||||
projectDAL: Pick<
|
projectDAL: Pick<
|
||||||
|
|||||||
@@ -46,7 +46,10 @@ type TGroupServiceFactoryDep = {
|
|||||||
projectDAL: Pick<TProjectDALFactory, "findProjectGhostUser" | "findById">;
|
projectDAL: Pick<TProjectDALFactory, "findProjectGhostUser" | "findById">;
|
||||||
projectBotDAL: Pick<TProjectBotDALFactory, "findOne">;
|
projectBotDAL: Pick<TProjectBotDALFactory, "findOne">;
|
||||||
projectKeyDAL: Pick<TProjectKeyDALFactory, "find" | "delete" | "findLatestProjectKey" | "insertMany">;
|
projectKeyDAL: Pick<TProjectKeyDALFactory, "find" | "delete" | "findLatestProjectKey" | "insertMany">;
|
||||||
permissionService: Pick<TPermissionServiceFactory, "getOrgPermission" | "getOrgPermissionByRoles" | "invalidateProjectPermissionCache">;
|
permissionService: Pick<
|
||||||
|
TPermissionServiceFactory,
|
||||||
|
"getOrgPermission" | "getOrgPermissionByRoles" | "invalidateProjectPermissionCache"
|
||||||
|
>;
|
||||||
licenseService: Pick<TLicenseServiceFactory, "getPlan">;
|
licenseService: Pick<TLicenseServiceFactory, "getPlan">;
|
||||||
oidcConfigDAL: Pick<TOidcConfigDALFactory, "findOne">;
|
oidcConfigDAL: Pick<TOidcConfigDALFactory, "findOne">;
|
||||||
};
|
};
|
||||||
@@ -261,15 +264,6 @@ export const groupServiceFactory = ({
|
|||||||
return updated;
|
return updated;
|
||||||
});
|
});
|
||||||
|
|
||||||
if (role) {
|
|
||||||
const groupProjects = await groupProjectDAL.find({ groupId: group.id });
|
|
||||||
await Promise.allSettled([
|
|
||||||
...groupProjects.map((groupProject) =>
|
|
||||||
permissionService.invalidateProjectPermissionCache(groupProject.projectId)
|
|
||||||
)
|
|
||||||
]);
|
|
||||||
}
|
|
||||||
|
|
||||||
return updatedGroup;
|
return updatedGroup;
|
||||||
};
|
};
|
||||||
|
|
||||||
@@ -292,17 +286,11 @@ export const groupServiceFactory = ({
|
|||||||
message: "Failed to delete group due to plan restriction. Upgrade plan to delete group."
|
message: "Failed to delete group due to plan restriction. Upgrade plan to delete group."
|
||||||
});
|
});
|
||||||
|
|
||||||
const groupProjects = await groupProjectDAL.find({ groupId: id });
|
|
||||||
|
|
||||||
const [group] = await groupDAL.delete({
|
const [group] = await groupDAL.delete({
|
||||||
id,
|
id,
|
||||||
orgId: actorOrgId
|
orgId: actorOrgId
|
||||||
});
|
});
|
||||||
|
|
||||||
await Promise.allSettled([
|
|
||||||
...groupProjects.map((groupProject) => permissionService.invalidateProjectPermissionCache(groupProject.projectId))
|
|
||||||
]);
|
|
||||||
|
|
||||||
return group;
|
return group;
|
||||||
};
|
};
|
||||||
|
|
||||||
@@ -450,11 +438,6 @@ export const groupServiceFactory = ({
|
|||||||
projectBotDAL
|
projectBotDAL
|
||||||
});
|
});
|
||||||
|
|
||||||
const groupProjects = await groupProjectDAL.find({ groupId: group.id });
|
|
||||||
await Promise.allSettled([
|
|
||||||
...groupProjects.map((groupProject) => permissionService.invalidateProjectPermissionCache(groupProject.projectId))
|
|
||||||
]);
|
|
||||||
|
|
||||||
return users[0];
|
return users[0];
|
||||||
};
|
};
|
||||||
|
|
||||||
@@ -537,11 +520,6 @@ export const groupServiceFactory = ({
|
|||||||
projectKeyDAL
|
projectKeyDAL
|
||||||
});
|
});
|
||||||
|
|
||||||
const groupProjects = await groupProjectDAL.find({ groupId: group.id });
|
|
||||||
await Promise.allSettled([
|
|
||||||
...groupProjects.map((groupProject) => permissionService.invalidateProjectPermissionCache(groupProject.projectId))
|
|
||||||
]);
|
|
||||||
|
|
||||||
return users[0];
|
return users[0];
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|||||||
@@ -40,7 +40,7 @@ export const getDefaultOnPremFeatures = (): TFeatureSet => ({
|
|||||||
oidcSSO: false,
|
oidcSSO: false,
|
||||||
scim: false,
|
scim: false,
|
||||||
ldap: false,
|
ldap: false,
|
||||||
groups: true,
|
groups: false,
|
||||||
status: null,
|
status: null,
|
||||||
trial_end: null,
|
trial_end: null,
|
||||||
has_used_trial: true,
|
has_used_trial: true,
|
||||||
|
|||||||
@@ -4,14 +4,14 @@ import { Knex } from "knex";
|
|||||||
import RE2 from "re2";
|
import RE2 from "re2";
|
||||||
|
|
||||||
import {
|
import {
|
||||||
|
AccessScope,
|
||||||
OrgMembershipRole,
|
OrgMembershipRole,
|
||||||
OrgMembershipStatus,
|
OrgMembershipStatus,
|
||||||
TableName,
|
TableName,
|
||||||
TGroups,
|
TGroups,
|
||||||
TSamlConfigs,
|
TSamlConfigs,
|
||||||
TSamlConfigsUpdate,
|
TSamlConfigsUpdate,
|
||||||
TUsers,
|
TUsers
|
||||||
AccessScope
|
|
||||||
} from "@app/db/schemas";
|
} from "@app/db/schemas";
|
||||||
import { throwOnPlanSeatLimitReached } from "@app/ee/services/license/license-fns";
|
import { throwOnPlanSeatLimitReached } from "@app/ee/services/license/license-fns";
|
||||||
import { getConfig } from "@app/lib/config/env";
|
import { getConfig } from "@app/lib/config/env";
|
||||||
@@ -20,13 +20,16 @@ import { BadRequestError, ForbiddenRequestError, NotFoundError } from "@app/lib/
|
|||||||
import { AuthTokenType } from "@app/services/auth/auth-type";
|
import { AuthTokenType } from "@app/services/auth/auth-type";
|
||||||
import { TAuthTokenServiceFactory } from "@app/services/auth-token/auth-token-service";
|
import { TAuthTokenServiceFactory } from "@app/services/auth-token/auth-token-service";
|
||||||
import { TokenType } from "@app/services/auth-token/auth-token-types";
|
import { TokenType } from "@app/services/auth-token/auth-token-types";
|
||||||
import { TGroupProjectDALFactory } from "@app/services/group-project/group-project-dal";
|
|
||||||
import { TIdentityMetadataDALFactory } from "@app/services/identity/identity-metadata-dal";
|
import { TIdentityMetadataDALFactory } from "@app/services/identity/identity-metadata-dal";
|
||||||
import { TKmsServiceFactory } from "@app/services/kms/kms-service";
|
import { TKmsServiceFactory } from "@app/services/kms/kms-service";
|
||||||
import { KmsDataKey } from "@app/services/kms/kms-types";
|
import { KmsDataKey } from "@app/services/kms/kms-types";
|
||||||
import { TMembershipRoleDALFactory } from "@app/services/membership/membership-role-dal";
|
import { TMembershipRoleDALFactory } from "@app/services/membership/membership-role-dal";
|
||||||
|
import { TMembershipGroupDALFactory } from "@app/services/membership-group/membership-group-dal";
|
||||||
import { TOrgDALFactory } from "@app/services/org/org-dal";
|
import { TOrgDALFactory } from "@app/services/org/org-dal";
|
||||||
import { getDefaultOrgMembershipRole } from "@app/services/org/org-role-fns";
|
import { getDefaultOrgMembershipRole } from "@app/services/org/org-role-fns";
|
||||||
|
import { TProjectDALFactory } from "@app/services/project/project-dal";
|
||||||
|
import { TProjectBotDALFactory } from "@app/services/project-bot/project-bot-dal";
|
||||||
|
import { TProjectKeyDALFactory } from "@app/services/project-key/project-key-dal";
|
||||||
import { SmtpTemplates, TSmtpService } from "@app/services/smtp/smtp-service";
|
import { SmtpTemplates, TSmtpService } from "@app/services/smtp/smtp-service";
|
||||||
import { getServerCfg } from "@app/services/super-admin/super-admin-service";
|
import { getServerCfg } from "@app/services/super-admin/super-admin-service";
|
||||||
import { LoginMethod } from "@app/services/super-admin/super-admin-types";
|
import { LoginMethod } from "@app/services/super-admin/super-admin-types";
|
||||||
@@ -72,6 +75,15 @@ type TSamlConfigServiceFactoryDep = {
|
|||||||
tokenService: Pick<TAuthTokenServiceFactory, "createTokenForUser">;
|
tokenService: Pick<TAuthTokenServiceFactory, "createTokenForUser">;
|
||||||
smtpService: Pick<TSmtpService, "sendMail">;
|
smtpService: Pick<TSmtpService, "sendMail">;
|
||||||
kmsService: Pick<TKmsServiceFactory, "createCipherPairWithDataKey">;
|
kmsService: Pick<TKmsServiceFactory, "createCipherPairWithDataKey">;
|
||||||
|
userGroupMembershipDAL: Pick<
|
||||||
|
TUserGroupMembershipDALFactory,
|
||||||
|
"find" | "delete" | "transaction" | "insertMany" | "filterProjectsByUserMembership"
|
||||||
|
>;
|
||||||
|
groupDAL: Pick<TGroupDALFactory, "create" | "findOne" | "find" | "transaction">;
|
||||||
|
projectDAL: Pick<TProjectDALFactory, "findById" | "findProjectGhostUser">;
|
||||||
|
projectBotDAL: Pick<TProjectBotDALFactory, "findOne">;
|
||||||
|
projectKeyDAL: Pick<TProjectKeyDALFactory, "find" | "delete" | "findLatestProjectKey" | "insertMany">;
|
||||||
|
membershipGroupDAL: Pick<TMembershipGroupDALFactory, "find">;
|
||||||
};
|
};
|
||||||
|
|
||||||
export const samlConfigServiceFactory = ({
|
export const samlConfigServiceFactory = ({
|
||||||
@@ -81,7 +93,6 @@ export const samlConfigServiceFactory = ({
|
|||||||
userAliasDAL,
|
userAliasDAL,
|
||||||
groupDAL,
|
groupDAL,
|
||||||
userGroupMembershipDAL,
|
userGroupMembershipDAL,
|
||||||
groupProjectDAL,
|
|
||||||
projectDAL,
|
projectDAL,
|
||||||
projectBotDAL,
|
projectBotDAL,
|
||||||
projectKeyDAL,
|
projectKeyDAL,
|
||||||
@@ -91,7 +102,8 @@ export const samlConfigServiceFactory = ({
|
|||||||
smtpService,
|
smtpService,
|
||||||
identityMetadataDAL,
|
identityMetadataDAL,
|
||||||
kmsService,
|
kmsService,
|
||||||
membershipRoleDAL
|
membershipRoleDAL,
|
||||||
|
membershipGroupDAL
|
||||||
}: TSamlConfigServiceFactoryDep): TSamlConfigServiceFactory => {
|
}: TSamlConfigServiceFactoryDep): TSamlConfigServiceFactory => {
|
||||||
const parseSamlGroups = (groupsValue: string): string[] => {
|
const parseSamlGroups = (groupsValue: string): string[] => {
|
||||||
let samlGroups: string[] = [];
|
let samlGroups: string[] = [];
|
||||||
@@ -184,10 +196,10 @@ export const samlConfigServiceFactory = ({
|
|||||||
userDAL,
|
userDAL,
|
||||||
userGroupMembershipDAL,
|
userGroupMembershipDAL,
|
||||||
orgDAL,
|
orgDAL,
|
||||||
groupProjectDAL,
|
|
||||||
projectKeyDAL,
|
projectKeyDAL,
|
||||||
projectDAL,
|
projectDAL,
|
||||||
projectBotDAL,
|
projectBotDAL,
|
||||||
|
membershipGroupDAL,
|
||||||
tx: transaction
|
tx: transaction
|
||||||
});
|
});
|
||||||
} catch (error) {
|
} catch (error) {
|
||||||
@@ -207,7 +219,7 @@ export const samlConfigServiceFactory = ({
|
|||||||
group,
|
group,
|
||||||
userDAL,
|
userDAL,
|
||||||
userGroupMembershipDAL,
|
userGroupMembershipDAL,
|
||||||
groupProjectDAL,
|
membershipGroupDAL,
|
||||||
projectKeyDAL,
|
projectKeyDAL,
|
||||||
tx: transaction
|
tx: transaction
|
||||||
});
|
});
|
||||||
|
|||||||
@@ -683,7 +683,6 @@ export const registerRoutes = async (
|
|||||||
samlConfigDAL,
|
samlConfigDAL,
|
||||||
groupDAL,
|
groupDAL,
|
||||||
userGroupMembershipDAL,
|
userGroupMembershipDAL,
|
||||||
groupProjectDAL,
|
|
||||||
projectDAL,
|
projectDAL,
|
||||||
projectBotDAL,
|
projectBotDAL,
|
||||||
projectKeyDAL,
|
projectKeyDAL,
|
||||||
@@ -691,7 +690,8 @@ export const registerRoutes = async (
|
|||||||
tokenService,
|
tokenService,
|
||||||
smtpService,
|
smtpService,
|
||||||
kmsService,
|
kmsService,
|
||||||
membershipRoleDAL
|
membershipRoleDAL,
|
||||||
|
membershipGroupDAL
|
||||||
});
|
});
|
||||||
const groupService = groupServiceFactory({
|
const groupService = groupServiceFactory({
|
||||||
userDAL,
|
userDAL,
|
||||||
@@ -848,8 +848,8 @@ export const registerRoutes = async (
|
|||||||
smtpService,
|
smtpService,
|
||||||
authDAL,
|
authDAL,
|
||||||
userDAL,
|
userDAL,
|
||||||
orgMembershipDAL,
|
totpConfigDAL,
|
||||||
totpConfigDAL
|
membershipUserDAL
|
||||||
});
|
});
|
||||||
|
|
||||||
const projectBotService = projectBotServiceFactory({ permissionService, projectBotDAL, projectDAL });
|
const projectBotService = projectBotServiceFactory({ permissionService, projectBotDAL, projectDAL });
|
||||||
|
|||||||
@@ -1,3 +1,4 @@
|
|||||||
|
import { AccessScope } from "@app/db/schemas";
|
||||||
import { getConfig } from "@app/lib/config/env";
|
import { getConfig } from "@app/lib/config/env";
|
||||||
import { crypto } from "@app/lib/crypto/cryptography";
|
import { crypto } from "@app/lib/crypto/cryptography";
|
||||||
import { BadRequestError } from "@app/lib/errors";
|
import { BadRequestError } from "@app/lib/errors";
|
||||||
@@ -6,7 +7,7 @@ import { OrgServiceActor } from "@app/lib/types";
|
|||||||
|
|
||||||
import { TAuthTokenServiceFactory } from "../auth-token/auth-token-service";
|
import { TAuthTokenServiceFactory } from "../auth-token/auth-token-service";
|
||||||
import { TokenType } from "../auth-token/auth-token-types";
|
import { TokenType } from "../auth-token/auth-token-types";
|
||||||
import { TOrgMembershipDALFactory } from "../org-membership/org-membership-dal";
|
import { TMembershipUserDALFactory } from "../membership-user/membership-user-dal";
|
||||||
import { SmtpTemplates, TSmtpService } from "../smtp/smtp-service";
|
import { SmtpTemplates, TSmtpService } from "../smtp/smtp-service";
|
||||||
import { TTotpConfigDALFactory } from "../totp/totp-config-dal";
|
import { TTotpConfigDALFactory } from "../totp/totp-config-dal";
|
||||||
import { TUserDALFactory } from "../user/user-dal";
|
import { TUserDALFactory } from "../user/user-dal";
|
||||||
@@ -23,7 +24,7 @@ import { ActorType, AuthMethod, AuthTokenType } from "./auth-type";
|
|||||||
type TAuthPasswordServiceFactoryDep = {
|
type TAuthPasswordServiceFactoryDep = {
|
||||||
authDAL: TAuthDALFactory;
|
authDAL: TAuthDALFactory;
|
||||||
userDAL: TUserDALFactory;
|
userDAL: TUserDALFactory;
|
||||||
orgMembershipDAL: Pick<TOrgMembershipDALFactory, "find">;
|
membershipUserDAL: Pick<TMembershipUserDALFactory, "find">;
|
||||||
tokenService: TAuthTokenServiceFactory;
|
tokenService: TAuthTokenServiceFactory;
|
||||||
smtpService: TSmtpService;
|
smtpService: TSmtpService;
|
||||||
totpConfigDAL: Pick<TTotpConfigDALFactory, "delete">;
|
totpConfigDAL: Pick<TTotpConfigDALFactory, "delete">;
|
||||||
@@ -33,7 +34,7 @@ export type TAuthPasswordFactory = ReturnType<typeof authPaswordServiceFactory>;
|
|||||||
export const authPaswordServiceFactory = ({
|
export const authPaswordServiceFactory = ({
|
||||||
authDAL,
|
authDAL,
|
||||||
userDAL,
|
userDAL,
|
||||||
orgMembershipDAL,
|
membershipUserDAL,
|
||||||
tokenService,
|
tokenService,
|
||||||
smtpService,
|
smtpService,
|
||||||
totpConfigDAL
|
totpConfigDAL
|
||||||
@@ -54,7 +55,10 @@ export const authPaswordServiceFactory = ({
|
|||||||
const hasEmailAuth = user.authMethods?.includes(AuthMethod.EMAIL);
|
const hasEmailAuth = user.authMethods?.includes(AuthMethod.EMAIL);
|
||||||
|
|
||||||
if (!hasEmailAuth) {
|
if (!hasEmailAuth) {
|
||||||
const orgMemberships = await orgMembershipDAL.find({ userId: user.id });
|
const orgMemberships = await membershipUserDAL.find({
|
||||||
|
actorUserId: user.id,
|
||||||
|
scope: AccessScope.Organization
|
||||||
|
});
|
||||||
const lastLoginMethod =
|
const lastLoginMethod =
|
||||||
orgMemberships
|
orgMemberships
|
||||||
.filter((membership) => membership.lastLoginAuthMethod)
|
.filter((membership) => membership.lastLoginAuthMethod)
|
||||||
|
|||||||
@@ -32,7 +32,10 @@ import {
|
|||||||
} from "./project-membership-types";
|
} from "./project-membership-types";
|
||||||
|
|
||||||
type TProjectMembershipServiceFactoryDep = {
|
type TProjectMembershipServiceFactoryDep = {
|
||||||
permissionService: Pick<TPermissionServiceFactory, "getProjectPermission" | "getProjectPermissionByRoles"| "invalidateProjectPermissionCache">;
|
permissionService: Pick<
|
||||||
|
TPermissionServiceFactory,
|
||||||
|
"getProjectPermission" | "getProjectPermissionByRoles" | "invalidateProjectPermissionCache"
|
||||||
|
>;
|
||||||
smtpService: TSmtpService;
|
smtpService: TSmtpService;
|
||||||
projectMembershipDAL: TProjectMembershipDALFactory;
|
projectMembershipDAL: TProjectMembershipDALFactory;
|
||||||
membershipUserDAL: TMembershipUserDALFactory;
|
membershipUserDAL: TMembershipUserDALFactory;
|
||||||
|
|||||||
@@ -1,3 +1,4 @@
|
|||||||
|
import { useCallback } from "react";
|
||||||
import { createMongoAbility, MongoAbility, RawRuleOf } from "@casl/ability";
|
import { createMongoAbility, MongoAbility, RawRuleOf } from "@casl/ability";
|
||||||
import { unpackRules } from "@casl/ability/extra";
|
import { unpackRules } from "@casl/ability/extra";
|
||||||
import { useSuspenseQuery } from "@tanstack/react-query";
|
import { useSuspenseQuery } from "@tanstack/react-query";
|
||||||
@@ -10,7 +11,6 @@ import {
|
|||||||
} from "@app/hooks/api/roles/queries";
|
} from "@app/hooks/api/roles/queries";
|
||||||
|
|
||||||
import { OrgPermissionSet } from "./types";
|
import { OrgPermissionSet } from "./types";
|
||||||
import { useCallback } from "react";
|
|
||||||
|
|
||||||
export const useOrgPermission = () => {
|
export const useOrgPermission = () => {
|
||||||
const organizationId = useRouteContext({
|
const organizationId = useRouteContext({
|
||||||
|
|||||||
@@ -99,7 +99,7 @@ export const useGetOrgRole = (orgId: string, roleId: string) =>
|
|||||||
}>(`/api/v1/organization/${orgId}/roles/${roleId}`);
|
}>(`/api/v1/organization/${orgId}/roles/${roleId}`);
|
||||||
return {
|
return {
|
||||||
...data.role,
|
...data.role,
|
||||||
permissions: data.role.permissions as PackRule<TPermission>[]
|
permissions: data.role.permissions as TPermission[]
|
||||||
};
|
};
|
||||||
},
|
},
|
||||||
enabled: Boolean(orgId && roleId)
|
enabled: Boolean(orgId && roleId)
|
||||||
|
|||||||
@@ -8,7 +8,6 @@ import { queryClient as qc } from "@app/hooks/api/reactQuery";
|
|||||||
import { APIKeyDataV2 } from "../apiKeys/types";
|
import { APIKeyDataV2 } from "../apiKeys/types";
|
||||||
import { MfaMethod } from "../auth/types";
|
import { MfaMethod } from "../auth/types";
|
||||||
import { TGroupWithProjectMemberships } from "../groups/types";
|
import { TGroupWithProjectMemberships } from "../groups/types";
|
||||||
import { projectKeys } from "../projects";
|
|
||||||
import { setAuthToken } from "../reactQuery";
|
import { setAuthToken } from "../reactQuery";
|
||||||
import { subscriptionQueryKeys } from "../subscriptions/queries";
|
import { subscriptionQueryKeys } from "../subscriptions/queries";
|
||||||
import { userKeys } from "./query-keys";
|
import { userKeys } from "./query-keys";
|
||||||
|
|||||||
+2
-2
@@ -6,8 +6,8 @@ import { z } from "zod";
|
|||||||
import { createNotification } from "@app/components/notifications";
|
import { createNotification } from "@app/components/notifications";
|
||||||
import { Button, Checkbox, Modal, ModalContent, Tooltip } from "@app/components/v2";
|
import { Button, Checkbox, Modal, ModalContent, Tooltip } from "@app/components/v2";
|
||||||
import { useOrgPermission } from "@app/context";
|
import { useOrgPermission } from "@app/context";
|
||||||
import { useUpgradePrivilegeSystem } from "@app/hooks/api";
|
|
||||||
import { OrgMembershipRole } from "@app/helpers/roles";
|
import { OrgMembershipRole } from "@app/helpers/roles";
|
||||||
|
import { useUpgradePrivilegeSystem } from "@app/hooks/api";
|
||||||
|
|
||||||
const formSchema = z.object({
|
const formSchema = z.object({
|
||||||
isProjectPrivilegesUpdated: z.literal(true),
|
isProjectPrivilegesUpdated: z.literal(true),
|
||||||
@@ -275,7 +275,7 @@ export const UpgradePrivilegeSystemModal = ({ isOpen, onOpenChange }: Props) =>
|
|||||||
<Tooltip
|
<Tooltip
|
||||||
content={
|
content={
|
||||||
!isAdmin
|
!isAdmin
|
||||||
? `You cannot perform this upgrade because you are not an organization admin.`
|
? "You cannot perform this upgrade because you are not an organization admin."
|
||||||
: undefined
|
: undefined
|
||||||
}
|
}
|
||||||
>
|
>
|
||||||
|
|||||||
+1
-1
@@ -3,10 +3,10 @@ import { FontAwesomeIcon } from "@fortawesome/react-fontawesome";
|
|||||||
|
|
||||||
import { Button } from "@app/components/v2";
|
import { Button } from "@app/components/v2";
|
||||||
import { useOrgPermission } from "@app/context";
|
import { useOrgPermission } from "@app/context";
|
||||||
|
import { OrgMembershipRole } from "@app/helpers/roles";
|
||||||
import { usePopUp } from "@app/hooks";
|
import { usePopUp } from "@app/hooks";
|
||||||
|
|
||||||
import { SelectImportFromPlatformModal } from "./components/SelectImportFromPlatformModal";
|
import { SelectImportFromPlatformModal } from "./components/SelectImportFromPlatformModal";
|
||||||
import { OrgMembershipRole } from "@app/helpers/roles";
|
|
||||||
|
|
||||||
export const ExternalMigrationsTab = () => {
|
export const ExternalMigrationsTab = () => {
|
||||||
const { hasOrgRole } = useOrgPermission();
|
const { hasOrgRole } = useOrgPermission();
|
||||||
|
|||||||
+1
-1
@@ -3,10 +3,10 @@ import { useNavigate } from "@tanstack/react-router";
|
|||||||
import { createNotification } from "@app/components/notifications";
|
import { createNotification } from "@app/components/notifications";
|
||||||
import { Button, DeleteActionModal } from "@app/components/v2";
|
import { Button, DeleteActionModal } from "@app/components/v2";
|
||||||
import { useOrganization, useOrgPermission } from "@app/context";
|
import { useOrganization, useOrgPermission } from "@app/context";
|
||||||
|
import { OrgMembershipRole } from "@app/helpers/roles";
|
||||||
import { useDeleteOrgById } from "@app/hooks/api";
|
import { useDeleteOrgById } from "@app/hooks/api";
|
||||||
import { clearSession } from "@app/hooks/api/users/queries";
|
import { clearSession } from "@app/hooks/api/users/queries";
|
||||||
import { usePopUp } from "@app/hooks/usePopUp";
|
import { usePopUp } from "@app/hooks/usePopUp";
|
||||||
import { OrgMembershipRole } from "@app/helpers/roles";
|
|
||||||
|
|
||||||
export const OrgDeleteSection = () => {
|
export const OrgDeleteSection = () => {
|
||||||
const navigate = useNavigate();
|
const navigate = useNavigate();
|
||||||
|
|||||||
+1
-1
@@ -1,9 +1,9 @@
|
|||||||
import { useOrgPermission } from "@app/context";
|
import { useOrgPermission } from "@app/context";
|
||||||
|
import { OrgMembershipRole } from "@app/helpers/roles";
|
||||||
|
|
||||||
import { OrgDeleteSection } from "../OrgDeleteSection";
|
import { OrgDeleteSection } from "../OrgDeleteSection";
|
||||||
import { OrgIncidentContactsSection } from "../OrgIncidentContactsSection";
|
import { OrgIncidentContactsSection } from "../OrgIncidentContactsSection";
|
||||||
import { OrgNameChangeSection } from "../OrgNameChangeSection";
|
import { OrgNameChangeSection } from "../OrgNameChangeSection";
|
||||||
import { OrgMembershipRole } from "@app/helpers/roles";
|
|
||||||
|
|
||||||
export const OrgGeneralTab = () => {
|
export const OrgGeneralTab = () => {
|
||||||
const { hasOrgRole } = useOrgPermission();
|
const { hasOrgRole } = useOrgPermission();
|
||||||
|
|||||||
Reference in New Issue
Block a user