예제 #1
0
        public IActionResult Authenticate([FromBody] LoginForm login)
        {
            if (!ModelState.IsValid)
            {
                return(BadRequest(ModelState));
            }

            if (!_jWTService.CheckAccount(new LoginForm(login.email, _userService.EncodePassword(login.password))))
            {
                return(NotFound(new Response("404", "Email or password is not correct!")));
            }

            var id           = _userService.GetIdByEmail(login.email);
            var AccessToken  = _jWTService.GenerateToken(id, login.email);
            var RefreshToken = _jWTService.GenerateRefreshToken();

            _userService.UpdateRefreshToken(_userService.GetIdByEmail(login.email), RefreshToken);

            return(Ok(new LoginRespone(AccessToken, RefreshToken)));
        }
예제 #2
0
        public async Task <ActionResult <Person> > LoginUser(PersonLoginDTO current)
        {
            var storedPerson = _repository.GetByEmail(current.Email);

            if (storedPerson == null)
            {
                return(Unauthorized(UnauthorizedEmptyJsonResult));
            }

            //TODO usunąć gdy Frontend przejdzie na używanie ról z Access Tokenu.
            var storedUserRoles = await _customUserRolesService.GatherAllUserRoles(storedPerson.Id);

            var token = await _jwtService.GenerateAccessToken(storedPerson, storedUserRoles.First());

            var refreshToken = _jwtService.GenerateRefreshToken();

            try
            {
                UpdateRefreshToken(storedPerson, refreshToken);

                return(Accepted(new
                {
                    Id = storedPerson.Id,
                    FirstName = storedPerson.Name,
                    LastName = storedPerson.Lastname,
                    Email = storedPerson.Email,
                    Roles = storedUserRoles,
                    Token = token,
                    RefreshToken = refreshToken
                }));
            }
            catch (DBConcurrencyException e)
            {
                return(Conflict(ConflictJsonResult(e.Message)));
            }
        }