Remove default role configuration

Signed-off-by: Bryan Frimin <bryan@getprobo.com>
This commit is contained in:
Bryan Frimin
2025-10-29 20:03:06 +01:00
parent eb49e27724
commit 8bf82331e8
17 changed files with 27 additions and 221 deletions

View File

@@ -30,7 +30,6 @@ const createSAMLConfigurationMutation = graphql`
attributeFirstname
attributeLastname
attributeRole
defaultRole
autoSignupEnabled
createdAt
updatedAt
@@ -61,7 +60,6 @@ const updateSAMLConfigurationMutation = graphql`
attributeFirstname
attributeLastname
attributeRole
defaultRole
autoSignupEnabled
createdAt
updatedAt

View File

@@ -1,5 +1,5 @@
/**
* @generated SignedSource<<220f85396d6d4c5c04f730d07aaa42e1>>
* @generated SignedSource<<11a62d34dafa502e3a464b91e12728ea>>
* @lightSyntaxTransform
* @nogrep
*/
@@ -621,13 +621,6 @@ return {
"name": "attributeRole",
"storageKey": null
},
{
"alias": null,
"args": null,
"kind": "ScalarField",
"name": "defaultRole",
"storageKey": null
},
{
"alias": null,
"args": null,
@@ -648,12 +641,12 @@ return {
]
},
"params": {
"cacheID": "782dc2328cea4f0c350427bda92a5615",
"cacheID": "a44a7b84f5f4c569d028f1d88deadb99",
"id": null,
"metadata": {},
"name": "OrganizationGraph_ViewQuery",
"operationKind": "query",
"text": "query OrganizationGraph_ViewQuery(\n $organizationId: ID!\n) {\n node(id: $organizationId) {\n __typename\n ... on Organization {\n id\n name\n ...SettingsPageFragment\n }\n id\n }\n}\n\nfragment DomainSettingsTabFragment on Organization {\n id\n customDomain {\n id\n domain\n sslStatus\n dnsRecords {\n type\n name\n value\n ttl\n purpose\n }\n createdAt\n updatedAt\n sslExpiresAt\n }\n}\n\nfragment GeneralSettingsTabFragment on Organization {\n id\n name\n logoUrl\n horizontalLogoUrl\n description\n websiteUrl\n email\n headquarterAddress\n createdAt\n updatedAt\n}\n\nfragment MembersSettingsTabInvitationsFragment on Organization {\n invitations(first: 20, orderBy: {direction: ASC, field: CREATED_AT}) {\n totalCount\n edges {\n node {\n id\n fullName\n email\n role\n status\n createdAt\n expiresAt\n acceptedAt\n __typename\n }\n cursor\n }\n pageInfo {\n endCursor\n hasNextPage\n hasPreviousPage\n startCursor\n }\n }\n id\n}\n\nfragment MembersSettingsTabMembershipsFragment on Organization {\n memberships(first: 20, orderBy: {direction: ASC, field: CREATED_AT}) {\n totalCount\n edges {\n node {\n id\n fullName\n emailAddress\n role\n authMethod\n createdAt\n __typename\n }\n cursor\n }\n pageInfo {\n endCursor\n hasNextPage\n hasPreviousPage\n startCursor\n }\n }\n id\n}\n\nfragment SAMLSettingsTabFragment on Organization {\n id\n name\n samlConfigurations {\n id\n enabled\n emailDomain\n enforcementPolicy\n domainVerified\n domainVerificationToken\n domainVerifiedAt\n spEntityId\n spAcsUrl\n spMetadataUrl\n testLoginUrl\n idpEntityId\n idpSsoUrl\n idpCertificate\n idpMetadataUrl\n attributeEmail\n attributeFirstname\n attributeLastname\n attributeRole\n defaultRole\n autoSignupEnabled\n }\n}\n\nfragment SettingsPageFragment on Organization {\n id\n name\n ...GeneralSettingsTabFragment\n ...MembersSettingsTabMembershipsFragment\n ...MembersSettingsTabInvitationsFragment\n ...DomainSettingsTabFragment\n ...SAMLSettingsTabFragment\n}\n"
"text": "query OrganizationGraph_ViewQuery(\n $organizationId: ID!\n) {\n node(id: $organizationId) {\n __typename\n ... on Organization {\n id\n name\n ...SettingsPageFragment\n }\n id\n }\n}\n\nfragment DomainSettingsTabFragment on Organization {\n id\n customDomain {\n id\n domain\n sslStatus\n dnsRecords {\n type\n name\n value\n ttl\n purpose\n }\n createdAt\n updatedAt\n sslExpiresAt\n }\n}\n\nfragment GeneralSettingsTabFragment on Organization {\n id\n name\n logoUrl\n horizontalLogoUrl\n description\n websiteUrl\n email\n headquarterAddress\n createdAt\n updatedAt\n}\n\nfragment MembersSettingsTabInvitationsFragment on Organization {\n invitations(first: 20, orderBy: {direction: ASC, field: CREATED_AT}) {\n totalCount\n edges {\n node {\n id\n fullName\n email\n role\n status\n createdAt\n expiresAt\n acceptedAt\n __typename\n }\n cursor\n }\n pageInfo {\n endCursor\n hasNextPage\n hasPreviousPage\n startCursor\n }\n }\n id\n}\n\nfragment MembersSettingsTabMembershipsFragment on Organization {\n memberships(first: 20, orderBy: {direction: ASC, field: CREATED_AT}) {\n totalCount\n edges {\n node {\n id\n fullName\n emailAddress\n role\n authMethod\n createdAt\n __typename\n }\n cursor\n }\n pageInfo {\n endCursor\n hasNextPage\n hasPreviousPage\n startCursor\n }\n }\n id\n}\n\nfragment SAMLSettingsTabFragment on Organization {\n id\n name\n samlConfigurations {\n id\n enabled\n emailDomain\n enforcementPolicy\n domainVerified\n domainVerificationToken\n domainVerifiedAt\n spEntityId\n spAcsUrl\n spMetadataUrl\n testLoginUrl\n idpEntityId\n idpSsoUrl\n idpCertificate\n idpMetadataUrl\n attributeEmail\n attributeFirstname\n attributeLastname\n attributeRole\n autoSignupEnabled\n }\n}\n\nfragment SettingsPageFragment on Organization {\n id\n name\n ...GeneralSettingsTabFragment\n ...MembersSettingsTabMembershipsFragment\n ...MembersSettingsTabInvitationsFragment\n ...DomainSettingsTabFragment\n ...SAMLSettingsTabFragment\n}\n"
}
};
})();

