From 35f89f9a7f6c3a7d04310b6309dfd650b20a48f4 Mon Sep 17 00:00:00 2001 From: student-n-gorbatov Date: Wed, 25 Feb 2026 14:45:15 +0300 Subject: [PATCH] removed unnecessary dirs --- .../nto/controller/EmployeeController.java | 12 ++++----- .../nto/controller/dto/EmployeeDto.java | 3 ++- .../java/com/example/nto/entity/Employee.java | 7 +++++ .../nto/exception/EmployeeAlreadyExists.java | 7 +++++ .../nto/exception/InvalidUsername.java | 7 +++++ .../nto/repository/EmployeeRepository.java | 4 ++- .../example/nto/service/EmployeeService.java | 6 ++++- .../nto/service/impl/BookingServiceImpl.java | 2 +- .../nto/service/impl/EmployeeServiceImpl.java | 27 ++++++++++++++++--- .../1/0/2025-11-05--0001-employee.xml | 8 ++++++ .../csv/2025-11-05--0001-employee-data.csv | 10 +++---- 11 files changed, 75 insertions(+), 18 deletions(-) create mode 100644 src/main/java/com/example/nto/exception/EmployeeAlreadyExists.java create mode 100644 src/main/java/com/example/nto/exception/InvalidUsername.java diff --git a/src/main/java/com/example/nto/controller/EmployeeController.java b/src/main/java/com/example/nto/controller/EmployeeController.java index 7f73702..28b2fa1 100644 --- a/src/main/java/com/example/nto/controller/EmployeeController.java +++ b/src/main/java/com/example/nto/controller/EmployeeController.java @@ -14,16 +14,16 @@ public class EmployeeController { private final EmployeeService employeeService; - @GetMapping("/{code}/auth") - @ResponseStatus(code = HttpStatus.OK) - public void login(@PathVariable String code) { - employeeService.auth(code); - } - @GetMapping("/{code}/info") @ResponseStatus(code = HttpStatus.OK) public EmployeeDto getByCode(@PathVariable String code) { return employeeService.getByCode(code); } + @GetMapping("/login/{username}/{password}") + @ResponseStatus(code = HttpStatus.OK) + public void login(@PathVariable String username, @PathVariable String password){ + employeeService.auth(username, password); + } + } diff --git a/src/main/java/com/example/nto/controller/dto/EmployeeDto.java b/src/main/java/com/example/nto/controller/dto/EmployeeDto.java index 3c87566..aecb5e1 100644 --- a/src/main/java/com/example/nto/controller/dto/EmployeeDto.java +++ b/src/main/java/com/example/nto/controller/dto/EmployeeDto.java @@ -19,6 +19,7 @@ public class EmployeeDto { private String name; private String photoUrl; private Map booking; + private String password; public static EmployeeDto toDto(Employee employee) { Map dtoTreeMap = new TreeMap<>(); @@ -26,6 +27,6 @@ public class EmployeeDto { dtoTreeMap.put(booking.getDate(), PlaceDto.toDto(booking.getPlace())); } - return new EmployeeDto(employee.getName(), employee.getPhotoUrl(), dtoTreeMap); + return new EmployeeDto(employee.getName(), employee.getPhotoUrl(), dtoTreeMap, employee.getPassword()); } } diff --git a/src/main/java/com/example/nto/entity/Employee.java b/src/main/java/com/example/nto/entity/Employee.java index e854a92..25f2296 100644 --- a/src/main/java/com/example/nto/entity/Employee.java +++ b/src/main/java/com/example/nto/entity/Employee.java @@ -6,6 +6,7 @@ import lombok.Builder; import lombok.Data; import lombok.NoArgsConstructor; +import java.util.Collection; import java.util.List; @Data @@ -23,6 +24,12 @@ public class Employee { @Column(name = "name") private String name; + @Column(name = "username") + private String username; + + @Column(name = "password") + private String password; + @Column(name = "code") private String code; diff --git a/src/main/java/com/example/nto/exception/EmployeeAlreadyExists.java b/src/main/java/com/example/nto/exception/EmployeeAlreadyExists.java new file mode 100644 index 0000000..7d64107 --- /dev/null +++ b/src/main/java/com/example/nto/exception/EmployeeAlreadyExists.java @@ -0,0 +1,7 @@ +package com.example.nto.exception; + +public class EmployeeAlreadyExists extends RuntimeException { + public EmployeeAlreadyExists(String message) { + super(message); + } +} diff --git a/src/main/java/com/example/nto/exception/InvalidUsername.java b/src/main/java/com/example/nto/exception/InvalidUsername.java new file mode 100644 index 0000000..72772e5 --- /dev/null +++ b/src/main/java/com/example/nto/exception/InvalidUsername.java @@ -0,0 +1,7 @@ +package com.example.nto.exception; + +public class InvalidUsername extends RuntimeException { + public InvalidUsername(String message) { + super(message); + } +} diff --git a/src/main/java/com/example/nto/repository/EmployeeRepository.java b/src/main/java/com/example/nto/repository/EmployeeRepository.java index cc94ec5..968e56f 100644 --- a/src/main/java/com/example/nto/repository/EmployeeRepository.java +++ b/src/main/java/com/example/nto/repository/EmployeeRepository.java @@ -5,10 +5,12 @@ import org.springframework.data.jpa.repository.EntityGraph; import org.springframework.data.jpa.repository.JpaRepository; import org.springframework.stereotype.Repository; +import java.util.List; import java.util.Optional; -@Repository public interface EmployeeRepository extends JpaRepository { @EntityGraph(attributePaths = {"bookingList", "bookingList.place"}) Optional findByCode(String code); + + Optional findByUsername(String username); } diff --git a/src/main/java/com/example/nto/service/EmployeeService.java b/src/main/java/com/example/nto/service/EmployeeService.java index 83144af..1b29fd3 100644 --- a/src/main/java/com/example/nto/service/EmployeeService.java +++ b/src/main/java/com/example/nto/service/EmployeeService.java @@ -1,9 +1,13 @@ package com.example.nto.service; +import com.example.nto.controller.dto.EmployeeCreateDto; import com.example.nto.controller.dto.EmployeeDto; +import com.example.nto.entity.Employee; +import com.example.nto.exception.InvalidPassword; public interface EmployeeService { EmployeeDto getByCode(String code); - void auth(String code); + void auth(String username, String password) throws InvalidPassword; + } diff --git a/src/main/java/com/example/nto/service/impl/BookingServiceImpl.java b/src/main/java/com/example/nto/service/impl/BookingServiceImpl.java index ffc4f86..bbf63f4 100644 --- a/src/main/java/com/example/nto/service/impl/BookingServiceImpl.java +++ b/src/main/java/com/example/nto/service/impl/BookingServiceImpl.java @@ -38,7 +38,7 @@ public class BookingServiceImpl implements BookingService { @Override @Transactional(readOnly = true) public Map> getFreePlace(String code) { - employeeService.auth(code); +// employeeService.auth(code); List allPlaces = placeRepository.findAll(); 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 3085dc2..ee3872f 100644 --- a/src/main/java/com/example/nto/service/impl/EmployeeServiceImpl.java +++ b/src/main/java/com/example/nto/service/impl/EmployeeServiceImpl.java @@ -1,13 +1,26 @@ package com.example.nto.service.impl; +import com.example.nto.controller.dto.EmployeeCreateDto; import com.example.nto.controller.dto.EmployeeDto; +import com.example.nto.entity.Employee; +import com.example.nto.exception.EmployeeAlreadyExists; import com.example.nto.exception.EmployeeNotFoundException; +import com.example.nto.exception.InvalidPassword; +import com.example.nto.exception.InvalidUsername; import com.example.nto.repository.EmployeeRepository; import com.example.nto.service.EmployeeService; +import com.example.nto.utils.PasswordValidator; + import lombok.RequiredArgsConstructor; +import lombok.extern.java.Log; +import lombok.extern.slf4j.Slf4j; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; +import java.util.Optional; + + +@Slf4j @Service @RequiredArgsConstructor public class EmployeeServiceImpl implements EmployeeService { @@ -21,11 +34,19 @@ public class EmployeeServiceImpl implements EmployeeService { .orElseThrow(() -> new EmployeeNotFoundException("Employee with " + code + " code not found!")); } + + @Override @Transactional(readOnly = true) - public void auth(String code) { - if (employeeRepository.findByCode(code).isEmpty()) { - throw new EmployeeNotFoundException("Employee with " + code + " code not found!"); + public void auth(String username, String password) throws InvalidPassword { + Optional employee = employeeRepository.findByUsername(username); + if(employee.isEmpty()){ + throw new InvalidUsername("Invalid Username"); + } + + + if(!EmployeeDto.toDto(employee.get()).getPassword().equals(password)){ + throw new InvalidPassword("Wrong password: " + password + " " + EmployeeDto.toDto(employee.get()).getPassword()); } } } diff --git a/src/main/resources/db.changelog/1/0/2025-11-05--0001-employee.xml b/src/main/resources/db.changelog/1/0/2025-11-05--0001-employee.xml index d1f92f8..1017f74 100644 --- a/src/main/resources/db.changelog/1/0/2025-11-05--0001-employee.xml +++ b/src/main/resources/db.changelog/1/0/2025-11-05--0001-employee.xml @@ -21,6 +21,14 @@ + + + + + + + + diff --git a/src/main/resources/db.changelog/data/csv/2025-11-05--0001-employee-data.csv b/src/main/resources/db.changelog/data/csv/2025-11-05--0001-employee-data.csv index 87ddc6b..d2015e1 100644 --- a/src/main/resources/db.changelog/data/csv/2025-11-05--0001-employee-data.csv +++ b/src/main/resources/db.changelog/data/csv/2025-11-05--0001-employee-data.csv @@ -1,5 +1,5 @@ -name;code;photo_url -Ivanov Ivan;1111;https://catalog-cdn.detmir.st/media/2fe02057f9915e72a378795d32c79ea9.jpeg -Petrov Petr;2222;https://catalog-cdn.detmir.st/media/2fe02057f9915e72a378795d32c79ea9.jpeg -Kozlov Oleg;3333;https://catalog-cdn.detmir.st/media/2fe02057f9915e72a378795d32c79ea9.jpeg -Smirnova Anna;4444;https://catalog-cdn.detmir.st/media/2fe02057f9915e72a378795d32c79ea9.jpeg \ No newline at end of file +name;code;photo_url;password;username +Ivanov Ivan;1111;https://catalog-cdn.detmir.st/media/2fe02057f9915e72a378795d32c79ea9.jpeg;bac12345;ivan +Petrov Petr;2222;https://catalog-cdn.detmir.st/media/2fe02057f9915e72a378795d32c79ea9.jpeg;bac12345;petr +Kozlov Oleg;3333;https://catalog-cdn.detmir.st/media/2fe02057f9915e72a378795d32c79ea9.jpeg;bac12345;oleg +Smirnova Anna;4444;https://catalog-cdn.udetmir.st/media/2fe02057f9915e72a378795d32c79ea9.jpeg;bac12345;anna \ No newline at end of file