User Account Management
Last updated
Was this helpful?
Last updated
Was this helpful?
Was this helpful?
import { createKeycloakUtils } from "oidc-spa/keycloak";
const keycloakUtils = createKeycloakUtils({ issuerUri: oidc.issuerUri });
const accountLinkUrl = keycloakUtils.getAccountUrl({
clientId: oidc.clientId,
validRedirectUri: oidc.validRedirectUri,
locale: "en" // Optional
});const { issuerUri, clientId, validRedirectUri } = useOidc();
const keycloakUtils = createKeycloakUtils({ issuerUri });
const accountLinkUrl = keycloakUtils.getAccountUrl({
clientId,
validRedirectUri,
locale: "en" // Optional
});import { Oidc } from './services/oidc.service';
@Component({
selector: 'app-root',
templateUrl: './app.html',
})
export class App {
oidc = inject(Oidc);
keycloakUtils = createKeycloakUtils({
issuerUri: this.oidc.issuerUri,
});
accountUrl = this.keycloakUtils.getAccountUrl({
clientId: this.oidc.clientId,
validRedirectUri: this.oidc.validRedirectUri,
locale: "en" // Optional
})
}import { createOidc } from "oidc-spa";
import { parseKeycloakIssuerUri } from "oidc-spa/tools/parseKeycloakIssuerUri";
const oidc = await createOidc({ ... });
if( oidc.isUserLoggedIn ){
// Function to invoke when the user click on your "change my password" button.
const updatePassword = ()=>
oidc.goToAuthServer({
extraQueryParams: {
kc_action: "UPDATE_PASSWORD"
}
});
// NOTE: This is optional, it enables you to display a feedback message
// when the user is redirected back to your application after completing
// or canceling the action.
if(
oidc.backFromAuthServer?.extraQueryParams.kc_action === "UPDATE_PASSWORD"
){
switch(oidc.backFromAuthServer.result.kc_action_status){
case "canceled":
alert("You password was not updated");
break;
case "success":
alert("Your password has been updated successfuly");
break;
}
}
}
// Url for redirecting users to the keycloak account console.
const keycloakAccountUrl = parseKeycloakIssuerUri(oidc.params.issuerUri)
.getAccountUrl({
clientId: params.clientId,
backToAppFromAccountUrl: `${location.href}${import.meta.env.BASE_URL}`
});
import { useOidc } from "@/oidc";
function ProtectedPage() {
// Here we can safely assume that the user is logged in.
const { goToAuthServer, backFromAuthServer, params } = useOidc({ assert: "user logged in" });
return (
<>
<button
onClick={() =>
goToAuthServer({
extraQueryParams: { kc_action: "UPDATE_PASSWORD" }
})
}
>
Change password
</button>
{/*
Optionally you can display a feedback message to the user when they
are redirected back to the app after completing or canceling the
action.
*/}
{backFromAuthServer?.extraQueryParams.kc_action === "UPDATE_PASSWORD" && (
<p>
{(()=>{
switch(backFromAuthServer.result.kc_action_status){
case "success":
return "Password successfully updated";
case "cancelled":
return "Password unchanged";
}
})()}
</p>
)}
</>
);
}
updatePassword = ()=> this.oidc.goToAuthServer({
extraQueryParams: { kc_action: "UPDATE_PASSWORD" }
});@if( oidc.backFromAuthServer?.extraQueryParams.kc_action === "UPDATE_PASSWORD" ){
@if ( oidc.backFromAuthServer.result.kc_action_status === "success" ){
<p>Password successfully updated</p>
} @else {
<P>Password unchanged</p>
}
}