in pkg/client/keycloak/adapter/gocloak_adapter_auth_flow.go [533:568]
func (a GoCloakAdapter) unsetBrowserFlow(realmName, flowAlias string) (realm *gocloak.RealmRepresentation, isBrowserFlowUnset bool, err error) {
realm, err = a.client.GetRealm(context.Background(), a.token.AccessToken, realmName)
if err != nil {
return nil, false, errors.Wrapf(err, "unable to get realm: %s", realmName)
}
if realm.BrowserFlow == nil || *realm.BrowserFlow != flowAlias {
return realm, false, nil
}
authFlows, err := a.GetRealmAuthFlows(realmName)
if err != nil {
return nil, false, errors.Wrapf(err, "unable to get auth flows for realm: %s", realmName)
}
var replaceFlow *KeycloakAuthFlow
for i := range authFlows {
if authFlows[i].Alias != flowAlias {
replaceFlow = &authFlows[i]
break
}
}
if replaceFlow == nil {
return nil, false,
errors.Errorf("unable to delete auth flow: %s, no replacement for browser flow found", flowAlias)
}
realm.BrowserFlow = &replaceFlow.Alias
if err := a.client.UpdateRealm(context.Background(), a.token.AccessToken, *realm); err != nil {
return nil, false, errors.Wrapf(err, "unable to update realm: %s", realmName)
}
return realm, true, nil
}