View File

@@ -1,5 +1,5 @@
/**
* @generated SignedSource<<9232c5fa755e56b6a1ecdcdd51ad83db>>
* @generated SignedSource<<96f7708613cbb65e52114d120499ed46>>
* @lightSyntaxTransform
* @nogrep
*/
@@ -16,7 +16,6 @@ export type CreateSAMLConfigurationInput = {
attributeLastname?: string | null | undefined;
attributeRole?: string | null | undefined;
autoSignupEnabled?: boolean | null | undefined;
defaultRole?: string | null | undefined;
emailDomain: string;
enforcementPolicy: SAMLEnforcementPolicy;
idpCertificate?: string | null | undefined;
@@ -40,7 +39,6 @@ export type SAMLConfigurationGraphCreateMutation$data = {
readonly attributeRole: string;
readonly autoSignupEnabled: boolean;
readonly createdAt: any;
readonly defaultRole: string;
readonly emailDomain: string;
readonly enabled: boolean;
readonly enforcementPolicy: SAMLEnforcementPolicy;
@@ -205,13 +203,6 @@ v1 = [
"name": "attributeRole",
"storageKey": null
},
{
"alias": null,
"args": null,
"kind": "ScalarField",
"name": "defaultRole",
"storageKey": null
},
{
"alias": null,
"args": null,
@@ -258,16 +249,16 @@ return {
"selections": (v1/*: any*/)
},
"params": {
"cacheID": "71d5f80565cc8bc4cef0382c315b8cb1",
"cacheID": "1ee756f7dd01d0faf7f23b8291f70c20",
"id": null,
"metadata": {},
"name": "SAMLConfigurationGraphCreateMutation",
"operationKind": "mutation",
"text": "mutation SAMLConfigurationGraphCreateMutation(\n $input: CreateSAMLConfigurationInput!\n) {\n createSAMLConfiguration(input: $input) {\n samlConfiguration {\n id\n enabled\n emailDomain\n enforcementPolicy\n spEntityId\n spAcsUrl\n spMetadataUrl\n testLoginUrl\n idpEntityId\n idpSsoUrl\n idpCertificate\n idpMetadataUrl\n attributeEmail\n attributeFirstname\n attributeLastname\n attributeRole\n defaultRole\n autoSignupEnabled\n createdAt\n updatedAt\n }\n }\n}\n"
"text": "mutation SAMLConfigurationGraphCreateMutation(\n $input: CreateSAMLConfigurationInput!\n) {\n createSAMLConfiguration(input: $input) {\n samlConfiguration {\n id\n enabled\n emailDomain\n enforcementPolicy\n spEntityId\n spAcsUrl\n spMetadataUrl\n testLoginUrl\n idpEntityId\n idpSsoUrl\n idpCertificate\n idpMetadataUrl\n attributeEmail\n attributeFirstname\n attributeLastname\n attributeRole\n autoSignupEnabled\n createdAt\n updatedAt\n }\n }\n}\n"
}
};
})();
(node as any).hash = "04237f5ad3588264149310798d6137f2";
(node as any).hash = "43058268e0b04e8b8a83ce91b8908bf7";
export default node;

