Exemple #1
0
        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);
        }
Exemple #3
0
        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
            });
        }