private async Task <JwtTokenModel> GetJwtToken(User user, RefreshToken refreshToken, CancellationToken cancellationToken) { var tokenHandler = new JwtSecurityTokenHandler(); var claims = new List <Claim> { new Claim(ClaimTypes.NameIdentifier, user.Id.ToString()) }; foreach (var item in user.Roles) { claims.Add(new Claim(ClaimTypes.Role, item.Role.Name)); } var tokenDescriptor = new SecurityTokenDescriptor { Subject = new ClaimsIdentity(claims), Expires = DateTime.UtcNow.Add(_jwtSecret.TimeToExpireToken), SigningCredentials = new SigningCredentials( new SymmetricSecurityKey(_jwtSecret.Secret), SecurityAlgorithms.HmacSha256Signature) }; var token = tokenHandler.CreateToken(tokenDescriptor); var jwtTokenModel = _mapper.Map <JwtTokenModel>(user); jwtTokenModel.BadgesCount = await _userAchievementRepository.GetCountAchievementsByUserAsync(user.Id, cancellationToken); jwtTokenModel.Token = tokenHandler.WriteToken(token); jwtTokenModel.RefreshToken = refreshToken.Token; jwtTokenModel.TokenExpiration = token.ValidTo.ConvertToIso8601DateTimeUtc(); return(jwtTokenModel); }
public async Task <ReadFullUserModel> GetFullUserByIdAsync(Guid id, CancellationToken cancellationToken) { var user = await _userRepository.GetByIdAsync(id, cancellationToken); var fullUserModel = _mapper.Map <ReadFullUserModel>(user); fullUserModel.BadgesCount = await _userAchievementRepository.GetCountAchievementsByUserAsync(user.Id, cancellationToken); return(fullUserModel); }
public async Task <AchievementsInfoModel> GetAchievementsInfoByUserAsync(Guid userId, CancellationToken cancellationToken) { var user = await _userRepository.GetByIdAsync(userId, cancellationToken); var countAchievements = await _userAchievementRepository.GetCountAchievementsByUserAsync(userId, cancellationToken); var countAchievementsByThisMonth = await _userAchievementRepository.GetCountAchievementsByThisMonthAsync(userId, cancellationToken); return(new AchievementsInfoModel() { TotalXP = user.XP, TotalAchievements = countAchievements, TotalAchievementsByThisMonth = countAchievementsByThisMonth }); }