View File

@@ -1,5 +1,5 @@
/**
* @generated SignedSource<<694befcb248cbb23e66b9555626f223b>>
* @generated SignedSource<<700f12180d1cfa94050704af029b84d7>>
* @lightSyntaxTransform
* @nogrep
*/
@@ -16,7 +16,6 @@ export type UpdateSAMLConfigurationInput = {
attributeLastname?: string | null | undefined;
attributeRole?: string | null | undefined;
autoSignupEnabled?: boolean | null | undefined;
defaultRole?: string | null | undefined;
enabled?: boolean | null | undefined;
enforcementPolicy?: SAMLEnforcementPolicy | null | undefined;
id: string;
@@ -39,7 +38,6 @@ export type SAMLConfigurationGraphUpdateMutation$data = {
readonly attributeRole: string;
readonly autoSignupEnabled: boolean;
readonly createdAt: any;
readonly defaultRole: string;
readonly emailDomain: string;
readonly enabled: boolean;
readonly enforcementPolicy: SAMLEnforcementPolicy;
@@ -204,13 +202,6 @@ v1 = [
"name": "attributeRole",
"storageKey": null
},
{
"alias": null,
"args": null,
"kind": "ScalarField",
"name": "defaultRole",
"storageKey": null
},
{
"alias": null,
"args": null,
@@ -257,16 +248,16 @@ return {
"selections": (v1/*: any*/)
},
"params": {
"cacheID": "c9e4055888055b109aa71b665c9544ca",
"cacheID": "f8407666643c559232d42e8302c1e917",
"id": null,
"metadata": {},
"name": "SAMLConfigurationGraphUpdateMutation",
"operationKind": "mutation",
"text": "mutation SAMLConfigurationGraphUpdateMutation(\n $input: UpdateSAMLConfigurationInput!\n) {\n updateSAMLConfiguration(input: $input) {\n samlConfiguration {\n id\n enabled\n emailDomain\n enforcementPolicy\n spEntityId\n spAcsUrl\n spMetadataUrl\n testLoginUrl\n idpEntityId\n idpSsoUrl\n idpCertificate\n idpMetadataUrl\n attributeEmail\n attributeFirstname\n attributeLastname\n attributeRole\n defaultRole\n autoSignupEnabled\n createdAt\n updatedAt\n }\n }\n}\n"
"text": "mutation SAMLConfigurationGraphUpdateMutation(\n $input: UpdateSAMLConfigurationInput!\n) {\n updateSAMLConfiguration(input: $input) {\n samlConfiguration {\n id\n enabled\n emailDomain\n enforcementPolicy\n spEntityId\n spAcsUrl\n spMetadataUrl\n testLoginUrl\n idpEntityId\n idpSsoUrl\n idpCertificate\n idpMetadataUrl\n attributeEmail\n attributeFirstname\n attributeLastname\n attributeRole\n autoSignupEnabled\n createdAt\n updatedAt\n }\n }\n}\n"
}
};
})();
(node as any).hash = "d572af05811d6a05cdd4446fe175894d";
(node as any).hash = "c246d5e0bbebabf2bfbba5465e937f44";
export default node;

View File

