public async Task <IActionResult> SignUp(string type, AuthenticationModels.SocialLogIn model) { var handler = _authServices.FirstOrDefault(s => s.ProviderName == type); if (handler != null) { var identity = await handler.GetIdentity(model.Token); if (identity != null) { var account = await handler.CreateAccount(identity); if (account != null) { await _db.SocialAccounts.AddAsync(account); await _db.SaveChangesAsync(); return(Ok(new AuthenticationModels.SocialSignUp { SocialAccountKey = identity.Id, Email = identity.Email, Name = identity.Name, SocialAccountId = account.Id })); } } ModelState.AddModelError("Auth", $"Профиль {type} не существует или уже привязан к одному из аккаунтов Extreme Insiders."); return(BadRequest(ModelState)); } ModelState.AddModelError("Auth", "Неправильный тип социальной сети."); return(NotFound(ModelState)); }
public async Task <IActionResult> LogIn(string type, AuthenticationModels.SocialLogIn model) { var handler = _authServices.FirstOrDefault(s => s.ProviderName == type); if (handler != null) { var identity = await handler.GetIdentity(model.Token); var user = await handler.FindUser(identity); if (user == null) { await using var transaction = await _db.Database.BeginTransactionAsync(); try { var account = await handler.CreateAccount(identity); if (account == null) { return(BadRequest()); } user = await SignUpInternal(new AuthenticationModels.SignUp()); if (user == null) { return(BadRequest()); } account.UserId = user.Id; await _db.AddAsync(account); await _db.SaveChangesAsync(); await transaction.CommitAsync(); } catch (Exception) { return(BadRequest()); } } user = await _userService.Authenticate(user); if (user != null) { return(Ok(user.WithoutSensitive(token: true, useLikeIds: true, useFavoriteIds: true, useSaleIds: true))); } return(NotFound(ModelState)); } ModelState.AddModelError("Auth", $"Неправильный тип социальной сети."); return(NotFound(ModelState)); }
public async Task <IActionResult> LogIn(string type, AuthenticationModels.SocialLogIn model) { var handler = _authServices.FirstOrDefault(s => s.ProviderName == type); if (handler != null) { var user = await handler.FindUser(model.Token); user = await _userService.Authenticate(user); if (user != null) { return(Ok(user.WithoutSensitive(token: true, useLikeIds: true, useFavoriteIds: true, useSaleIds: true))); } ModelState.AddModelError("Auth", $"Ваш профиль {type} не привязан к аккаунту."); return(NotFound(ModelState)); } ModelState.AddModelError("Auth", $"Неправильный тип социальной сети."); return(NotFound(ModelState)); }
public async Task <IActionResult> SocialAccount(string type, AuthenticationModels.SocialLogIn model) { var handler = _authServices.FirstOrDefault(s => s.ProviderName == type); if (handler != null) { var user = _userService.User; var account = await handler.CreateAccount(model.Token); if (account != null) { user.SocialAccounts.Add(account); _db.SaveChanges(); return(Ok(user.WithoutSensitive(false))); } ModelState.AddModelError("Auth", $"Не удалось привязать {type} аккаунт."); return(BadRequest(ModelState)); } ModelState.AddModelError("Auth", $"Неправильный тип социальной сети."); return(NotFound(ModelState)); }