diff --git a/backend/Money.Api/Controllers/ExternalAuthController.cs b/backend/Money.Api/Controllers/ExternalAuthController.cs index c8bc647..2f58482 100644 --- a/backend/Money.Api/Controllers/ExternalAuthController.cs +++ b/backend/Money.Api/Controllers/ExternalAuthController.cs @@ -68,10 +68,16 @@ public async Task Callback() var userId = principal.FindFirst(OpenIddictConstants.Claims.Subject)?.Value ?? principal.FindFirst(ClaimTypes.NameIdentifier)?.Value; - // TODO: Не работает - var email = principal.FindFirst(ClaimTypes.Email)!.Value; + var email = principal.FindFirst(ClaimTypes.Email)?.Value + ?? principal.FindFirst(OpenIddictConstants.Claims.Email)?.Value; + + if (string.IsNullOrWhiteSpace(email)) + { + return BadRequest("Email обязателен для внешней аутентификации."); + } + var name = principal.FindFirst(ClaimTypes.Name)?.Value; - var userNameCandidate = name?? BuildValidUserName(email, userId); + var userNameCandidate = name ?? BuildValidUserName(email, userId); var providerName = result.Properties?.GetString(OpenIddictClientAspNetCoreConstants.Properties.ProviderName) ?? "GitHub"; @@ -96,7 +102,7 @@ public async Task Callback() { UserName = uniqueUserName, Email = email, - EmailConfirmed = email != null + EmailConfirmed = true, }; var createResult = await userManager.CreateAsync(user); diff --git a/frontend/Money.Web/Pages/Account/Login.razor b/frontend/Money.Web/Pages/Account/Login.razor index d2ff6ca..385f382 100644 --- a/frontend/Money.Web/Pages/Account/Login.razor +++ b/frontend/Money.Web/Pages/Account/Login.razor @@ -57,20 +57,36 @@ - - Войти через bob217.Auth - - - Войти через GitHub - - + + Вход через внешние сервисы + + Используйте один из провайдеров ниже. Для входа требуется доступ к вашему email. + + + + + Войти через bob217.Auth + + + + Войти через GitHub + + + + + + +