/info works ))
This commit is contained in:
parent
0137ba0bb2
commit
87496bde56
@ -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();
|
||||
};
|
||||
}
|
||||
|
@ -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() {
|
||||
|
@ -14,5 +14,5 @@ public class Code {
|
||||
@JoinColumn(name = "employee_id", nullable = false)
|
||||
private Employee employee;
|
||||
|
||||
// Геттеры и сеттеры
|
||||
|
||||
}
|
@ -34,7 +34,7 @@ public class Employee {
|
||||
@Column(nullable = false)
|
||||
private String status = "works"; // Новый статус: 'works' или 'blocked'
|
||||
|
||||
|
||||
//ту ду реши что оставить из этих двоих
|
||||
|
||||
public boolean isBlocked() {
|
||||
return "blocked".equals(status);
|
||||
|
@ -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);
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user