From 7b4e949563d1f1bafc89f46e75e28279bd7854e4 Mon Sep 17 00:00:00 2001 From: truettwo Date: Wed, 19 Feb 2025 14:00:55 +0300 Subject: [PATCH] admin rights --- .../nto/controller/EmployeeController.java | 17 +++++++++++++ .../java/com/example/nto/entity/Code.java | 4 +-- .../java/com/example/nto/entity/Employee.java | 8 +++--- .../nto/repository/EmployeeRepository.java | 2 +- .../example/nto/service/EmployeeService.java | 2 +- .../nto/service/impl/EmployeeServiceImpl.java | 14 +++++------ src/main/resources/data.sql | 25 +++++++++++-------- 7 files changed, 47 insertions(+), 25 deletions(-) diff --git a/src/main/java/com/example/nto/controller/EmployeeController.java b/src/main/java/com/example/nto/controller/EmployeeController.java index 46618d9..54b7d67 100644 --- a/src/main/java/com/example/nto/controller/EmployeeController.java +++ b/src/main/java/com/example/nto/controller/EmployeeController.java @@ -6,6 +6,7 @@ import org.springframework.http.HttpStatus; import org.springframework.http.ResponseEntity; import org.springframework.web.bind.annotation.*; +import java.util.List; import java.util.Map; import java.util.Optional; //я поменял на BAD_REQUEST 06.12.24 23:00 @@ -88,5 +89,21 @@ public class EmployeeController { return ResponseEntity.status(HttpStatus.UNAUTHORIZED).body("Invalid login or password"); } } + + @PostMapping("/workers") + public ResponseEntity getAllWorkers(@RequestBody Map payload) { + String login = payload.get("login"); + String password = payload.get("password"); + + Optional employee = employeeService.findByLogin(login); + + if (employee.isPresent() && employee.get().getPassword().equals(password) && employee.get().getRole().equals("admin")) { + List allEmployees = employeeService.findAll(); // Получить всех сотрудников + return ResponseEntity.ok(allEmployees); + } else { + return ResponseEntity.status(HttpStatus.FORBIDDEN).body("Access denied"); + } + } + } // made by truettwo and maks )) \ No newline at end of file diff --git a/src/main/java/com/example/nto/entity/Code.java b/src/main/java/com/example/nto/entity/Code.java index 1ee7cf2..0dd164a 100644 --- a/src/main/java/com/example/nto/entity/Code.java +++ b/src/main/java/com/example/nto/entity/Code.java @@ -15,7 +15,7 @@ public class Code { @GeneratedValue(strategy = GenerationType.IDENTITY) private long id; - private long value; // Убедитесь, что это поле существует + private long value; + - // Геттеры и сеттеры для value } \ No newline at end of file diff --git a/src/main/java/com/example/nto/entity/Employee.java b/src/main/java/com/example/nto/entity/Employee.java index 2f94d2d..a1be62f 100644 --- a/src/main/java/com/example/nto/entity/Employee.java +++ b/src/main/java/com/example/nto/entity/Employee.java @@ -15,7 +15,7 @@ public class Employee { @GeneratedValue(strategy = GenerationType.IDENTITY) private long id; - private String login; // Убедитесь, что это поле существует + private String login; private String name; private String photo; private String position; @@ -23,7 +23,9 @@ public class Employee { @Column(name = "last_visit") private LocalDateTime lastVisit; - private String password; // Добавлено поле для пароля + private String password; + + private String role; + - // Геттеры и сеттеры для login, name, password и других полей } \ No newline at end of file diff --git a/src/main/java/com/example/nto/repository/EmployeeRepository.java b/src/main/java/com/example/nto/repository/EmployeeRepository.java index 6c445f2..5cee658 100644 --- a/src/main/java/com/example/nto/repository/EmployeeRepository.java +++ b/src/main/java/com/example/nto/repository/EmployeeRepository.java @@ -4,5 +4,5 @@ import com.example.nto.entity.Employee; import org.springframework.data.jpa.repository.JpaRepository; public interface EmployeeRepository extends JpaRepository { - Employee findByLogin(String login); // Этот метод должен искать сотрудника по логину + Employee findByLogin(String login); } diff --git a/src/main/java/com/example/nto/service/EmployeeService.java b/src/main/java/com/example/nto/service/EmployeeService.java index 355fd5e..6b37815 100644 --- a/src/main/java/com/example/nto/service/EmployeeService.java +++ b/src/main/java/com/example/nto/service/EmployeeService.java @@ -6,7 +6,7 @@ import java.util.List; import java.util.Optional; public interface EmployeeService { - List findAll(); // Методы, необходимые в контроллере + List findAll(); Optional findByLogin(String login); boolean validateCode(String login, long code); } \ No newline at end of file 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 d365769..409e82e 100644 --- a/src/main/java/com/example/nto/service/impl/EmployeeServiceImpl.java +++ b/src/main/java/com/example/nto/service/impl/EmployeeServiceImpl.java @@ -8,6 +8,9 @@ import org.springframework.stereotype.Service; import java.util.List; import java.util.Optional; +import org.springframework.stereotype.Service; +import java.util.List; + @Service public class EmployeeServiceImpl implements EmployeeService { private final EmployeeRepository employeeRepository; @@ -18,20 +21,17 @@ public class EmployeeServiceImpl implements EmployeeService { @Override public List findAll() { - return employeeRepository.findAll(); // Реализуем метод findAll + return employeeRepository.findAll(); } @Override public Optional findByLogin(String login) { - return employeeRepository.findAll() - .stream() - .filter(employee -> employee.getLogin().equals(login)) - .findFirst(); + return Optional.ofNullable(employeeRepository.findByLogin(login)); } @Override public boolean validateCode(String login, long code) { - // Реализуйте вашу логику для валидации кода - return false; // Замените на действительную логику + // Реализация проверки кода + return false; } } \ No newline at end of file diff --git a/src/main/resources/data.sql b/src/main/resources/data.sql index a1ad883..d57876b 100644 --- a/src/main/resources/data.sql +++ b/src/main/resources/data.sql @@ -1,23 +1,26 @@ -- Создание таблицы employee CREATE TABLE IF NOT EXISTS employee ( - id INT PRIMARY KEY, - login VARCHAR(255), + id INT PRIMARY KEY, + login VARCHAR(255), name VARCHAR(255), photo VARCHAR(255), position VARCHAR(255), - last_visit TIMESTAMP - ); + last_visit TIMESTAMP, + password VARCHAR(255), + role VARCHAR(50) +); -- Вставка данных в таблицу employee -INSERT INTO employee (id, login, name, photo, position, last_visit, password) +INSERT INTO employee (id, login, name, photo, position, last_visit, password, role) VALUES - (1, 'pivanov', 'Иванов Петр Федорович', 'https://funnyducks.ru/upload/iblock/0cd/0cdeb7ec3ed6fddda0f90fccee05557d.jpg', 'Разработчик', '2024-02-12T08:30', 'password123'), - (2, 'ipetrov', 'Петров Иван Константинович', 'https://funnyducks.ru/upload/iblock/0cd/0cdeb7ec3ed6fddda0f90fccee05557d.jpg', 'Аналитик', '2024-02-13T08:35', 'password456'), - (3, 'asemenov', 'Семенов Анатолий Анатольевич', 'https://funnyducks.ru/upload/iblock/0cd/0cdeb7ec3ed6fddda0f90fccee05557d.jpg', 'Разработчик', '2024-02-13T08:31', 'password789'), - (4, 'afedorov', 'Федоров Александр Сергеевич', 'https://funnyducks.ru/upload/iblock/0cd/0cdeb7ec3ed6fddda0f90fccee05557d.jpg', 'Тестировщик', '2024-02-12T08:36', 'password000'); + (1, 'pivanov', 'Иванов Петр Федорович', 'https://funnyducks.ru/upload/iblock/0cd/0cdeb7ec3ed6fddda0f90fccee05557d.jpg', 'Разработчик', '2024-02-12T08:30', 'password123', 'admin'), + (2, 'ipetrov', 'Петров Иван Константинович', 'https://funnyducks.ru/upload/iblock/0cd/0cdeb7ec3ed6fddda0f90fccee05557d.jpg', 'Аналитик', '2024-02-13T08:35', 'password456', 'user'), + (3, 'asemenov', 'Семенов Анатолий Анатольевич', 'https://funnyducks.ru/upload/iblock/0cd/0cdeb7ec3ed6fddda0f90fccee05557d.jpg', 'Разработчик', '2024-02-13T08:31', 'password789', 'user'), + (4, 'afedorov', 'Федоров Александр Сергеевич', 'https://funnyducks.ru/upload/iblock/0cd/0cdeb7ec3ed6fddda0f90fccee05557d.jpg', 'Тестировщик', '2024-02-12T08:36', 'password000', 'user'); + -- Создание таблицы code CREATE TABLE IF NOT EXISTS code ( - value BIGINT + value BIGINT ); -- Вставка данных в таблицу code @@ -27,4 +30,4 @@ VALUES (9223372036854775807), (1122334455667788990), (998877665544332211), - (5566778899001122334); + (5566778899001122334); \ No newline at end of file