Use endpoint for required actions (#2692)

This commit is contained in:
Erik Jan de Wit 2022-05-27 11:26:37 +02:00 committed by GitHub
parent 97d932d832
commit e92ed5b98c
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
2 changed files with 16 additions and 24 deletions

View file

@ -72,9 +72,6 @@
"linkAccountTitle": "Link account to {{provider}}?", "linkAccountTitle": "Link account to {{provider}}?",
"idpLinkSuccess": "Identity provider has been linked", "idpLinkSuccess": "Identity provider has been linked",
"couldNotLinkIdP": "Could not link identity provider {{error}}", "couldNotLinkIdP": "Could not link identity provider {{error}}",
"configureOTP": "Configure OTP",
"updatePassword": "Update Password",
"updateProfile": "Update Profile",
"verifyEmail": "Verify Email", "verifyEmail": "Verify Email",
"updateUserLocale": "Update User Locale", "updateUserLocale": "Update User Locale",
"consents": "Consents", "consents": "Consents",

View file

@ -27,6 +27,7 @@ import { emailRegexPattern } from "../util";
import { GroupPickerDialog } from "../components/group/GroupPickerDialog"; import { GroupPickerDialog } from "../components/group/GroupPickerDialog";
import moment from "moment"; import moment from "moment";
import type RealmRepresentation from "@keycloak/keycloak-admin-client/lib/defs/realmRepresentation"; import type RealmRepresentation from "@keycloak/keycloak-admin-client/lib/defs/realmRepresentation";
import type RequiredActionProviderRepresentation from "@keycloak/keycloak-admin-client/lib/defs/requiredActionProviderRepresentation";
export type BruteForced = { export type BruteForced = {
isBruteForceProtected?: boolean; isBruteForceProtected?: boolean;
@ -75,17 +76,22 @@ export const UserForm = ({
const [open, setOpen] = useState(false); const [open, setOpen] = useState(false);
const [locked, setLocked] = useState(isLocked); const [locked, setLocked] = useState(isLocked);
const [realm, setRealm] = useState<RealmRepresentation>(); const [realm, setRealm] = useState<RealmRepresentation>();
const [requiredActions, setRequiredActions] = useState<
RequiredActionProviderRepresentation[]
>([]);
useFetch( useFetch(
async () => { () =>
const realm = await adminClient.realms.findOne({ realm: realmName }); Promise.all([
adminClient.realms.findOne({ realm: realmName }),
adminClient.authenticationManagement.getRequiredActions(),
]),
([realm, actions]) => {
if (!realm) { if (!realm) {
throw new Error(t("common:notFound")); throw new Error(t("common:notFound"));
} }
return realm;
},
(realm) => {
setRealm(realm); setRealm(realm);
setRequiredActions(actions);
}, },
[] []
); );
@ -99,21 +105,6 @@ export const UserForm = ({
} }
}; };
const requiredUserActionsOptions = [
<SelectOption key={0} value="CONFIGURE_TOTP">
{t("configureOTP")}
</SelectOption>,
<SelectOption key={1} value="UPDATE_PASSWORD">
{t("updatePassword")}
</SelectOption>,
<SelectOption key={2} value="UPDATE_PROFILE">
{t("updateProfile")}
</SelectOption>,
<SelectOption key={3} value="VERIFY_EMAIL">
{t("verifyEmail")}
</SelectOption>,
];
const clearSelection = () => { const clearSelection = () => {
setRequiredUserActionsDropdownOpen(false); setRequiredUserActionsDropdownOpen(false);
}; };
@ -372,7 +363,11 @@ export const UserForm = ({
onClear={clearSelection} onClear={clearSelection}
variant="typeaheadmulti" variant="typeaheadmulti"
> >
{requiredUserActionsOptions} {requiredActions.map(({ alias, name }) => (
<SelectOption key={alias} value={alias}>
{name}
</SelectOption>
))}
</Select> </Select>
)} )}
/> />