Ejemplo n.º 1
0
        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));
        }
Ejemplo n.º 2
0
        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));
        }
Ejemplo n.º 3
0
        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));
        }
Ejemplo n.º 4
0
        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));
        }