Esempio n. 1
0
        public async Task <ActionResult <AuthResponse> > RefreshAuthentication()
        {
            Request.Cookies.TryGetValue(_Config["Cookie:RefreshToken"], out var refreshTokenCookie);

            _Logger.LogInformation($"Refresh Token: {refreshTokenCookie}");

            if (refreshTokenCookie is null)
            {
                return(BadRequest());
            }

            var dbEntity = await _RefreshTokenManager.GetOneByTokenAsync(refreshTokenCookie);

            if (dbEntity is null)
            {
                await _TokenService.RevokeAuthenticationRefreshTokens(Response, refreshTokenCookie);

                return(Unauthorized());
            }

            if (!dbEntity.Token.Equals(refreshTokenCookie))
            {
                return(Unauthorized());
            }

            var authedUser = await _UserManager.GetModelAsync(dbEntity.UserId);

            await _TokenService.IssueAuthenticationTokens(Response, authedUser);

            _Logger.LogInformation($"(Token) Refreshed User Authentication: {dbEntity.UserId}");

            var userDomains = await _UserDomainManager.GetAllByUserId(authedUser.Id);

            var response = new AuthResponse(authedUser.Id)
            {
                Username  = authedUser.Username,
                LastLogin = _DateService.LastLogin(),
                Domains   = userDomains
            };

            return(Ok(response));
        }