-
Notifications
You must be signed in to change notification settings - Fork 261
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Hide rule-based password expiry for users missing required scopes #7224
base: master
Are you sure you want to change the base?
Hide rule-based password expiry for users missing required scopes #7224
Conversation
🦋 Changeset detectedThe changes in this PR will be included in the next version bump. Not sure what this means? Click here to learn what changesets are. |
Codecov ReportAll modified and coverable lines are covered by tests ✅
Additional details and impacted files@@ Coverage Diff @@
## master #7224 +/- ##
=======================================
Coverage 32.32% 32.32%
=======================================
Files 42 42
Lines 897 897
Branches 221 204 -17
=======================================
Hits 290 290
Misses 607 607
Flags with carried forward coverage won't be shown. Click here to find out more. |
* These scopes are checked to determine whether to display the new rule-based password expiry configuration UI. | ||
* If these scopes are not available, legacy password expiry configuration will be shown for backward compatibility. | ||
*/ | ||
public static readonly RULE_BASED_PASSWORD_EXPIRY_REQUIRED_SCOPES: string[] = [ |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Let's add a new feature object for this in the deployment config instead, so that deployment config would be the single source for maintaining scopes on the frontend
@@ -137,6 +136,10 @@ export const ValidationConfigEditPage: FunctionComponent<MyAccountSettingsEditPa | |||
const [ legacyPasswordPolicies, setLegacyPasswordPolicies ] = useState<ConnectorPropertyInterface[]>([]); | |||
|
|||
const isReadOnly: boolean = !useRequiredScopes(featureConfig?.governanceConnectors?.scopes?.update); | |||
const hasScopesForRuleBasedPasswordExpiry: boolean = |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Let's follow the convention.
const hasScopesForRuleBasedPasswordExpiry: boolean = | |
const hasRuleBasedPasswordExpiryReadPermissions: boolean = |
@@ -137,6 +136,10 @@ export const ValidationConfigEditPage: FunctionComponent<MyAccountSettingsEditPa | |||
const [ legacyPasswordPolicies, setLegacyPasswordPolicies ] = useState<ConnectorPropertyInterface[]>([]); | |||
|
|||
const isReadOnly: boolean = !useRequiredScopes(featureConfig?.governanceConnectors?.scopes?.update); | |||
const hasScopesForRuleBasedPasswordExpiry: boolean = | |||
useRequiredScopes(ValidationConfigConstants.RULE_BASED_PASSWORD_EXPIRY_REQUIRED_SCOPES); | |||
const isRuleBasedPasswordExpiryDisabled: boolean = disabledFeatures?.includes("ruleBasedPasswordExpiry") |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Let's add "ruleBasedPasswordExpiry"
string to the feature dictionary and use the constant here.
Ref. impl:
identity-apps/features/admin.applications.v1/constants/application-management.ts
Lines 70 to 88 in c3dc6bf
public static readonly FEATURE_DICTIONARY: Map<string, string> = new Map<string, string>() | |
.set("APPLICATION_ADD", "application.add") | |
.set("APPLICATION_EDIT", "application.edit") | |
.set("APPLICATION_EDIT_GENERAL_SETTINGS", "application.edit.generalSettings") | |
.set("APPLICATION_EDIT_ACCESS_CONFIG", "applications.edit.accessConfiguration") | |
.set("APPLICATION_EDIT_ATTRIBUTE_MAPPING", "applications.edit.attributeMapping") | |
.set("APPLICATION_EDIT_SIGN_ON_METHOD_CONFIG", "applications.edit.signOnMethodConfiguration") | |
.set("APPLICATION_EDIT_PROVISIONING_SETTINGS", "applications.edit.provisioningSettings") | |
.set("APPLICATION_EDIT_ADVANCED_SETTINGS", "applications.edit.advancedSettings") | |
.set("APPLICATION_SHARED_ACCESS", "applications.edit.sharedAccess") | |
.set("APPLICATION_EDIT_INFO", "applications.edit.info") | |
.set("FAPI_APP_CREATION", "applications.create.fapi") | |
.set("APPLICATION_NATIVE_AUTHENTICATION", "applications.native.authentication") | |
.set("APPLICATION_MYACCOUNT_SAAS_SETTINGS", "applications.myaccount.saasMyaccountSettings") | |
.set("APPLICATION_ADD_MANAGEMENT_APPLICATIONS", "applications.add.managementApplications") | |
.set("APPLICATIONS_SETTINGS", "applications.settings") | |
.set("TRUSTED_APPS", "applications.trustedApps") | |
.set("APPLICATION_ACCESSTOKEN_ATTRIBUTES", "applications.accessTokenAttributes") | |
.set("APPLICATION_OUTDATED_APP_BANNER", "applications.outdatedAppBanner"); |
if (!isRuleBasedPasswordExpiryDisabled) { | ||
processedFormValues = { | ||
...values, | ||
passwordExpiryEnabled: passwordExpiryEnabled, |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
This is already added in L608, isn't it?
@@ -600,14 +603,21 @@ export const ValidationConfigEditPage: FunctionComponent<MyAccountSettingsEditPa | |||
): void => { | |||
if (hasPasswordExpiryRuleErrors) return; | |||
|
|||
const processedFormValues: ValidationFormInterface = { | |||
let processedFormValues: ValidationFormInterface = { |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
We can keep this const and add new object properties.
const obj = {
a: "b",
c: "d"
}
obj.e = "f"
Purpose
The initial plan was to modify the token issuance logic to include these missing scopes in the console user token. However, this approach was revised. Instead of requiring these scopes, we decided to hide rule-based password expiry functionality for users without these permissions.
Screen.Recording.2024-12-19.at.10.13.58.mov
Related Issues
Related PRs
Checklist
Security checks