diff --git a/backend/src/server/routes/v1/admin-router.ts b/backend/src/server/routes/v1/admin-router.ts
index 9a3480288..e6da3ad73 100644
--- a/backend/src/server/routes/v1/admin-router.ts
+++ b/backend/src/server/routes/v1/admin-router.ts
@@ -109,7 +109,8 @@ export const registerAdminRouter = async (server: FastifyZodProvider) => {
firstName: true,
lastName: true,
email: true,
- id: true
+ id: true,
+ superAdmin: true
}).array()
})
}
diff --git a/backend/src/server/routes/v1/organization-router.ts b/backend/src/server/routes/v1/organization-router.ts
index 7a8d1ad89..e7e5fb532 100644
--- a/backend/src/server/routes/v1/organization-router.ts
+++ b/backend/src/server/routes/v1/organization-router.ts
@@ -211,7 +211,8 @@ export const registerOrgRouter = async (server: FastifyZodProvider) => {
email: true,
firstName: true,
lastName: true,
- id: true
+ id: true,
+ superAdmin: true
}).merge(z.object({ publicKey: z.string().nullable() }))
})
)
diff --git a/backend/src/services/org/org-dal.ts b/backend/src/services/org/org-dal.ts
index 56134bd11..24f1d55b0 100644
--- a/backend/src/services/org/org-dal.ts
+++ b/backend/src/services/org/org-dal.ts
@@ -106,16 +106,19 @@ export const orgDALFactory = (db: TDbClient) => {
db.ref("firstName").withSchema(TableName.Users),
db.ref("lastName").withSchema(TableName.Users),
db.ref("id").withSchema(TableName.Users).as("userId"),
+ db.ref("superAdmin").withSchema(TableName.Users),
db.ref("publicKey").withSchema(TableName.UserEncryptionKey)
)
.where({ isGhost: false }) // MAKE SURE USER IS NOT A GHOST USER
.orderBy("firstName")
.orderBy("lastName");
- return members.map(({ email, isEmailVerified, username, firstName, lastName, userId, publicKey, ...data }) => ({
- ...data,
- user: { email, isEmailVerified, username, firstName, lastName, id: userId, publicKey }
- }));
+ return members.map(
+ ({ email, isEmailVerified, username, firstName, lastName, userId, publicKey, superAdmin, ...data }) => ({
+ ...data,
+ user: { email, isEmailVerified, username, firstName, lastName, id: userId, publicKey, superAdmin }
+ })
+ );
} catch (error) {
throw new DatabaseError({ error, name: "Find all org members" });
}
diff --git a/docs/documentation/platform/admin-panel/org-admin-console.mdx b/docs/documentation/platform/admin-panel/org-admin-console.mdx
index e1290fa6b..39d7819a4 100644
--- a/docs/documentation/platform/admin-panel/org-admin-console.mdx
+++ b/docs/documentation/platform/admin-panel/org-admin-console.mdx
@@ -1,32 +1,31 @@
---
title: "Organization Admin Console"
-description: "Manage your Infisical organization from our organization admin console."
+description: "View and manage resources across your organization"
---
-The Organization Admin Console provides a user-friendly interface for Infisical organization admins to manage organization-related configurations.
+
+ The Organization Admin Console can only be accessed by organization members with admin status.
+
+
## Accessing the Organization Admin Console
-Only organization admins have access to the Organization Admin Console.
+On the sidebar, tap on your initials to access the settings dropdown and press the **Organization Admin Console** option.
-
+
-1. Click on the profile icon in the left sidebar.
-2. From the dropdown menu, select `Organization Admin Console`.
+## Projects Tab
-## Projects Section
+The Projects tab lists all the projects within your organization, including those which you are not a member of. You can easily filter projects by name or slug using the search bar.

-The Projects Section lists all projects created within your organization, including those you do not have membership in. You can easily search for a project by name using the search bar.
### Accessing a Project in Your Organization
-If you want to access a project in which you are not a member but are an organization admin, follow these steps:
+You can access a project that you are not a member of by tapping on the options menu of the project row and pressing the **Access** button.
+Doing so will grant you admin permissions for the selected project and add you as a member.

