public async Task <SessionDto> CreateSession(User user, string ipAddress = null) { user = await _userManager.FindByIdAsync(user.Id); var roles = (await _userManager.GetRolesAsync(user)).ToList(); Logger.LogInformation("Creating session for user {UserId}", user.Id); var refreshToken = await RefreshTokensService.CreateRefreshToken(user, ipAddress); var session = new SessionDto { Profile = new UserProfileDto { Id = user.Id, Username = user.UserName, Roles = roles, Fullname = user.FullName, }, AccessToken = _jwtFactory.GenerateToken(user.Id, user.UserName, roles, _jwtOptions.CalcExpiration()), RefreshToken = TokenDto.FromRefreshTokenEntity(refreshToken) }; return(session); }