Correction du flux d'inscription Keycloak
This commit is contained in:
@@ -1,13 +1,59 @@
|
|||||||
@page "/authentication/{action}"
|
@page "/authentication/{action}"
|
||||||
|
@inject NavigationManager Navigation
|
||||||
|
|
||||||
<main class="rules-shell">
|
<main class="rules-shell">
|
||||||
<section class="panel panel-wide cta-panel" style="margin-top: 2rem;">
|
<section class="panel panel-wide cta-panel" style="margin-top: 2rem;">
|
||||||
<p class="eyebrow">Authentification</p>
|
<p class="eyebrow">Authentification</p>
|
||||||
<RemoteAuthenticatorView Action="@Action" />
|
@if (IsRegisterAction)
|
||||||
|
{
|
||||||
|
<div>
|
||||||
|
<strong>Redirection vers la creation de compte...</strong>
|
||||||
|
<p>L'inscription se poursuit dans Keycloak, puis vous reviendrez automatiquement dans l'application.</p>
|
||||||
|
</div>
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
<RemoteAuthenticatorView Action="@Action" />
|
||||||
|
}
|
||||||
</section>
|
</section>
|
||||||
</main>
|
</main>
|
||||||
|
|
||||||
@code {
|
@code {
|
||||||
[Parameter]
|
[Parameter]
|
||||||
public string? Action { get; set; }
|
public string? Action { get; set; }
|
||||||
|
|
||||||
|
[SupplyParameterFromQuery(Name = "returnUrl")]
|
||||||
|
public string? ReturnUrl { get; set; }
|
||||||
|
|
||||||
|
private bool IsRegisterAction
|
||||||
|
=> string.Equals(Action, RemoteAuthenticationActions.Register, StringComparison.OrdinalIgnoreCase);
|
||||||
|
|
||||||
|
protected override void OnParametersSet()
|
||||||
|
{
|
||||||
|
if (!IsRegisterAction)
|
||||||
|
{
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
var request = new InteractiveRequestOptions
|
||||||
|
{
|
||||||
|
Interaction = InteractionType.SignIn,
|
||||||
|
ReturnUrl = NormalizeReturnUrl(ReturnUrl)
|
||||||
|
};
|
||||||
|
|
||||||
|
request.TryAddAdditionalParameter("prompt", "create");
|
||||||
|
Navigation.NavigateToLogin("authentication/login", request);
|
||||||
|
}
|
||||||
|
|
||||||
|
private static string NormalizeReturnUrl(string? returnUrl)
|
||||||
|
{
|
||||||
|
if (string.IsNullOrWhiteSpace(returnUrl))
|
||||||
|
{
|
||||||
|
return "/";
|
||||||
|
}
|
||||||
|
|
||||||
|
return returnUrl.StartsWith("/", StringComparison.Ordinal)
|
||||||
|
? returnUrl
|
||||||
|
: $"/{returnUrl}";
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -36,6 +36,7 @@ L'application embarque maintenant une authentification OpenID Connect basee sur
|
|||||||
- toutes les pages du site restent accessibles sans connexion
|
- toutes les pages du site restent accessibles sans connexion
|
||||||
- la page d'accueil et la page reglement affichent l'etat de session courant
|
- la page d'accueil et la page reglement affichent l'etat de session courant
|
||||||
- la page d'accueil propose directement des actions `Se connecter` et `Creer un compte`
|
- la page d'accueil propose directement des actions `Se connecter` et `Creer un compte`
|
||||||
|
- l'action `Creer un compte` ouvre le parcours d'inscription natif de Keycloak
|
||||||
- les roles Keycloak du realm sont exposes dans l'application
|
- les roles Keycloak du realm sont exposes dans l'application
|
||||||
- l'etat du match est isole par utilisateur dans le navigateur grace a une cle de stockage derivee du compte connecte
|
- l'etat du match est isole par utilisateur dans le navigateur grace a une cle de stockage derivee du compte connecte
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user