-1. Click on the three-dot icon next to the project you wish to access.
-2. Click on the **Access** button.
-This will grant you admin permissions for the selected project and generate an audit log of your access, ensuring transparency regarding admin privileges.
diff --git a/docs/documentation/platform/admin-panel/overview.mdx b/docs/documentation/platform/admin-panel/overview.mdx
index 0505d6b2a..968728bfc 100644
--- a/docs/documentation/platform/admin-panel/overview.mdx
+++ b/docs/documentation/platform/admin-panel/overview.mdx
@@ -1,17 +1,17 @@
---
-description: "Learn about Infisical's Admin Panel."
+description: "Learn about Infisical's Admin Consoles"
---
-The Infisical Admin Panel allows you to configure and manage various resources within your organization and server.
+Infisical offers a server and organization level console for admins to customize their settings and manage various resources across the platform.
- Configure and manage your server settings effectively.
+ Configure and manage server related features.
- Manage settings specific to your organization.
+ View and access resources across your organization.
diff --git a/docs/documentation/platform/admin-panel/server-admin.mdx b/docs/documentation/platform/admin-panel/server-admin.mdx
index 5b71109ee..bdcfe39a4 100644
--- a/docs/documentation/platform/admin-panel/server-admin.mdx
+++ b/docs/documentation/platform/admin-panel/server-admin.mdx
@@ -1,70 +1,69 @@
---
-title: "Server Admin Panel"
-description: "Manage your Infisical server from the Server Admin Panel."
+title: "Server Admin Console"
+description: "Configure and manage server related features"
---
-The Server Admin Panel provides a user interface for Infisical server administrators to configure various parameters as needed. This includes configuring rate limits, managing allowed signups, and more.
+The Server Admin Console provides **server administrators** with the ability to
+customize settings and manage users for their entire Infisical instance.
-## Accessing the Server Admin Panel
+
+ The first user to setup an account on your Infisical instance is designated as the server administrator by default.
+
-The first user who created the account in Infisical is designated as the server administrator. You can access the admin panel by navigating as follows:
+## Accessing the Server Admin Console
-
-1. Click on the profile icon in the left sidebar.
-2. From the dropdown menu, select `Server Admin Panel`.
+On the sidebar, tap on your initials to access the settings dropdown and press the **Server Admin Console** option.
-## General Section
+
+
+## General Tab
+Configure general settings for your instance.

