diff --git a/.idea/workspace.xml b/.idea/workspace.xml
index d70691a..bc4593a 100644
--- a/.idea/workspace.xml
+++ b/.idea/workspace.xml
@@ -4,13 +4,11 @@
-
-
+
-
-
-
-
+
+
+
@@ -38,7 +36,7 @@
1739968326971
-
+
+
+ 1739978089147
+
+
+
+ 1739978089147
+
+
@@ -154,59 +160,60 @@
-
+
+
file://$PROJECT_DIR$/src/main/java/com/example/nto/controller/EmployeeController.java
- 29
+ 34
file://$PROJECT_DIR$/src/main/java/com/example/nto/controller/EmployeeController.java
- 12
+ 15
file://$PROJECT_DIR$/src/main/java/com/example/nto/controller/AuthController.java
- 49
+ 51
file://$PROJECT_DIR$/src/main/java/com/example/nto/controller/AuthController.java
- 57
+ 59
file://$PROJECT_DIR$/src/main/java/com/example/nto/controller/AuthController.java
- 50
+ 52
file://$PROJECT_DIR$/src/main/java/com/example/nto/controller/AuthController.java
- 52
+ 54
file://$PROJECT_DIR$/src/main/java/com/example/nto/controller/AuthController.java
- 53
+ 55
file://$PROJECT_DIR$/src/main/java/com/example/nto/controller/AuthController.java
- 54
+ 56
file://$PROJECT_DIR$/src/main/java/com/example/nto/controller/AuthController.java
- 55
+ 57
file://$PROJECT_DIR$/src/main/java/com/example/nto/controller/AuthController.java
- 56
+ 58
diff --git a/src/main/java/com/example/nto/controller/EmployeeController.java b/src/main/java/com/example/nto/controller/EmployeeController.java
index 3562a9c..abce26c 100644
--- a/src/main/java/com/example/nto/controller/EmployeeController.java
+++ b/src/main/java/com/example/nto/controller/EmployeeController.java
@@ -5,8 +5,11 @@ import com.example.nto.repository.CodeRepository;
import com.example.nto.service.EmployeeService;
import org.springframework.http.HttpStatus;
import org.springframework.http.ResponseEntity;
+import org.springframework.security.access.annotation.Secured;
+import org.springframework.security.core.context.SecurityContextHolder;
import org.springframework.web.bind.annotation.*;
+import javax.servlet.http.HttpServletRequest;
import java.util.Optional;
@RestController
@@ -22,11 +25,13 @@ public class EmployeeController {
/**
* Эндпоинт для проверки присутствия логина в емплоеееее таблице
*
- * @param login Искомый логин
* @return статус код, смотри документацию к тз
*/
- @GetMapping("/api/{login}/auth")
- public ResponseEntity authAttempt(@PathVariable String login) {
+ @GetMapping("/api/auth")
+ public ResponseEntity authAttempt(HttpServletRequest request) {
+
+ String login = SecurityContextHolder.getContext().getAuthentication().getName();
+
try {
if (employeeService.checkEmployeeExists(login)) {
return ResponseEntity.status(HttpStatus.ACCEPTED).build(); // Логин найден ДВЕСТИ
@@ -40,15 +45,24 @@ public class EmployeeController {
}
}
-
+ /**
+ * Такой же метод, как и getEmployeeInfo, только для админов по логину
+ * @return
+ */
+ @Secured("ADMIN")
+ @GetMapping("/api/admin/{value}/info")
+ public Employee getEmployeeInfoAdmin(@PathVariable String value) {
+ return employeeService.getEmployeeInfoById(Long.parseLong(value));
+ }
/**
* Получить информацию по емплоеееее
*
- * @param login логин пользователя
* @return емплоеееееее иначе 401 бан бан бан бан, а если ошибка, то 400 БАААААН
*/
- @GetMapping("/api/{login}/info")
- public ResponseEntity getEmployeeInfo(@PathVariable String login) {
+ @GetMapping("/api/info")
+ public ResponseEntity getEmployeeInfo() {
+ String login = SecurityContextHolder.getContext().getAuthentication().getName();
+
try {
Optional employee = employeeService.getEmployeeInfo(login);
return employee.map(ResponseEntity::ok).orElseGet(() -> ResponseEntity.status(HttpStatus.UNAUTHORIZED).build());
@@ -61,13 +75,14 @@ public class EmployeeController {
/**
* Проверка на дверь открыть не открыть
- * @param login логин входящего
* @param value код двери
* @return статус код отвта
*/
- @PatchMapping("api/{login}/open")
- public ResponseEntity openDoorAttempt(@PathVariable String login, @RequestBody Long value) {
+ @PatchMapping("api/{value}/open")
+ public ResponseEntity openDoorAttempt(@RequestBody Long value) {
try {
+ String login = SecurityContextHolder.getContext().getAuthentication().getName();
+
if (!employeeService.checkEmployeeExists(login)) {
return ResponseEntity.status(HttpStatus.UNAUTHORIZED).build();
}
diff --git a/src/main/java/com/example/nto/service/EmployeeService.java b/src/main/java/com/example/nto/service/EmployeeService.java
index b8013c8..29506f1 100644
--- a/src/main/java/com/example/nto/service/EmployeeService.java
+++ b/src/main/java/com/example/nto/service/EmployeeService.java
@@ -9,4 +9,5 @@ public interface EmployeeService {
Optional getEmployeeInfo(String login);
boolean doorIsOpen(String login, long code);
void updateLastVisit(String login);
+ Employee getEmployeeInfoById(Long id);
}
diff --git a/src/main/java/com/example/nto/service/impl/EmployeeServiceImpl.java b/src/main/java/com/example/nto/service/impl/EmployeeServiceImpl.java
index 80a159a..1322ca3 100644
--- a/src/main/java/com/example/nto/service/impl/EmployeeServiceImpl.java
+++ b/src/main/java/com/example/nto/service/impl/EmployeeServiceImpl.java
@@ -69,4 +69,9 @@ public class EmployeeServiceImpl implements EmployeeService {
Employee employee = employeeRepository.getByLogin(login).get();
employee.setLastVisit(LocalDateTime.now());
}
+
+ @Override
+ public Employee getEmployeeInfoById(Long id) {
+ return employeeRepository.findById(id).get();
+ }
}