/info works ))
This commit is contained in:
parent
0137ba0bb2
commit
87496bde56
@ -39,8 +39,8 @@ public class SecurityConfig {
|
|||||||
Employee emp = employee.get();
|
Employee emp = employee.get();
|
||||||
return User.builder()
|
return User.builder()
|
||||||
.username(emp.getLogin())
|
.username(emp.getLogin())
|
||||||
.password(emp.getPassword()) // Пароль должен быть в BCrypt
|
.password(emp.getPassword())
|
||||||
.roles(emp.getRole().toUpperCase()) // Spring Security требует `ROLE_XXX`
|
.roles(emp.getRole().toUpperCase())
|
||||||
.build();
|
.build();
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
@ -4,6 +4,7 @@ import com.example.nto.entity.Employee;
|
|||||||
import com.example.nto.service.EmployeeService;
|
import com.example.nto.service.EmployeeService;
|
||||||
import org.springframework.http.ResponseEntity;
|
import org.springframework.http.ResponseEntity;
|
||||||
import org.springframework.security.access.prepost.PreAuthorize;
|
import org.springframework.security.access.prepost.PreAuthorize;
|
||||||
|
import org.springframework.security.core.Authentication;
|
||||||
import org.springframework.web.bind.annotation.*;
|
import org.springframework.web.bind.annotation.*;
|
||||||
|
|
||||||
import java.util.Optional;
|
import java.util.Optional;
|
||||||
@ -34,15 +35,26 @@ public class EmployeeController {
|
|||||||
// Получение информации о пользователе
|
// Получение информации о пользователе
|
||||||
@PreAuthorize("isAuthenticated()")
|
@PreAuthorize("isAuthenticated()")
|
||||||
@GetMapping("/{login}/info")
|
@GetMapping("/{login}/info")
|
||||||
public ResponseEntity<?> getUserInfo(@PathVariable String login) {
|
public ResponseEntity<?> getUserInfo(@PathVariable String login, Authentication authentication) {
|
||||||
Optional<Employee> employee = employeeService.findByLogin(login);
|
Optional<Employee> employee = employeeService.findByLogin(login);
|
||||||
|
|
||||||
if (employee.isPresent()) {
|
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");
|
return ResponseEntity.status(404).body("User not found");
|
||||||
}
|
}
|
||||||
|
|
||||||
// Получение списка всех сотрудников (только для администратора)
|
// не тз не трогаем!!!!
|
||||||
@PreAuthorize("hasRole('ADMIN')")
|
@PreAuthorize("hasRole('ADMIN')")
|
||||||
@GetMapping("/workers")
|
@GetMapping("/workers")
|
||||||
public ResponseEntity<?> getAllWorkers() {
|
public ResponseEntity<?> getAllWorkers() {
|
||||||
|
@ -14,5 +14,5 @@ public class Code {
|
|||||||
@JoinColumn(name = "employee_id", nullable = false)
|
@JoinColumn(name = "employee_id", nullable = false)
|
||||||
private Employee employee;
|
private Employee employee;
|
||||||
|
|
||||||
// Геттеры и сеттеры
|
|
||||||
}
|
}
|
@ -34,7 +34,7 @@ public class Employee {
|
|||||||
@Column(nullable = false)
|
@Column(nullable = false)
|
||||||
private String status = "works"; // Новый статус: 'works' или 'blocked'
|
private String status = "works"; // Новый статус: 'works' или 'blocked'
|
||||||
|
|
||||||
|
//ту ду реши что оставить из этих двоих
|
||||||
|
|
||||||
public boolean isBlocked() {
|
public boolean isBlocked() {
|
||||||
return "blocked".equals(status);
|
return "blocked".equals(status);
|
||||||
|
@ -31,14 +31,14 @@ public class EmployeeServiceImpl implements EmployeeService {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public boolean validateCode(String login, long code) {
|
public boolean validateCode(String login, long code) { //не робит((((
|
||||||
|
|
||||||
List<Long> validCodes = CodeRepository.findCodesByLogin(login); // Теперь вызывается из объекта
|
List<Long> validCodes = CodeRepository.findCodesByLogin(login); // Теперь вызывается из объекта
|
||||||
|
|
||||||
// Проверяем, если переданный код присутствует в списке
|
// Проверяем, если переданный код присутствует в списке()
|
||||||
boolean isValid = validCodes.contains(code);
|
boolean isValid = validCodes.contains(code);
|
||||||
|
|
||||||
// Вывод отладочной информации
|
// Вывод отладочной информации(удалить)
|
||||||
System.out.println("Valid codes: " + validCodes);
|
System.out.println("Valid codes: " + validCodes);
|
||||||
System.out.println("Input code: " + code);
|
System.out.println("Input code: " + code);
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user