@@ -62,7 +62,6 @@ const samlSettingsTabFragment = graphql`
attributeFirstname
attributeLastname
attributeRole
defaultRole
autoSignupEnabled
}
}
@@ -85,7 +84,6 @@ const samlConfigSchema = z.object({
attributeFirstname: z.string().optional(),
attributeLastname: z.string().optional(),
attributeRole: z.string().optional(),
defaultRole: z.string().optional(),
autoSignupEnabled: z.boolean().default(false),
});
@@ -157,7 +155,6 @@ export default function SAMLSettingsTab() {
attributeFirstname: editingConfig.attributeFirstname || "http://schemas.xmlsoap.org/ws/2005/05/identity/claims/givenname",
attributeLastname: editingConfig.attributeLastname || "http://schemas.xmlsoap.org/ws/2005/05/identity/claims/surname",
attributeRole: editingConfig.attributeRole || "http://schemas.xmlsoap.org/ws/2005/05/identity/claims/role",
defaultRole: editingConfig.defaultRole || "MEMBER",
autoSignupEnabled: editingConfig.autoSignupEnabled || false,
}
: {
@@ -171,7 +168,6 @@ export default function SAMLSettingsTab() {
attributeFirstname: "http://schemas.xmlsoap.org/ws/2005/05/identity/claims/givenname",
attributeLastname: "http://schemas.xmlsoap.org/ws/2005/05/identity/claims/surname",
attributeRole: "http://schemas.xmlsoap.org/ws/2005/05/identity/claims/role",
defaultRole: "MEMBER",
autoSignupEnabled: false,
},
});
@@ -189,7 +185,6 @@ export default function SAMLSettingsTab() {
attributeFirstname: editingConfig.attributeFirstname || "http://schemas.xmlsoap.org/ws/2005/05/identity/claims/givenname",
attributeLastname: editingConfig.attributeLastname || "http://schemas.xmlsoap.org/ws/2005/05/identity/claims/surname",
attributeRole: editingConfig.attributeRole || "http://schemas.xmlsoap.org/ws/2005/05/identity/claims/role",
defaultRole: editingConfig.defaultRole || "MEMBER",
autoSignupEnabled: editingConfig.autoSignupEnabled || false,
});
initiateForm.reset({
@@ -207,7 +202,6 @@ export default function SAMLSettingsTab() {
attributeFirstname: "http://schemas.xmlsoap.org/ws/2005/05/identity/claims/givenname",
attributeLastname: "http://schemas.xmlsoap.org/ws/2005/05/identity/claims/surname",
attributeRole: "http://schemas.xmlsoap.org/ws/2005/05/identity/claims/role",
defaultRole: "MEMBER",
autoSignupEnabled: false,
});
initiateForm.reset({
@@ -263,7 +257,6 @@ export default function SAMLSettingsTab() {
attributeFirstname: data.attributeFirstname || "http://schemas.xmlsoap.org/ws/2005/05/identity/claims/givenname",
attributeLastname: data.attributeLastname || "http://schemas.xmlsoap.org/ws/2005/05/identity/claims/surname",
attributeRole: data.attributeRole || "http://schemas.xmlsoap.org/ws/2005/05/identity/claims/role",
defaultRole: data.defaultRole || "MEMBER",
autoSignupEnabled: data.autoSignupEnabled || false,
},
},
@@ -286,7 +279,6 @@ export default function SAMLSettingsTab() {
attributeFirstname: data.attributeFirstname || "http://schemas.xmlsoap.org/ws/2005/05/identity/claims/givenname",
attributeLastname: data.attributeLastname || "http://schemas.xmlsoap.org/ws/2005/05/identity/claims/surname",
attributeRole: data.attributeRole || "http://schemas.xmlsoap.org/ws/2005/05/identity/claims/role",
defaultRole: data.defaultRole || "MEMBER",
autoSignupEnabled: data.autoSignupEnabled || false,
},
},
@@ -701,23 +693,6 @@ export default function SAMLSettingsTab() {
</div>
</div>
<div>
<h3 className="text-base font-medium mb-4">
{__("Default Role")}
</h3>
<div className="space-y-4">
<Field
{...form.register("defaultRole")}
label={__("Default Role")}
placeholder="MEMBER"
error={form.formState.errors.defaultRole?.message}
/>
<p className="text-xs text-gray-500">
{__("The IdP must provide roles directly (OWNER, ADMIN, MEMBER, VIEWER). This default role will be used when the role attribute is missing or invalid.")}
</p>
</div>
</div>
<div>
<Controller
control={form.control}

View File

@@ -1,5 +1,5 @@
/**
* @generated SignedSource<<0b3ea1127a3a6388e6d0802abea0307c>>
* @generated SignedSource<<ad8f1e5fd866cefc124b7b7c78bce367>>
* @lightSyntaxTransform
* @nogrep
*/
@@ -20,7 +20,6 @@ export type SAMLSettingsTabFragment$data = {
readonly attributeLastname: string;
readonly attributeRole: string;
readonly autoSignupEnabled: boolean;
readonly defaultRole: string;
readonly domainVerificationToken: string | null | undefined;
readonly domainVerified: boolean;
readonly domainVerifiedAt: any | null | undefined;
@@ -201,13 +200,6 @@ return {
"name": "attributeRole",
"storageKey": null
},
{
"alias": null,
"args": null,
"kind": "ScalarField",
"name": "defaultRole",
"storageKey": null
},
{
"alias": null,
"args": null,
@@ -224,6 +216,6 @@ return {
};
})();
(node as any).hash = "691298e053f77bcb6ef13a5869a86579";
(node as any).hash = "eec380838cfd22d70a504028bb5046b4";
export default node;