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()); }
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 })); } }
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 })); } }