fix: correct lint

This commit is contained in:
Scott Wilson
2025-10-10 11:46:46 -07:00
parent 48ea19f807
commit cd703a77e9
835 changed files with 3457 additions and 3457 deletions
@@ -76,7 +76,7 @@ export const AccessManagementPage = () => {
const hasNoAccess = tabSections.every((tab) => tab.isHidden);
return (
<div className="bg-bunker-800 container mx-auto flex flex-col justify-between text-white">
<div className="container mx-auto flex flex-col justify-between bg-bunker-800 text-white">
<Helmet>
<title>{t("common.head-title", { title: t("settings.org.title") })}</title>
</Helmet>
@@ -86,12 +86,12 @@ export const AccessManagementPage = () => {
description="Manage fine-grained access for users, groups, roles, and identities within your organization resources."
/>
{!currentOrg.shouldUseNewPrivilegeSystem && (
<div className="border-l-primary bg-mineshaft-300/5 mb-4 mt-4 flex flex-col rounded-r border-l-2 px-4 py-2.5">
<div className="mt-4 mb-4 flex flex-col rounded-r border-l-2 border-l-primary bg-mineshaft-300/5 px-4 py-2.5">
<div className="mb-1 flex items-center text-sm">
<FontAwesomeIcon icon={faInfoCircle} size="sm" className="text-primary mr-1.5" />
<FontAwesomeIcon icon={faInfoCircle} size="sm" className="mr-1.5 text-primary" />
Your organization is using legacy privilege management
</div>
<p className="text-bunker-300 mb-2 mt-1 text-sm">
<p className="mt-1 mb-2 text-sm text-bunker-300">
We&apos;ve developed an improved privilege management system to better serve your
security needs. Upgrade to our new permission-based approach that allows you to
explicitly designate who can modify specific access levels, rather than relying on
@@ -55,9 +55,9 @@ export const OrgGroupsSection = () => {
};
return (
<div className="border-mineshaft-600 bg-mineshaft-900 mb-6 rounded-lg border p-4">
<div className="mb-6 rounded-lg border border-mineshaft-600 bg-mineshaft-900 p-4">
<div className="mb-4 flex items-center justify-between">
<p className="text-mineshaft-100 text-xl font-medium">Groups</p>
<p className="text-xl font-medium text-mineshaft-100">Groups</p>
<OrgPermissionCan I={OrgPermissionGroupActions.Create} a={OrgPermissionSubjects.Groups}>
{(isAllowed) => (
<Button
@@ -249,7 +249,7 @@ export const OrgGroupsTable = ({ handlePopUpOpen }: Props) => {
}
})
}
className="hover:bg-mineshaft-700 h-10 cursor-pointer transition-colors duration-100"
className="h-10 cursor-pointer transition-colors duration-100 hover:bg-mineshaft-700"
key={`org-group-${id}`}
>
<Td>{name}</Td>
@@ -264,7 +264,7 @@ export const OrgGroupsTable = ({ handlePopUpOpen }: Props) => {
<Select
value={role === "custom" ? (customRole?.slug as string) : role}
isDisabled={!isAllowed}
className="bg-mineshaft-700 h-8 w-48"
className="h-8 w-48 bg-mineshaft-700"
position="popper"
dropdownContainerClassName="border border-mineshaft-600 bg-mineshaft-800"
onValueChange={(selectedRole) =>
@@ -182,7 +182,7 @@ export const IdentityAuthTemplatesTable = ({ handlePopUpOpen }: Props) => {
{!isPending &&
templates?.map((template) => (
<Tr
className="hover:bg-mineshaft-700 h-10 cursor-pointer transition-colors duration-100"
className="h-10 cursor-pointer transition-colors duration-100 hover:bg-mineshaft-700"
key={`template-${template.id}`}
>
<Td>{template.name}</Td>
@@ -192,7 +192,7 @@ export const IdentityAuthTemplatesTable = ({ handlePopUpOpen }: Props) => {
</div>
</Td>
<Td>
<span className="text-mineshaft-400 text-sm">
<span className="text-sm text-mineshaft-400">
{template.templateFields.url}
</span>
</Td>
@@ -343,7 +343,7 @@ export const IdentityKubernetesAuthForm = ({
);
}
}}
className="border-mineshaft-500 w-full border"
className="w-full border border-mineshaft-500"
dropdownContainerClassName="max-w-none"
isLoading={isGatewayLoading}
placeholder="Default: Internet Gateway"
@@ -233,7 +233,7 @@ export const IdentityModal = ({ popUp, handlePopUpToggle }: Props) => {
render={({ field: { onChange, value }, fieldState: { error } }) => (
<FormControl errorText={error?.message} isError={Boolean(error)}>
<Switch
className="bg-mineshaft-400/80 data-[state=checked]:bg-green/80 ml-0 mr-2 shadow-inner"
className="mr-2 ml-0 bg-mineshaft-400/80 shadow-inner data-[state=checked]:bg-green/80"
containerClassName="flex-row-reverse w-fit"
id="delete-protection-enabled"
thumbClassName="bg-mineshaft-800"
@@ -252,7 +252,7 @@ export const IdentityModal = ({ popUp, handlePopUpToggle }: Props) => {
{metadataFormFields.fields.map(({ id: metadataFieldId }, i) => (
<div key={metadataFieldId} className="flex items-end space-x-2">
<div className="grow">
{i === 0 && <span className="text-mineshaft-400 text-xs">Key</span>}
{i === 0 && <span className="text-xs text-mineshaft-400">Key</span>}
<Controller
control={control}
name={`metadata.${i}.key`}
@@ -269,7 +269,7 @@ export const IdentityModal = ({ popUp, handlePopUpToggle }: Props) => {
</div>
<div className="grow">
{i === 0 && (
<FormLabel label="Value" className="text-mineshaft-400 text-xs" isOptional />
<FormLabel label="Value" className="text-xs text-mineshaft-400" isOptional />
)}
<Controller
control={control}
@@ -104,16 +104,16 @@ export const IdentitySection = withPermission(
return (
<div>
<div className="border-mineshaft-600 bg-mineshaft-900 rounded-lg border p-4">
<div className="rounded-lg border border-mineshaft-600 bg-mineshaft-900 p-4">
<div className="mb-4 flex items-center justify-between">
<div className="flex items-center gap-1">
<p className="text-mineshaft-100 text-xl font-medium">Identities</p>
<p className="text-xl font-medium text-mineshaft-100">Identities</p>
<a
href="https://infisical.com/docs/documentation/platform/identities/overview"
target="_blank"
rel="noopener noreferrer"
>
<div className="bg-yellow/20 text-yellow ml-1 mt-[0.16rem] inline-block rounded-md px-1.5 text-sm opacity-80 hover:opacity-100">
<div className="mt-[0.16rem] ml-1 inline-block rounded-md bg-yellow/20 px-1.5 text-sm text-yellow opacity-80 hover:opacity-100">
<FontAwesomeIcon icon={faBookOpen} className="mr-1.5" />
<span>Docs</span>
<FontAwesomeIcon
@@ -152,16 +152,16 @@ export const IdentitySection = withPermission(
<IdentityTable handlePopUpOpen={handlePopUpOpen} />
</div>
{/* Identity Auth Templates Section */}
<div className="border-mineshaft-600 bg-mineshaft-900 mt-4 rounded-lg border p-4">
<div className="mt-4 rounded-lg border border-mineshaft-600 bg-mineshaft-900 p-4">
<div className="mb-4 flex items-center justify-between">
<div className="flex items-center gap-1">
<p className="text-mineshaft-100 text-xl font-medium">Identity Auth Templates</p>
<p className="text-xl font-medium text-mineshaft-100">Identity Auth Templates</p>
<a
href="https://infisical.com/docs/documentation/platform/identities/auth-templates"
target="_blank"
rel="noopener noreferrer"
>
<div className="bg-yellow/20 text-yellow ml-1 mt-[0.16rem] inline-block rounded-md px-1.5 text-sm opacity-80 hover:opacity-100">
<div className="mt-[0.16rem] ml-1 inline-block rounded-md bg-yellow/20 px-1.5 text-sm text-yellow opacity-80 hover:opacity-100">
<FontAwesomeIcon icon={faBookOpen} className="mr-1.5" />
<span>Docs</span>
<FontAwesomeIcon
@@ -192,7 +192,7 @@ export const IdentityTable = ({ handlePopUpOpen }: Props) => {
variant="plain"
size="sm"
className={twMerge(
"h-9.5 border-mineshaft-600 bg-mineshaft-800 hover:border-primary/60 hover:bg-primary/10 flex w-[2.6rem] items-center justify-center overflow-hidden border p-0 transition-all",
"flex h-9.5 w-[2.6rem] items-center justify-center overflow-hidden border border-mineshaft-600 bg-mineshaft-800 p-0 transition-all hover:border-primary/60 hover:bg-primary/10",
isTableFiltered && "border-primary/50 text-primary"
)}
>
@@ -208,8 +208,8 @@ export const IdentityTable = ({ handlePopUpOpen }: Props) => {
>
Roles
</DropdownSubMenuTrigger>
<DropdownSubMenuContent className="thin-scrollbar max-h-80 overflow-y-auto rounded-l-none">
<DropdownMenuLabel className="bg-mineshaft-900 sticky top-0">
<DropdownSubMenuContent className="max-h-80 thin-scrollbar overflow-y-auto rounded-l-none">
<DropdownMenuLabel className="sticky top-0 bg-mineshaft-900">
Apply Roles to Filter Identities
</DropdownMenuLabel>
{roles?.map(({ id, slug, name }) => (
@@ -302,7 +302,7 @@ export const IdentityTable = ({ handlePopUpOpen }: Props) => {
}) => {
return (
<Tr
className="hover:bg-mineshaft-700 h-10 cursor-pointer transition-colors duration-100"
className="h-10 cursor-pointer transition-colors duration-100 hover:bg-mineshaft-700"
key={`identity-${id}`}
onClick={() =>
navigate({
@@ -317,7 +317,7 @@ export const IdentityTable = ({ handlePopUpOpen }: Props) => {
{name}
{lastLoginAuthMethod && lastLoginTime && (
<Tooltip
className="min-w-52 max-w-96 px-3"
className="max-w-96 min-w-52 px-3"
content={
<LastLoginSection
lastLoginAuthMethod={identityAuthToNameMap[lastLoginAuthMethod]}
@@ -327,7 +327,7 @@ export const IdentityTable = ({ handlePopUpOpen }: Props) => {
>
<FontAwesomeIcon
icon={faInfoCircle}
className="text-mineshaft-400 ml-2 opacity-0 transition-all group-hover:opacity-100"
className="ml-2 text-mineshaft-400 opacity-0 transition-all group-hover:opacity-100"
/>
</Tooltip>
)}
@@ -342,7 +342,7 @@ export const IdentityTable = ({ handlePopUpOpen }: Props) => {
<Select
value={role === "custom" ? (customRole?.slug as string) : role}
isDisabled={!isAllowed}
className="bg-mineshaft-700 h-8 w-48"
className="h-8 w-48 bg-mineshaft-700"
position="popper"
dropdownContainerClassName="border border-mineshaft-600 bg-mineshaft-800"
onValueChange={(selectedRole) =>
@@ -312,7 +312,7 @@ export const IdentityUniversalAuthForm = ({
</TabList>
<TabPanel value={IdentityFormTab.Configuration}>
{accessTokenPeriodValue > 0 ? (
<div className="text-bunker-400 mb-4 text-xs">
<div className="mb-4 text-xs text-bunker-400">
When Access Token Period is set, TTL and Max TTL are ignored.
</div>
) : (
@@ -57,7 +57,7 @@ export const MachineAuthTemplateUsagesModal = ({
{!isPending &&
usages.map((usage) => (
<Tr
className="hover:bg-mineshaft-700 h-10 cursor-pointer transition-colors duration-100"
className="h-10 cursor-pointer transition-colors duration-100 hover:bg-mineshaft-700"
key={`usage-${usage.identityId}`}
onClick={() =>
navigate({
@@ -70,7 +70,7 @@ export const MachineAuthTemplateUsagesModal = ({
>
<Td>{usage.identityName}</Td>
<Td>
<span className="text-mineshaft-400 text-sm">{usage.identityId}</span>
<span className="text-sm text-mineshaft-400">{usage.identityId}</span>
</Td>
</Tr>
))}
@@ -35,7 +35,7 @@ export const LockoutTab = ({
errorText={error?.message}
>
<Switch
className="bg-mineshaft-400/80 data-[state=checked]:bg-green/80 ml-0 mr-3 shadow-inner"
className="mr-3 ml-0 bg-mineshaft-400/80 shadow-inner data-[state=checked]:bg-green/80"
containerClassName="flex-row-reverse w-fit"
id="lockout-enabled"
thumbClassName="bg-mineshaft-800"
@@ -110,25 +110,25 @@ export const LockoutTab = ({
>
<SelectItem
value="s"
className="hover:bg-mineshaft-700 relative py-2 pl-6 pr-8 text-sm"
className="relative py-2 pr-8 pl-6 text-sm hover:bg-mineshaft-700"
>
<div className="ml-3 font-medium">Seconds</div>
</SelectItem>
<SelectItem
value="m"
className="hover:bg-mineshaft-700 relative py-2 pl-6 pr-8 text-sm"
className="relative py-2 pr-8 pl-6 text-sm hover:bg-mineshaft-700"
>
<div className="ml-3 font-medium">Minutes</div>
</SelectItem>
<SelectItem
value="h"
className="hover:bg-mineshaft-700 relative py-2 pl-6 pr-8 text-sm"
className="relative py-2 pr-8 pl-6 text-sm hover:bg-mineshaft-700"
>
<div className="ml-3 font-medium">Hours</div>
</SelectItem>
<SelectItem
value="d"
className="hover:bg-mineshaft-700 relative py-2 pl-6 pr-8 text-sm"
className="relative py-2 pr-8 pl-6 text-sm hover:bg-mineshaft-700"
>
<div className="ml-3 font-medium">Days</div>
</SelectItem>
@@ -177,19 +177,19 @@ export const LockoutTab = ({
>
<SelectItem
value="s"
className="hover:bg-mineshaft-700 relative py-2 pl-6 pr-8 text-sm"
className="relative py-2 pr-8 pl-6 text-sm hover:bg-mineshaft-700"
>
<div className="ml-3 font-medium">Seconds</div>
</SelectItem>
<SelectItem
value="m"
className="hover:bg-mineshaft-700 relative py-2 pl-6 pr-8 text-sm"
className="relative py-2 pr-8 pl-6 text-sm hover:bg-mineshaft-700"
>
<div className="ml-3 font-medium">Minutes</div>
</SelectItem>
<SelectItem
value="h"
className="hover:bg-mineshaft-700 relative py-2 pl-6 pr-8 text-sm"
className="relative py-2 pr-8 pl-6 text-sm hover:bg-mineshaft-700"
>
<div className="ml-3 font-medium">Hours</div>
</SelectItem>
@@ -232,7 +232,7 @@ export const AddOrgMemberModal = ({
<FormControl label="Emails" isError={Boolean(error)} errorText={error?.message}>
<TextArea
{...field}
className="min-w-120 border-mineshaft-500 bg-mineshaft-900/70 text-bunker-300 ring-primary-800 outline-hidden placeholder:text-bunker-400 mt-1 h-20 w-full rounded-md border px-2 py-1 text-sm ring-opacity-70 transition-all focus:ring-2"
className="ring-opacity-70 mt-1 h-20 w-full min-w-120 rounded-md border border-mineshaft-500 bg-mineshaft-900/70 px-2 py-1 text-sm text-bunker-300 ring-primary-800 outline-hidden transition-all placeholder:text-bunker-400 focus:ring-2"
placeholder="[email protected], [email protected]..."
/>
</FormControl>
@@ -27,10 +27,10 @@ export const OrgInviteLink = ({ invite }: Props) => {
return (
<div key={`invite-${invite.email}`}>
<p className="text-mineshaft-400 text-sm">
<p className="text-sm text-mineshaft-400">
Invite for <span className="font-medium">{invite.email}</span>
</p>
<div className="bg-white/4 flex flex-col gap-1 rounded-md p-2 text-base text-gray-400">
<div className="flex flex-col gap-1 rounded-md bg-white/4 p-2 text-base text-gray-400">
<p
className={twMerge(
"mr-4 line-clamp-1",
@@ -158,11 +158,11 @@ export const OrgMembersSection = () => {
selectedMemberIds.length > 0 && "h-16"
)}
>
<div className="border-mineshaft-600 bg-mineshaft-800 text-bunker-300 flex items-center rounded-md border px-4 py-2">
<div className="flex items-center rounded-md border border-mineshaft-600 bg-mineshaft-800 px-4 py-2 text-bunker-300">
<div className="mr-2 text-sm">{selectedMemberIds.length} Selected</div>
<button
type="button"
className="text-mineshaft-400 hover:text-mineshaft-200 mr-auto text-xs underline-offset-2 hover:underline"
className="mr-auto text-xs text-mineshaft-400 underline-offset-2 hover:text-mineshaft-200 hover:underline"
onClick={() => setSelectedMemberIds([])}
>
Unselect All
@@ -201,9 +201,9 @@ export const OrgMembersSection = () => {
</OrgPermissionCan>
</div>
</div>
<div className="border-mineshaft-600 bg-mineshaft-900 mb-6 rounded-lg border p-4">
<div className="mb-6 rounded-lg border border-mineshaft-600 bg-mineshaft-900 p-4">
<div className="mb-4 flex items-center justify-between">
<p className="text-mineshaft-100 text-xl font-medium">Users</p>
<p className="text-xl font-medium text-mineshaft-100">Users</p>
<OrgPermissionCan I={OrgPermissionActions.Create} a={OrgPermissionSubjects.Member}>
{(isAllowed) => (
<Button
@@ -267,10 +267,10 @@ export const OrgMembersSection = () => {
}
buttonText="Remove"
>
<div className="text-mineshaft-400 mt-4 text-sm">
<div className="mt-4 text-sm text-mineshaft-400">
The following members will be removed:
</div>
<div className="border-mineshaft-600 bg-red/10 mt-2 max-h-80 overflow-y-auto rounded-sm border p-4 pl-8 text-sm text-red-200">
<div className="mt-2 max-h-80 overflow-y-auto rounded-sm border border-mineshaft-600 bg-red/10 p-4 pl-8 text-sm text-red-200">
<ul className="list-disc">
{(popUp.removeMembers.data?.selectedOrgMemberships as OrgUser[])?.map((member) => {
const email = member.user.email ?? member.user.username ?? member.inviteEmail;
@@ -292,7 +292,7 @@ export const OrgMembersSection = () => {
<div className="inline-block">
<Badge
variant="danger"
className="ml-1 mt-[0.05rem] inline-flex w-min items-center gap-1.5 whitespace-nowrap"
className="mt-[0.05rem] ml-1 inline-flex w-min items-center gap-1.5 whitespace-nowrap"
>
<FontAwesomeIcon icon={faBan} />
<span>Ignored</span>
@@ -332,7 +332,7 @@ export const OrgMembersTable = ({
variant="plain"
size="sm"
className={twMerge(
"h-9.5 border-mineshaft-600 bg-mineshaft-800 hover:border-primary/60 hover:bg-primary/10 flex w-[2.6rem] items-center justify-center overflow-hidden border p-0 transition-all",
"flex h-9.5 w-[2.6rem] items-center justify-center overflow-hidden border border-mineshaft-600 bg-mineshaft-800 p-0 transition-all hover:border-primary/60 hover:bg-primary/10",
isTableFiltered && "border-primary/50 text-primary"
)}
>
@@ -348,8 +348,8 @@ export const OrgMembersTable = ({
>
Roles
</DropdownSubMenuTrigger>
<DropdownSubMenuContent className="thin-scrollbar max-h-80 overflow-y-auto rounded-l-none">
<DropdownMenuLabel className="bg-mineshaft-900 sticky top-0">
<DropdownSubMenuContent className="max-h-80 thin-scrollbar overflow-y-auto rounded-l-none">
<DropdownMenuLabel className="sticky top-0 bg-mineshaft-900">
Apply Roles to Filter Users
</DropdownMenuLabel>
{roles?.map(({ id, slug, name }) => (
@@ -492,7 +492,7 @@ export const OrgMembersTable = ({
return (
<Tr
key={`org-membership-${orgMembershipId}`}
className="hover:bg-mineshaft-700 h-10 w-full cursor-pointer transition-colors duration-100"
className="h-10 w-full cursor-pointer transition-colors duration-100 hover:bg-mineshaft-700"
onClick={() =>
navigate({
to: "/organization/members/$membershipId" as const,
@@ -533,7 +533,7 @@ export const OrgMembersTable = ({
)}
{lastLoginAuthMethod && lastLoginTime && (
<Tooltip
className="min-w-52 max-w-96 px-3"
className="max-w-96 min-w-52 px-3"
content={
<LastLoginSection
lastLoginAuthMethod={lastLoginAuthMethod}
@@ -543,7 +543,7 @@ export const OrgMembersTable = ({
>
<FontAwesomeIcon
icon={faInfoCircle}
className="text-mineshaft-400 ml-2 opacity-0 transition-all group-hover:opacity-100"
className="ml-2 text-mineshaft-400 opacity-0 transition-all group-hover:opacity-100"
/>
</Tooltip>
)}
@@ -561,7 +561,7 @@ export const OrgMembersTable = ({
<Select
value={role === "custom" ? findRoleFromId(roleId)?.slug : role}
isDisabled={userId === u?.id || !isAllowed}
className="bg-mineshaft-700 h-8 w-48"
className="h-8 w-48 bg-mineshaft-700"
position="popper"
dropdownContainerClassName="border border-mineshaft-600 bg-mineshaft-800"
onValueChange={(selectedRole) =>
@@ -594,7 +594,7 @@ export const OrgMembersTable = ({
{(isAllowed) => (
<Button
isDisabled={!isAllowed || isResendInvitePending}
className="border-mineshaft-600 bg-mineshaft-700 h-8 font-normal"
className="h-8 border-mineshaft-600 bg-mineshaft-700 font-normal"
colorSchema="primary"
variant="outline_bg"
isLoading={
@@ -198,9 +198,9 @@ export const OrgRoleTable = () => {
orderDirection === OrderByDirection.DESC && orderBy === col ? faArrowUp : faArrowDown;
return (
<div className="border-mineshaft-600 bg-mineshaft-900 rounded-lg border p-4">
<div className="rounded-lg border border-mineshaft-600 bg-mineshaft-900 p-4">
<div className="mb-4 flex items-center justify-between">
<p className="text-mineshaft-100 text-xl font-medium">Organization Roles</p>
<p className="text-xl font-medium text-mineshaft-100">Organization Roles</p>
<OrgPermissionCan I={OrgPermissionActions.Create} a={OrgPermissionSubjects.Role}>
{(isAllowed) => (
<Button
@@ -282,7 +282,7 @@ export const OrgRoleTable = () => {
return (
<Tr
key={`role-list-${id}`}
className="hover:bg-mineshaft-700 h-10 cursor-pointer transition-colors duration-100"
className="h-10 cursor-pointer transition-colors duration-100 hover:bg-mineshaft-700"
onClick={() =>
navigate({
to: "/organization/roles/$roleId",
@@ -312,7 +312,7 @@ export const OrgRoleTable = () => {
{slug}
</Td>
<Td>
<Badge className="bg-mineshaft-400/50 text-bunker-200 w-min whitespace-nowrap">
<Badge className="w-min bg-mineshaft-400/50 whitespace-nowrap text-bunker-200">
{isCustomProjectRole(slug) ? "Custom" : "Default"}
</Badge>
</Td>
@@ -73,15 +73,15 @@ export const UpgradePrivilegeSystemModal = ({ isOpen, onOpenChange }: Props) =>
<ModalContent title="Privilege Management System Upgrade" className="max-w-2xl">
{step === "info" ? (
<div className="mb-4">
<p className="text-mineshaft-300 mb-4 text-sm">
<p className="mb-4 text-sm text-mineshaft-300">
We&apos;ve developed an improved privilege management system that enhances how access
controls work in your organization.
</p>
<div className="border-mineshaft-600 bg-mineshaft-800 mb-4 rounded-lg border p-4">
<div className="mb-4 rounded-lg border border-mineshaft-600 bg-mineshaft-800 p-4">
<div className="mb-3">
<div className="mb-3">
<p className="text-mineshaft-300 mb-3 text-sm">
<p className="mb-3 text-sm text-mineshaft-300">
<strong>Current system: </strong>
Users with higher privilege levels can modify access for anyone below them. This
rigid hierarchy makes it difficult to implement precise access control policies,
@@ -89,7 +89,7 @@ export const UpgradePrivilegeSystemModal = ({ isOpen, onOpenChange }: Props) =>
specialized roles (like team leads) need to manage their team&apos;s access
without receiving broader administrative powers.
</p>
<p className="text-mineshaft-300 text-sm">
<p className="text-sm text-mineshaft-300">
<strong>New system:</strong> Users need explicit permission to modify specific
access levels, providing targeted control. After upgrading, you&apos;ll need to
grant the new &apos;Grant Privileges&apos; permission. At the organization
@@ -98,7 +98,7 @@ export const UpgradePrivilegeSystemModal = ({ isOpen, onOpenChange }: Props) =>
href="https://infisical.com/docs/internals/permissions/organization-permissions#subject%3A-groups"
target="_blank"
rel="noreferrer"
className="hover:text-bunker-200 hover:decoration-primary-700 underline"
className="underline hover:text-bunker-200 hover:decoration-primary-700"
>
Group
</a>{" "}
@@ -107,7 +107,7 @@ export const UpgradePrivilegeSystemModal = ({ isOpen, onOpenChange }: Props) =>
href="https://infisical.com/docs/internals/permissions/organization-permissions#subject%3A-identity"
target="_blank"
rel="noreferrer"
className="hover:text-bunker-200 hover:decoration-primary-700 underline"
className="underline hover:text-bunker-200 hover:decoration-primary-700"
>
Identity
</a>{" "}
@@ -116,7 +116,7 @@ export const UpgradePrivilegeSystemModal = ({ isOpen, onOpenChange }: Props) =>
href="https://infisical.com/docs/internals/permissions/project-permissions#subject%3A-member"
target="_blank"
rel="noreferrer"
className="hover:text-bunker-200 hover:decoration-primary-700 underline"
className="underline hover:text-bunker-200 hover:decoration-primary-700"
>
Member,
</a>{" "}
@@ -124,7 +124,7 @@ export const UpgradePrivilegeSystemModal = ({ isOpen, onOpenChange }: Props) =>
href="https://infisical.com/docs/internals/permissions/project-permissions#subject%3A-groups"
target="_blank"
rel="noreferrer"
className="hover:text-bunker-200 hover:decoration-primary-700 underline"
className="underline hover:text-bunker-200 hover:decoration-primary-700"
>
Group,
</a>{" "}
@@ -133,7 +133,7 @@ export const UpgradePrivilegeSystemModal = ({ isOpen, onOpenChange }: Props) =>
href="https://infisical.com/docs/internals/permissions/project-permissions#subject%3A-identity"
target="_blank"
rel="noreferrer"
className="hover:text-bunker-200 hover:decoration-primary-700 underline"
className="underline hover:text-bunker-200 hover:decoration-primary-700"
>
Identity
</a>{" "}
@@ -149,7 +149,7 @@ export const UpgradePrivilegeSystemModal = ({ isOpen, onOpenChange }: Props) =>
variant="solid"
colorSchema="primary"
size="md"
className="bg-primary hover:bg-primary-600 w-[120px]"
className="w-[120px] bg-primary hover:bg-primary-600"
>
Continue
</Button>
@@ -157,19 +157,19 @@ export const UpgradePrivilegeSystemModal = ({ isOpen, onOpenChange }: Props) =>
</div>
) : (
<div className="mb-4">
<p className="text-mineshaft-300 mb-4 text-sm">
<p className="mb-4 text-sm text-mineshaft-300">
Your existing access control workflows will continue to function. However, actions
that involve modifying privileges or permissions will now use the new permission-based
system, requiring users to have explicit permission to modify given resource.
</p>
<p className="text-mineshaft-300 mb-4 text-sm">
<p className="mb-4 text-sm text-mineshaft-300">
This upgrade affects operations like updating roles, managing group memberships, and
modifying privileges across your organization and projects.
</p>
<div className="border-mineshaft-600 bg-mineshaft-800 mb-4 rounded-lg border p-4">
<p className="text-mineshaft-300 mb-4 text-sm">
<div className="mb-4 rounded-lg border border-mineshaft-600 bg-mineshaft-800 p-4">
<p className="mb-4 text-sm text-mineshaft-300">
Once upgraded, your organization <span className="font-bold">cannot</span> revert to
the legacy privilege system. Please ensure you&apos;ve completed all preparations
before proceeding.
@@ -268,7 +268,7 @@ export const UpgradePrivilegeSystemModal = ({ isOpen, onOpenChange }: Props) =>
<button
type="button"
onClick={() => setStep("info")}
className="text-mineshaft-300 hover:text-mineshaft-200 w-[120px] text-sm"
className="w-[120px] text-sm text-mineshaft-300 hover:text-mineshaft-200"
>
Cancel
</button>
@@ -285,7 +285,7 @@ export const UpgradePrivilegeSystemModal = ({ isOpen, onOpenChange }: Props) =>
variant="solid"
colorSchema="primary"
size="md"
className="bg-primary hover:bg-primary-600 w-[120px]"
className="w-[120px] bg-primary hover:bg-primary-600"
isDisabled={!isAllChecksCompleted || !isAdmin}
isLoading={isSubmitting}
>