Esempio n. 1
0
        public async Task <IActionResult> CreateTokenAsync([FromBody] LoginModel loginPerson)
        {
            var username = loginPerson.Login;
            var password = loginPerson.Password;
            var person   = await _tokenManager.GetPersonByNameAsync(username);

            if (person == null)
            {
                return(NotFound("Invalid password or login"));
            }

            if (!BCrypt.Net.BCrypt.Verify(password, person.PasswordHash))
            {
                return(NotFound("Invalid password or login"));
            }

            var claims     = _tokenManager.GetClaimsAsync(person);
            var tokenModel = _tokenManager.GetTokenAsync(claims);

            var deletePrevious = await _tokenManager.DeletePreviousRefreshTokenAsync(username);

            if (!deletePrevious)
            {
                return(BadRequest("Previous refresh token cannot be deleted"));
            }

            var refreshPost = await _tokenManager.SetNewRefreshTokenAsync(username, tokenModel.RefreshToken);

            if (refreshPost == null)
            {
                return(BadRequest("New refresh token didn't set to db"));
            }

            return(Ok(tokenModel));
        }