コード例 #1
0
        public Moderator ModeratorsAuthenticate(Moderator existingModerator, string password)
        {
            bool isPasswordCorrect = BCrypt.Net.BCrypt.Verify(password, existingModerator.Password);

            if (!isPasswordCorrect)
            {
                return(null);
            }

            var tokenHandler    = new JwtSecurityTokenHandler();
            var key             = Encoding.ASCII.GetBytes(jwtSecret);
            var tokenDescriptor = new SecurityTokenDescriptor
            {
                Subject = new ClaimsIdentity(new Claim[]
                {
                    new Claim(ClaimTypes.Name, existingModerator.Login),
                    new Claim(ClaimTypes.Role, existingModerator.Role),
                    new Claim(ClaimTypes.Surname, existingModerator.LastName)
                }),
                Expires            = DateTime.UtcNow.AddDays(7),
                SigningCredentials = new SigningCredentials(new SymmetricSecurityKey(key), SecurityAlgorithms.HmacSha256Signature)
            };
            var token = tokenHandler.CreateToken(tokenDescriptor);

            existingModerator.Token = tokenHandler.WriteToken(token);
            return(existingModerator.ModeratorWithoutPassword());
        }
コード例 #2
0
        public async Task <IActionResult> GetAdministartionData()
        {
            try {
                string userId = httpContextAccessor.HttpContext.User.FindFirst(ClaimTypes.Name).Value;
                string role   = httpContextAccessor.HttpContext.User.FindFirst(ClaimTypes.Role).Value;

                if (role == Role.Admin || role == Role.SuperAdmin)
                {
                    Admin existingAdmin = await adminCrudService.CheckAdminExist(userId);

                    if (existingAdmin == null)
                    {
                        return(Unauthorized(new ResponseDTO()
                        {
                            Message = "Данный вашего токена верефикаций не верны или устарели, пожалуйста авторизуйтесь заново", Status = false
                        }));
                    }
                    existingAdmin.AdminWithoutPassword();
                    return(Ok(new { existingAdmin }));
                }
                else if (role == Role.Moderator)
                {
                    Moderator existingModerator = await moderatorsCrudService.CheckModeratorExist(userId);

                    if (existingModerator == null)
                    {
                        return(Unauthorized(new ResponseDTO()
                        {
                            Message = "Данный вашего токена верефикаций не верны или устарели, пожалуйста авторизуйтесь заново", Status = false
                        }));
                    }
                    existingModerator.ModeratorWithoutPassword();
                    return(Ok(new { existingModerator }));
                }
                else
                {
                    return(NotFound(new ResponseDTO()
                    {
                        Message = "Данный пользователь не найден", Status = false
                    }));
                }
            }
            catch (ObjectNotFoundException ex)
            {
                logger.LogError(ex.Message);
                return(NotFound(new ResponseDTO()
                {
                    Message = "Данный пользователь не найден", Status = false
                }));
            }
            catch (Exception ex)
            {
                logger.LogError(ex.Message);
                return(StatusCode(500, new ResponseDTO()
                {
                    Status = false
                }));
            }
        }
コード例 #3
0
        public async Task <IActionResult> AddModerator([FromBody] ModeratorDTO addModeratorDTO)
        {
            try
            {
                if (!ModelState.IsValid)
                {
                    return(BadRequest());
                }

                ResponseDTO check = await moderatorsCrudService.CheckModeratorExistForAdd(addModeratorDTO.Login);

                if (check.Status == false)
                {
                    return(Conflict(check));
                }

                check = await adminsCrudService.CheckAdminExistForAdd(addModeratorDTO.Login);

                if (check.Status == false)
                {
                    return(Conflict(check));
                }

                Admin admin = await adminsCrudService.CheckAdminExist(addModeratorDTO.AdminId);

                ResponseDTO answer = await moderatorsCrudService.AddModerator(admin, addModeratorDTO);

                logger.LogInformation($"Модератор: {addModeratorDTO.Login}, был добавлен Админом {admin.Login}");

                Moderator moderator = await moderatorsCrudService.CheckModeratorExist(answer.ResponseData.Id);

                moderator = moderator.ModeratorWithoutPassword();
                return(Ok(new { answer, moderator }));
            }
            catch (Exception ex)
            {
                logger.LogError(ex.Message);
                return(StatusCode(500, new ResponseDTO()
                {
                    Status = false
                }));
            }
        }