Ejemplo n.º 1
0
        public async Task <IActionResult> Login([FromBody] TokenAuthRequest model)
        {
            return(await OnActionAsync(async() =>
            {
                _logger.LogInformation($"Executing TokenController.Login with values {model}");

                var user = await _tokenService.AuthenticateAsync(model.Username, model.Password);

                if (user == null)
                {
                    throw new BadRequestException("Username or Password is invalid");
                }

                return Ok(user);
            }));
        }
Ejemplo n.º 2
0
        public IActionResult Auth(TokenAuthRequest model)
        {
            return(Result(() =>
            {
                if (model == null)
                {
                    return ApplicationResult.Fail("bad request");
                }
                UserViewModel user;

                switch (model.GrantType)
                {
                case "password":
                    var credentialResult = _userService.GetUserByCredential(model.UserName, model.Password);
                    if (credentialResult.IsSuccess == false)
                    {
                        return credentialResult;
                    }
                    user = credentialResult.Value;
                    break;

                case "refresh_token":
                    var refreshTokenResult = _userService.GetUserByRefreshToken(model.RefreshToken);
                    if (refreshTokenResult.IsSuccess == false)
                    {
                        return refreshTokenResult;
                    }
                    user = refreshTokenResult.Value;
                    break;



                case "signUp":
                case "string":
                    if (!ModelState.IsValid)
                    {
                        return ApplicationResult.Fail(GetModelErrors());
                    }

                    //return user Id
                    var signUpResult = _userService.SignUp(new UserViewModel()
                    {
                        UserName = model.UserName.ToLower(),
                        Email = model.Email,
                        PasswordHash = model.Password,
                        Avatar = model.Avatar,
                        Country = model.Country,
                        SexType = model.SexType,
                        PhoneNumber = model.Phone
                    });

                    if (signUpResult.IsSuccess == false)
                    {
                        return signUpResult;
                    }

                    user = signUpResult.Value;
                    break;

                default:
                    return ApplicationResult.Fail("The grant_type is not support");
                }

                var refreshToken = _userService.GrantRefreshToken(user.Id);
                var accessToken = GenerateJwtToken(user);
                var result = new TokenAuthResponse
                {
                    RefreshToken = refreshToken,
                    AccessToken = accessToken
                };
                return ApplicationResult.Ok(result);
            }));
        }