コード例 #1
0
        public async Task <ResultDTO> SignIn([FromBody] SignInDTO model)
        {
            var result = default(ResultDTO);

            if (!ModelState.IsValid)
            {
                var errors = ModelStateCustomValidator.GetErrorsFromModel(ModelState);
                result = new ErrorResultDTO
                {
                    Status  = 403,
                    Message = "Invalid sign in attempt",
                    Errors  = errors
                };
            }
            else
            {
                var loginResult = await signInManager.PasswordSignInAsync(model.Email, model.Password, false, false);

                if (!loginResult.Succeeded)
                {
                    result = new ErrorResultDTO
                    {
                        Status  = 403,
                        Message = "Sign in error",
                        Errors  = new string[] { "Incorrect email or password" }
                    };
                }
                else
                {
                    var user = await userManager.FindByEmailAsync(model.Email);

                    await signInManager.SignInAsync(user, false);

                    result = new AuthResultDTO
                    {
                        Status  = 200,
                        Message = "Ok",
                        Token   = JWTTokenService.GenerateToken(user)
                    };
                }
            }

            return(result);
        }