+
### Allow User Signups
-This setting controls whether users can sign up for your Infisical instance. The options are:
-
-1. **Anyone**: Any user with access to your instance can sign up.
-2. **Disabled**: No one will be able to sign up.
+User signups are enabled by default, allowing **Anyone** with access to your instance to sign up. This can alternatively be **Disabled** to prevent any users from signing up.
### Restrict Signup Domain
-This setting allows only users with specific email domains (such as your organization's domain) to sign up.
+Signup can be restricted to users matching one or more email domains, such as your organization's domain, to control who has access to your instance.
### Default Organization
-Use this setting if you want all users accessing your Infisical instance to log in through your configured SAML/LDAP provider. This prevents users from manually entering their organization slug during authentication and redirects them to the SAML/LDAP authentication page.
+If you're using SAML/LDAP for only one organization on your instance, you can specify a default organization to use at login to skip requiring users to manually enter the organization slug.
### Trust Emails
-By default, Infisical does not trust emails logged in via SAML/LDAP/OIDC due to the potential for email spoofing. Users must verify their email addresses before proceeding. You can disable this validation if you are running an Infisical instance within your organization and trust incoming emails from your members.
+By default, users signing up through SAML/LDAP/OIDC will still need to verify their email address to prevent email spoofing. This requirement can be skipped by enabling the switch to trust logins through the respective method.
-## Authentication Section
+
+## Authentication Tab
+
+From this tab you can configure which login methods are enabled for your instance.

-This section allows you to configure various login and signup methods for your instance.
-## Rate Limit Section
+## Rate Limit Tab
+
+This tab allows you to set various rate limits for your Infisical instance. You do not need to redeploy when making changes to rate limits as these will be propagated automatically.

-Configure the rate limits for your Infisical instance across various endpoints. You do not need to redeploy when making changes to rate limits; they will be automatically synchronized to all instances.
-
+
Note that rate limit configuration is a paid feature. Please contact sales@infisical.com to purchase a license for its use.
-
+
-## User Management Section
+## User Management Tab
+
+From this tab you can view all the users who have signed up for your instance. You can search for users using the search bar and remove them from your instance by pressing the **X** button on their respective row.

-The User Management section lists all users who have signed up for your instance. You can search for users using the search bar.
-
-To delete a user from Infisical:
-
-1. Search for the user.
-2. Click the cross button next to the user.
-3. Confirm the warning popup.
-
-
- Note that user management configuration is a paid feature. Please contact sales@infisical.com to purchase a license for its use.
-
+
+ Note that rate limit configuration is a paid feature. Please contact sales@infisical.com to purchase a license for its use.
+
diff --git a/docs/documentation/platform/ldap/overview.mdx b/docs/documentation/platform/ldap/overview.mdx
index 4502158d0..c1a980b04 100644
--- a/docs/documentation/platform/ldap/overview.mdx
+++ b/docs/documentation/platform/ldap/overview.mdx
@@ -36,7 +36,7 @@ If the documentation for your required identity provider is not shown in the lis
verification step upon their first login.
If you're running a self-hosted instance of Infisical and would like it to trust emails from external identity providers,
- you can configure this behavior in the admin panel.
+ you can configure this behavior in the Server Admin Console.
diff --git a/docs/documentation/platform/sso/overview.mdx b/docs/documentation/platform/sso/overview.mdx
index 4bb45cf48..227a7502f 100644
--- a/docs/documentation/platform/sso/overview.mdx
+++ b/docs/documentation/platform/sso/overview.mdx
@@ -45,7 +45,7 @@ If your required identity provider is not shown in the list above, please reach
verification step upon their first login.
If you're running a self-hosted instance of Infisical and would like it to trust emails from external identity providers,
- you can configure this behavior in the admin panel.
+ you can configure this behavior in the Server Admin Console.
diff --git a/docs/images/platform/admin-panels/access-org-admin-console.png b/docs/images/platform/admin-panels/access-org-admin-console.png
index fc4b3dcc1..057c82944 100644
Binary files a/docs/images/platform/admin-panels/access-org-admin-console.png and b/docs/images/platform/admin-panels/access-org-admin-console.png differ
diff --git a/docs/images/platform/admin-panels/access-server-admin-panel.png b/docs/images/platform/admin-panels/access-server-admin-panel.png
index 65402a176..a27735de0 100644
Binary files a/docs/images/platform/admin-panels/access-server-admin-panel.png and b/docs/images/platform/admin-panels/access-server-admin-panel.png differ
diff --git a/docs/mint.json b/docs/mint.json
index 261bcd746..0d7553b56 100644
--- a/docs/mint.json
+++ b/docs/mint.json
@@ -188,7 +188,7 @@
]
},
{
- "group": "Admin Panel",
+ "group": "Admin Consoles",
"pages": [
"documentation/platform/admin-panel/overview",
"documentation/platform/admin-panel/server-admin",
diff --git a/frontend/src/hooks/api/users/types.ts b/frontend/src/hooks/api/users/types.ts
index c22bc216f..84566efcb 100644
--- a/frontend/src/hooks/api/users/types.ts
+++ b/frontend/src/hooks/api/users/types.ts
@@ -56,6 +56,7 @@ export type OrgUser = {
lastName: string;
id: string;
publicKey: string;
+ superAdmin: boolean;
};
inviteEmail: string;
organization: string;
diff --git a/frontend/src/layouts/AdminLayout/AdminLayout.tsx b/frontend/src/layouts/AdminLayout/AdminLayout.tsx
index f806b6e79..a8320a525 100644
--- a/frontend/src/layouts/AdminLayout/AdminLayout.tsx
+++ b/frontend/src/layouts/AdminLayout/AdminLayout.tsx
@@ -157,7 +157,7 @@ export const AdminLayout = ({ children }: LayoutProps) => {
{user?.superAdmin && (
- Admin Panel
+ Server Admin Console
)}
diff --git a/frontend/src/layouts/AppLayout/AppLayout.tsx b/frontend/src/layouts/AppLayout/AppLayout.tsx
index 6e5c18ea0..09f49652c 100644
--- a/frontend/src/layouts/AppLayout/AppLayout.tsx
+++ b/frontend/src/layouts/AppLayout/AppLayout.tsx
@@ -487,7 +487,7 @@ export const AppLayout = ({ children }: LayoutProps) => {
{user?.superAdmin && (
- Server Admin Panel
+ Server Admin Console
)}
@@ -749,7 +749,8 @@ export const AppLayout = ({ children }: LayoutProps) => {
- {(window.location.origin.includes("https://app.infisical.com") || window.location.origin.includes("https://eu.infisical.com") ||
+ {(window.location.origin.includes("https://app.infisical.com") ||
+ window.location.origin.includes("https://eu.infisical.com") ||
window.location.origin.includes("https://gamma.infisical.com")) && (
diff --git a/frontend/src/views/Org/MembersPage/components/OrgMembersTab/components/OrgMembersSection/OrgMembersTable.tsx b/frontend/src/views/Org/MembersPage/components/OrgMembersTab/components/OrgMembersSection/OrgMembersTable.tsx
index ba7ad7f8e..35758f9ce 100644
--- a/frontend/src/views/Org/MembersPage/components/OrgMembersTab/components/OrgMembersSection/OrgMembersTable.tsx
+++ b/frontend/src/views/Org/MembersPage/components/OrgMembersTab/components/OrgMembersSection/OrgMembersTable.tsx
@@ -7,6 +7,7 @@ import { twMerge } from "tailwind-merge";
import { createNotification } from "@app/components/notifications";
import { OrgPermissionCan } from "@app/components/permissions";
import {
+ Badge,
Button,
DropdownMenu,
DropdownMenuContent,
@@ -188,7 +189,14 @@ export const OrgMembersTable = ({ handlePopUpOpen, setCompleteInviteLinks }: Pro
className="h-10 w-full cursor-pointer transition-colors duration-100 hover:bg-mineshaft-700"
onClick={() => router.push(`/org/${orgId}/memberships/${orgMembershipId}`)}
>
-