/info works ))

This commit is contained in:
truettwo 2025-02-20 10:59:05 +03:00
parent 0137ba0bb2
commit 87496bde56
5 changed files with 22 additions and 10 deletions

View File

@ -39,8 +39,8 @@ public class SecurityConfig {
Employee emp = employee.get();
return User.builder()
.username(emp.getLogin())
.password(emp.getPassword()) // Пароль должен быть в BCrypt
.roles(emp.getRole().toUpperCase()) // Spring Security требует `ROLE_XXX`
.password(emp.getPassword())
.roles(emp.getRole().toUpperCase())
.build();
};
}

View File

@ -4,6 +4,7 @@ import com.example.nto.entity.Employee;
import com.example.nto.service.EmployeeService;
import org.springframework.http.ResponseEntity;
import org.springframework.security.access.prepost.PreAuthorize;
import org.springframework.security.core.Authentication;
import org.springframework.web.bind.annotation.*;
import java.util.Optional;
@ -34,15 +35,26 @@ public class EmployeeController {
// Получение информации о пользователе
@PreAuthorize("isAuthenticated()")
@GetMapping("/{login}/info")
public ResponseEntity<?> getUserInfo(@PathVariable String login) {
public ResponseEntity<?> getUserInfo(@PathVariable String login, Authentication authentication) {
Optional<Employee> employee = employeeService.findByLogin(login);
if (employee.isPresent()) {
return ResponseEntity.ok(employee.get());
Employee requestedUser = employee.get();
String currentUserLogin = authentication.getName(); // Логин текущего пользователя
boolean isAdmin = authentication.getAuthorities().stream()
.anyMatch(grantedAuthority -> grantedAuthority.getAuthority().equals("ROLE_ADMIN"));
// Обычный пользователь может смотреть только свои данные, админ любые
if (isAdmin || currentUserLogin.equals(requestedUser.getLogin())) {
return ResponseEntity.ok(requestedUser);
} else {
return ResponseEntity.status(403).body("Access denied");
}
}
return ResponseEntity.status(404).body("User not found");
}
// Получение списка всех сотрудников (только для администратора)
// не тз не трогаем!!!!
@PreAuthorize("hasRole('ADMIN')")
@GetMapping("/workers")
public ResponseEntity<?> getAllWorkers() {

View File

@ -14,5 +14,5 @@ public class Code {
@JoinColumn(name = "employee_id", nullable = false)
private Employee employee;
// Геттеры и сеттеры
}

View File

@ -34,7 +34,7 @@ public class Employee {
@Column(nullable = false)
private String status = "works"; // Новый статус: 'works' или 'blocked'
//ту ду реши что оставить из этих двоих
public boolean isBlocked() {
return "blocked".equals(status);

View File

@ -31,14 +31,14 @@ public class EmployeeServiceImpl implements EmployeeService {
}
@Override
public boolean validateCode(String login, long code) {
public boolean validateCode(String login, long code) { //не робит((((
List<Long> validCodes = CodeRepository.findCodesByLogin(login); // Теперь вызывается из объекта
// Проверяем, если переданный код присутствует в списке
// Проверяем, если переданный код присутствует в списке()
boolean isValid = validCodes.contains(code);
// Вывод отладочной информации
// Вывод отладочной информации(удалить)
System.out.println("Valid codes: " + validCodes);
System.out.println("Input code: " + code);