mirror of
https://github.com/keycloak/keycloak.git
synced 2026-01-25 16:42:34 +00:00
Attribute is required only if the corresponding field in the metadata is set
Close #36241 Signed-off-by: Pedro Igor <pigor.craveiro@gmail.com>
This commit is contained in:
@@ -90,34 +90,9 @@ export function setUserProfileServerError<T>(
|
||||
|
||||
export function isRequiredAttribute({
|
||||
required,
|
||||
validators,
|
||||
}: UserProfileAttributeMetadata): boolean {
|
||||
// Check if required is true or if the validators include a validation that would make the attribute implicitly required.
|
||||
return required || hasRequiredValidators(validators);
|
||||
}
|
||||
|
||||
/**
|
||||
* Checks whether the given validators include a validation that would make the attribute implicitly required.
|
||||
*/
|
||||
function hasRequiredValidators(
|
||||
validators?: UserProfileAttributeMetadata["validators"],
|
||||
): boolean {
|
||||
// If we don't have any validators, the attribute is not required.
|
||||
if (!validators) {
|
||||
return false;
|
||||
}
|
||||
|
||||
// If the 'length' validator is defined and has a minimal length greater than zero the attribute is implicitly required.
|
||||
// We have to do a lot of defensive coding here, because we don't have type information for the validators.
|
||||
if (
|
||||
"length" in validators &&
|
||||
"min" in validators.length &&
|
||||
typeof validators.length.min === "number"
|
||||
) {
|
||||
return validators.length.min > 0;
|
||||
}
|
||||
|
||||
return false;
|
||||
// Check if required is true
|
||||
return required as boolean;
|
||||
}
|
||||
|
||||
export function isUserProfileError(error: unknown): error is UserProfileError {
|
||||
|
||||
Reference in New Issue
Block a user