in Source/WebApp-Service-Provider-DotNet/Controllers/ManageController.cs [159:181]
public async Task<IActionResult> ManageLogins(ManageMessageId? message = null)
{
ViewData["StatusMessage"] =
message == ManageMessageId.RemoveLoginSuccess ? "L'authentification externe a été supprimée."
: message == ManageMessageId.AddLoginSuccess ? "L'authentification externe a été ajoutée."
: message == ManageMessageId.Error ? "Une erreur est survenue."
: "";
var user = await GetCurrentUserAsync();
if (user == null)
{
return View("Error");
}
var userLogins = await _userManager.GetLoginsAsync(user);
var schemes = await _signInManager.GetExternalAuthenticationSchemesAsync();
var availableProviders = schemes.Where(auth => userLogins.All(ul => auth.Name != ul.LoginProvider)).ToList();
return View(new ManageLoginsViewModel
{
IsLinkedToFranceConnect = userLogins.Any(auth => auth.LoginProvider == FranceConnectConfiguration.ProviderScheme),
CanRemoveExternalLogin = user.PasswordHash != null || userLogins.Count > 1,
FranceConnectUserAccount = userLogins.FirstOrDefault(auth => auth.LoginProvider == FranceConnectConfiguration.ProviderScheme),
FranceConnectProvider = availableProviders.FirstOrDefault(auth => auth.Name == FranceConnectConfiguration.ProviderScheme)
});
}