public async Task <IActionResult> Login([FromBody] PandaUserLoginContract account)
        {
            if (!ModelState.IsValid)
            {
                return(StatusCode(500,
                                  new
                {
                    Error = ModelState.Values.SelectMany(s => s.Errors.Select(ss => ss.ErrorMessage)).ToList(),
                    Structure = new PandaUserLoginContract {
                    }
                }
                                  ));
            }

            var result = await _gatewayFacade.GateWayInvoke(
                method : BaseMethod,
                token : Token,
                path : BasePath,
                account,
                query : BaseQueryString
                );

            if (result.IsError())
            {
                return(StatusCode(500, result));
            }
            return(Ok(result));
        }
示例#2
0
        public async Task <Results <RefreshTokenContract> > Login(PandaUserLoginContract account)
        {
            var refreshTokenIsNullOrEmpty = await _userLogic.RefreshTokenIsNullOrEmpty(account.Email);

            if (!refreshTokenIsNullOrEmpty)
            {
                return(PandaResponse.CreateErrorResponse <RefreshTokenContract>("User still loged in."));
            }

            var signInResult = await _userLogic.Login(account);

            if (signInResult.IsError())
            {
                return(PandaResponse.CreateErrorResponse <RefreshTokenContract>(signInResult.Errors.ToArray()));
            }
            account.Id = signInResult.Data.Id;

            var token        = _jwtTokenService.GenerateToken(account.Email, account.Id.ToString());
            var refreshToken = _jwtTokenService.GenerateRefreshToken();
            var tokenData    = new RefreshTokenContract {
                RefreshToken = refreshToken, Token = token
            };

            var refreshTokenResult = await _userLogic.UpdateRefreshTokenToUser(account.Email, refreshToken);

            if (refreshTokenResult.IsError())
            {
                return(PandaResponse.CreateErrorResponse <RefreshTokenContract>(refreshTokenResult.Errors.ToArray()));
            }
            return(PandaResponse.CreateSuccessResponse(tokenData));
        }
示例#3
0
        public async Task <Results <PandaUser> > Login(PandaUserLoginContract account)
        {
            var signInResult = await _signInManager.PasswordSignInAsync(account.Email, account.Password, false, false);

            if (signInResult.Succeeded)
            {
                return(PandaResponse.CreateSuccessResponse(await _userManager.FindByEmailAsync(account.Email)));
            }
            else
            {
                bool emailValid = await _userRepository.EmailValid(account.Email);

                if (!emailValid)
                {
                    return(PandaResponse.CreateErrorResponse <PandaUser>("Email inValid."));
                }
                return(PandaResponse.CreateErrorResponse <PandaUser>("Password inValid."));
            }
        }