From 90b3c97af38294a0eb920766f0c60aa0f6b5fdff Mon Sep 17 00:00:00 2001 From: DARYIEN Date: Tue, 18 Feb 2025 20:34:32 +0300 Subject: [PATCH] First day end commit --- pom.xml | 27 ++++++- .../nto/controller/EmployeeController.java | 1 - .../com/example/nto/entity/Authority.java | 19 +++++ .../java/com/example/nto/entity/Code.java | 9 ++- .../java/com/example/nto/entity/Employee.java | 43 +++++++---- .../java/com/example/nto/entity/Enter.java | 39 ++++++++++ .../exception/AuthorityNotFoundException.java | 7 -- .../exception/CenterNotFoundException.java | 7 -- .../EmailAlreadyExistsException.java | 7 -- .../exception/InvalidBirthDateException.java | 7 -- .../InvalidDescriptionException.java | 7 -- .../nto/exception/InvalidNameException.java | 7 -- .../exception/InvalidPasswordException.java | 7 -- .../nto/exception/NoRequestBodyException.java | 7 -- .../exception/NoRequestParamsException.java | 7 -- .../example/nto/exception/OtherException.java | 7 -- .../exception/UserHasNoCenterException.java | 7 -- .../nto/exception/UserNotFoundException.java | 7 -- .../UsernameAlreadyExistsException.java | 7 -- .../handler/GlobalExceptionHandler.java | 77 ------------------- .../nto/repository/EmployeeRepository.java | 4 +- .../nto/repository/EnterRepository.java | 9 +++ .../example/nto/service/EmployeeService.java | 3 + .../com/example/nto/service/EnterService.java | 8 ++ .../nto/service/impl/EnterServiceImpl.java | 19 +++++ .../service/impl/UserDetailsServiceImpl.java | 28 +++++++ src/main/resources/application.yml | 14 ++-- src/main/resources/data.sql | 14 ---- .../1.0/2025-01-30--0001-code.xml | 26 +++++++ .../1.0/2025-01-30--0002-employee.xml | 37 +++++++++ .../1.0/2025-02-05--0003-authority.xml | 24 ++++++ .../2025-02-05--0004-employee-authorities.xml | 30 ++++++++ .../data/2025-01-30--0001-code-data.xml | 14 ++++ .../data/2025-01-30--0002-employee-data.xml | 17 ++++ .../data/2025-02-05--0003-authority-data.xml | 14 ++++ ...-02-05--0004-employee-authorities-data.xml | 14 ++++ .../data/2025-02-18--0005-enter-data.xml | 14 ++++ .../data/csv/2025-01-30--0001-code-data.csv | 6 ++ .../csv/2025-01-30--0002-employee-data.csv | 15 ++++ .../csv/2025-02-05--0003-authority-data.csv | 3 + ...-02-05--0003-employee-authorities-data.csv | 3 + .../data/csv/2025-02-18--0005-enter-data.csv | 8 ++ .../db.changelog/db.changelog-master.xml | 16 ++++ 43 files changed, 434 insertions(+), 212 deletions(-) create mode 100644 src/main/java/com/example/nto/entity/Authority.java create mode 100644 src/main/java/com/example/nto/entity/Enter.java delete mode 100644 src/main/java/com/example/nto/exception/AuthorityNotFoundException.java delete mode 100644 src/main/java/com/example/nto/exception/CenterNotFoundException.java delete mode 100644 src/main/java/com/example/nto/exception/EmailAlreadyExistsException.java delete mode 100644 src/main/java/com/example/nto/exception/InvalidBirthDateException.java delete mode 100644 src/main/java/com/example/nto/exception/InvalidDescriptionException.java delete mode 100644 src/main/java/com/example/nto/exception/InvalidNameException.java delete mode 100644 src/main/java/com/example/nto/exception/InvalidPasswordException.java delete mode 100644 src/main/java/com/example/nto/exception/NoRequestBodyException.java delete mode 100644 src/main/java/com/example/nto/exception/NoRequestParamsException.java delete mode 100644 src/main/java/com/example/nto/exception/OtherException.java delete mode 100644 src/main/java/com/example/nto/exception/UserHasNoCenterException.java delete mode 100644 src/main/java/com/example/nto/exception/UserNotFoundException.java delete mode 100644 src/main/java/com/example/nto/exception/UsernameAlreadyExistsException.java delete mode 100644 src/main/java/com/example/nto/exception/handler/GlobalExceptionHandler.java create mode 100644 src/main/java/com/example/nto/repository/EnterRepository.java create mode 100644 src/main/java/com/example/nto/service/EnterService.java create mode 100644 src/main/java/com/example/nto/service/impl/EnterServiceImpl.java create mode 100644 src/main/java/com/example/nto/service/impl/UserDetailsServiceImpl.java delete mode 100644 src/main/resources/data.sql create mode 100644 src/main/resources/db.changelog/1.0/2025-01-30--0001-code.xml create mode 100644 src/main/resources/db.changelog/1.0/2025-01-30--0002-employee.xml create mode 100644 src/main/resources/db.changelog/1.0/2025-02-05--0003-authority.xml create mode 100644 src/main/resources/db.changelog/1.0/2025-02-05--0004-employee-authorities.xml create mode 100644 src/main/resources/db.changelog/data/2025-01-30--0001-code-data.xml create mode 100644 src/main/resources/db.changelog/data/2025-01-30--0002-employee-data.xml create mode 100644 src/main/resources/db.changelog/data/2025-02-05--0003-authority-data.xml create mode 100644 src/main/resources/db.changelog/data/2025-02-05--0004-employee-authorities-data.xml create mode 100644 src/main/resources/db.changelog/data/2025-02-18--0005-enter-data.xml create mode 100644 src/main/resources/db.changelog/data/csv/2025-01-30--0001-code-data.csv create mode 100644 src/main/resources/db.changelog/data/csv/2025-01-30--0002-employee-data.csv create mode 100644 src/main/resources/db.changelog/data/csv/2025-02-05--0003-authority-data.csv create mode 100644 src/main/resources/db.changelog/data/csv/2025-02-05--0003-employee-authorities-data.csv create mode 100644 src/main/resources/db.changelog/data/csv/2025-02-18--0005-enter-data.csv create mode 100644 src/main/resources/db.changelog/db.changelog-master.xml diff --git a/pom.xml b/pom.xml index 48f4128..0c123d5 100644 --- a/pom.xml +++ b/pom.xml @@ -37,10 +37,6 @@ org.springframework.boot spring-boot-starter-data-jpa - - org.springdoc - springdoc-openapi-ui - org.junit.jupiter junit-jupiter-engine @@ -49,6 +45,29 @@ org.springframework.boot spring-boot-starter-test + + org.liquibase + liquibase-core + + + + org.springframework.boot + spring-boot-starter-data-jpa + + + org.projectlombok + lombok + + + org.springframework.boot + spring-boot-starter-actuator + + + + org.springframework.boot + spring-boot-starter-security + + \ No newline at end of file diff --git a/src/main/java/com/example/nto/controller/EmployeeController.java b/src/main/java/com/example/nto/controller/EmployeeController.java index 62f199b..fdf1f9a 100644 --- a/src/main/java/com/example/nto/controller/EmployeeController.java +++ b/src/main/java/com/example/nto/controller/EmployeeController.java @@ -56,7 +56,6 @@ public class EmployeeController { response.put("login", user.getLogin()); response.put("name", user.getName()); response.put("photo", user.getPhoto()); - response.put("position", user.getPosition()); response.put("lastVisit", user.getLastVisit()); return ResponseEntity.ok(response); diff --git a/src/main/java/com/example/nto/entity/Authority.java b/src/main/java/com/example/nto/entity/Authority.java new file mode 100644 index 0000000..4062caa --- /dev/null +++ b/src/main/java/com/example/nto/entity/Authority.java @@ -0,0 +1,19 @@ +package com.example.nto.entity; + +import lombok.Data; +import org.springframework.security.core.GrantedAuthority; + +import javax.persistence.*; + +@Entity +@Data +@Table(name="authority") +public class Authority implements GrantedAuthority { + + @Id + @GeneratedValue(strategy = GenerationType.AUTO) + private Long id; + + @Column(name = "authority") + private String authority; +} diff --git a/src/main/java/com/example/nto/entity/Code.java b/src/main/java/com/example/nto/entity/Code.java index c187e89..29e07b4 100644 --- a/src/main/java/com/example/nto/entity/Code.java +++ b/src/main/java/com/example/nto/entity/Code.java @@ -1,6 +1,7 @@ package com.example.nto.entity; import lombok.Data; +import lombok.Getter; import javax.persistence.*; @@ -10,7 +11,11 @@ import javax.persistence.*; public class Code { @Id @GeneratedValue(strategy = GenerationType.IDENTITY) - private long id; + private Long id; - private long value; + @Column(name="name", nullable = false, unique = true) + private Long value; + + @Column(name = "value", nullable = false, unique = true) + private String name; } diff --git a/src/main/java/com/example/nto/entity/Employee.java b/src/main/java/com/example/nto/entity/Employee.java index 81d73f3..8cd5c3f 100644 --- a/src/main/java/com/example/nto/entity/Employee.java +++ b/src/main/java/com/example/nto/entity/Employee.java @@ -4,38 +4,49 @@ import com.fasterxml.jackson.annotation.JsonPropertyOrder; import lombok.*; import javax.persistence.*; +import java.sql.Timestamp; import java.time.LocalDateTime; +import java.util.Set; + @Data @Entity @Table(name = "employee") - -@JsonPropertyOrder({"id", "login", "name", "photo", "position", "lastVisit"}) public class Employee { @Id @GeneratedValue(strategy = GenerationType.IDENTITY) - private long id; + private Long id; - @Getter - @Column(nullable = false, unique = true) + @Column(name="login", nullable = false, unique = true) private String login; - @Getter - @Column(nullable = false) + @Column(name="name", nullable = false) private String name; - @Getter - @Column(nullable = false) + @Column(name="password", nullable = false) + private String password; + + @Column(name="photo") private String photo; - @Getter - @Column(nullable = false) - private String position; + @Column(name = "description") + private String description; - @Getter - @Column(name = "last_visit", nullable = false) - private LocalDateTime lastVisit; + @Column(name = "birth_date") + private String birthDate; - public Long getId() { return id; } + @Column(name = "avatar_url") + private String avatarUrl; + @Column(name = "entered_at") + private Timestamp joinedAt; + + @Column(name = "created_at", nullable = false) + private Timestamp createdAt; + + @Column(name = "last_visit") + private Timestamp lastVisit; + + @OneToMany(fetch = FetchType.EAGER) + private Set authorities; } diff --git a/src/main/java/com/example/nto/entity/Enter.java b/src/main/java/com/example/nto/entity/Enter.java new file mode 100644 index 0000000..896ea61 --- /dev/null +++ b/src/main/java/com/example/nto/entity/Enter.java @@ -0,0 +1,39 @@ +package com.example.nto.entity; + + +import liquibase.pro.packaged.C; +import lombok.Data; +import lombok.Getter; + +import javax.persistence.*; +import java.sql.Timestamp; +import java.time.LocalDateTime; +import java.util.Set; + +@Data +@Entity +@Table(name = "enter") +public class Enter { + @Id + @GeneratedValue(strategy = GenerationType.IDENTITY) + private Long id; + + @ManyToMany + @JoinTable( + name = "enter_employee", // Name of the join table + joinColumns = @JoinColumn(name = "enter_id"), // Column for this entity + inverseJoinColumns = @JoinColumn(name = "employee_id") // Column for the other entity + ) + private Set employees; + + @ManyToMany + @JoinTable( + name = "enter_code", // Name of the join table + joinColumns = @JoinColumn(name = "enter_id"), // Column for this entity + inverseJoinColumns = @JoinColumn(name = "code_id") // Column for the other entity + ) + private Set codes; + @Column(nullable = false) + private Timestamp entered_at; + +} diff --git a/src/main/java/com/example/nto/exception/AuthorityNotFoundException.java b/src/main/java/com/example/nto/exception/AuthorityNotFoundException.java deleted file mode 100644 index 6f971e1..0000000 --- a/src/main/java/com/example/nto/exception/AuthorityNotFoundException.java +++ /dev/null @@ -1,7 +0,0 @@ -package com.example.nto.exception; - -public class AuthorityNotFoundException extends RuntimeException { - public AuthorityNotFoundException(String message) { - super(message); - } -} diff --git a/src/main/java/com/example/nto/exception/CenterNotFoundException.java b/src/main/java/com/example/nto/exception/CenterNotFoundException.java deleted file mode 100644 index 20d4a6f..0000000 --- a/src/main/java/com/example/nto/exception/CenterNotFoundException.java +++ /dev/null @@ -1,7 +0,0 @@ -package com.example.nto.exception; - -public class CenterNotFoundException extends RuntimeException { - public CenterNotFoundException(String message) { - super(message); - } -} diff --git a/src/main/java/com/example/nto/exception/EmailAlreadyExistsException.java b/src/main/java/com/example/nto/exception/EmailAlreadyExistsException.java deleted file mode 100644 index 49cfbc0..0000000 --- a/src/main/java/com/example/nto/exception/EmailAlreadyExistsException.java +++ /dev/null @@ -1,7 +0,0 @@ -package com.example.nto.exception; - -public class EmailAlreadyExistsException extends RuntimeException { - public EmailAlreadyExistsException(String message) { - super(message); - } -} diff --git a/src/main/java/com/example/nto/exception/InvalidBirthDateException.java b/src/main/java/com/example/nto/exception/InvalidBirthDateException.java deleted file mode 100644 index 8bd8a3e..0000000 --- a/src/main/java/com/example/nto/exception/InvalidBirthDateException.java +++ /dev/null @@ -1,7 +0,0 @@ -package com.example.nto.exception; - -public class InvalidBirthDateException extends RuntimeException { - public InvalidBirthDateException(String message) { - super(message); - } -} diff --git a/src/main/java/com/example/nto/exception/InvalidDescriptionException.java b/src/main/java/com/example/nto/exception/InvalidDescriptionException.java deleted file mode 100644 index b91c6a7..0000000 --- a/src/main/java/com/example/nto/exception/InvalidDescriptionException.java +++ /dev/null @@ -1,7 +0,0 @@ -package com.example.nto.exception; - -public class InvalidDescriptionException extends RuntimeException { - public InvalidDescriptionException(String message) { - super(message); - } -} diff --git a/src/main/java/com/example/nto/exception/InvalidNameException.java b/src/main/java/com/example/nto/exception/InvalidNameException.java deleted file mode 100644 index 1cc2218..0000000 --- a/src/main/java/com/example/nto/exception/InvalidNameException.java +++ /dev/null @@ -1,7 +0,0 @@ -package com.example.nto.exception; - -public class InvalidNameException extends RuntimeException { - public InvalidNameException(String message) { - super(message); - } -} diff --git a/src/main/java/com/example/nto/exception/InvalidPasswordException.java b/src/main/java/com/example/nto/exception/InvalidPasswordException.java deleted file mode 100644 index ac6af7c..0000000 --- a/src/main/java/com/example/nto/exception/InvalidPasswordException.java +++ /dev/null @@ -1,7 +0,0 @@ -package com.example.nto.exception; - -public class InvalidPasswordException extends RuntimeException { - public InvalidPasswordException(String message) { - super(message); - } -} diff --git a/src/main/java/com/example/nto/exception/NoRequestBodyException.java b/src/main/java/com/example/nto/exception/NoRequestBodyException.java deleted file mode 100644 index f419b80..0000000 --- a/src/main/java/com/example/nto/exception/NoRequestBodyException.java +++ /dev/null @@ -1,7 +0,0 @@ -package com.example.nto.exception; - -public class NoRequestBodyException extends RuntimeException { - public NoRequestBodyException(String message) { - super(message); - } -} diff --git a/src/main/java/com/example/nto/exception/NoRequestParamsException.java b/src/main/java/com/example/nto/exception/NoRequestParamsException.java deleted file mode 100644 index c97af8e..0000000 --- a/src/main/java/com/example/nto/exception/NoRequestParamsException.java +++ /dev/null @@ -1,7 +0,0 @@ -package com.example.nto.exception; - -public class NoRequestParamsException extends RuntimeException { - public NoRequestParamsException(String message) { - super(message); - } -} diff --git a/src/main/java/com/example/nto/exception/OtherException.java b/src/main/java/com/example/nto/exception/OtherException.java deleted file mode 100644 index 415d034..0000000 --- a/src/main/java/com/example/nto/exception/OtherException.java +++ /dev/null @@ -1,7 +0,0 @@ -package com.example.nto.exception; - -public class OtherException extends RuntimeException { - public OtherException(String message) { - super(message); - } -} diff --git a/src/main/java/com/example/nto/exception/UserHasNoCenterException.java b/src/main/java/com/example/nto/exception/UserHasNoCenterException.java deleted file mode 100644 index c887417..0000000 --- a/src/main/java/com/example/nto/exception/UserHasNoCenterException.java +++ /dev/null @@ -1,7 +0,0 @@ -package com.example.nto.exception; - -public class UserHasNoCenterException extends RuntimeException { - public UserHasNoCenterException(String message) { - super(message); - } -} diff --git a/src/main/java/com/example/nto/exception/UserNotFoundException.java b/src/main/java/com/example/nto/exception/UserNotFoundException.java deleted file mode 100644 index 5db2624..0000000 --- a/src/main/java/com/example/nto/exception/UserNotFoundException.java +++ /dev/null @@ -1,7 +0,0 @@ -package com.example.nto.exception; - -public class UserNotFoundException extends RuntimeException { - public UserNotFoundException(String message) { - super(message); - } -} diff --git a/src/main/java/com/example/nto/exception/UsernameAlreadyExistsException.java b/src/main/java/com/example/nto/exception/UsernameAlreadyExistsException.java deleted file mode 100644 index 52191f2..0000000 --- a/src/main/java/com/example/nto/exception/UsernameAlreadyExistsException.java +++ /dev/null @@ -1,7 +0,0 @@ -package com.example.nto.exception; - -public class UsernameAlreadyExistsException extends RuntimeException { - public UsernameAlreadyExistsException(String message) { - super(message); - } -} diff --git a/src/main/java/com/example/nto/exception/handler/GlobalExceptionHandler.java b/src/main/java/com/example/nto/exception/handler/GlobalExceptionHandler.java deleted file mode 100644 index 3f4f607..0000000 --- a/src/main/java/com/example/nto/exception/handler/GlobalExceptionHandler.java +++ /dev/null @@ -1,77 +0,0 @@ -package com.example.nto.exception.handler; - -import com.example.bootcamp.exception.*; -import liquibase.pro.packaged.E; -import org.springframework.http.HttpStatus; -import org.springframework.http.ResponseEntity; -import org.springframework.web.bind.annotation.ControllerAdvice; -import org.springframework.web.bind.annotation.ExceptionHandler; - -@ControllerAdvice -public class GlobalExceptionHandler { - - @ExceptionHandler(CenterNotFoundException.class) - public ResponseEntity handleCenterNotFoundException(CenterNotFoundException e) { - return new ResponseEntity<>(e.getMessage(), HttpStatus.NOT_FOUND); - } - - @ExceptionHandler(UserNotFoundException.class) - public ResponseEntity handleUserNotFoundException(UserNotFoundException e) { - return new ResponseEntity<>(e.getMessage(), HttpStatus.NOT_FOUND); - } - - @ExceptionHandler(UserHasNoCenterException.class) - public ResponseEntity handleUserException(UserHasNoCenterException e) { - return new ResponseEntity<>(e.getMessage(), HttpStatus.CONFLICT); - } - - @ExceptionHandler(NoRequestBodyException.class) - public ResponseEntity handleNoRequestBodyException(NoRequestBodyException e) { - return new ResponseEntity<>(e.getMessage(), HttpStatus.BAD_REQUEST); - } - - @ExceptionHandler(EmailAlreadyExistsException.class) - public ResponseEntity handleEmailAlreadyExistsException(EmailAlreadyExistsException e) { - return new ResponseEntity<>(e.getMessage(), HttpStatus.CONFLICT); - } - - @ExceptionHandler(NoRequestParamsException.class) - public ResponseEntity handleNoRequestParamsException(NoRequestParamsException e) { - return new ResponseEntity<>(e.getMessage(), HttpStatus.BAD_REQUEST); - } - - @ExceptionHandler(InvalidBirthDateException.class) - public ResponseEntity handleInvalidBirthDateException(InvalidBirthDateException e) { - return new ResponseEntity<>(e.getMessage(), HttpStatus.BAD_REQUEST); - } - - @ExceptionHandler(InvalidPasswordException.class) - public ResponseEntity handleInvalidPasswordException(InvalidPasswordException e) { - return new ResponseEntity<>(e.getMessage(), HttpStatus.BAD_REQUEST); - } - - @ExceptionHandler(InvalidNameException.class) - public ResponseEntity handleInvalidNameException(InvalidNameException e) { - return new ResponseEntity<>(e.getMessage(), HttpStatus.BAD_REQUEST); - } - - @ExceptionHandler(InvalidDescriptionException.class) - public ResponseEntity handleInvalidDescriptionException(InvalidDescriptionException e) { - return new ResponseEntity<>(e.getMessage(), HttpStatus.BAD_REQUEST); - } - - @ExceptionHandler(OtherException.class) - public ResponseEntity handleOtherException(OtherException e) { - return new ResponseEntity<>(e.getMessage(), HttpStatus.INTERNAL_SERVER_ERROR); - } - - @ExceptionHandler(UsernameAlreadyExistsException.class) - public ResponseEntity handleUsernameAlreadyExistsException(UsernameAlreadyExistsException e) { - return new ResponseEntity<>(e.getMessage(), HttpStatus.CONFLICT); - } - - @ExceptionHandler(AuthorityNotFoundException.class) - public ResponseEntity handleAuthorityNotFoundException(AuthorityNotFoundException e) { - return new ResponseEntity<>(e.getMessage(), HttpStatus.NOT_FOUND); - } -} diff --git a/src/main/java/com/example/nto/repository/EmployeeRepository.java b/src/main/java/com/example/nto/repository/EmployeeRepository.java index db111ae..ad713bb 100644 --- a/src/main/java/com/example/nto/repository/EmployeeRepository.java +++ b/src/main/java/com/example/nto/repository/EmployeeRepository.java @@ -3,8 +3,10 @@ package com.example.nto.repository; import com.example.nto.entity.Employee; import org.springframework.data.jpa.repository.JpaRepository; +import java.util.Optional; + public interface EmployeeRepository extends JpaRepository { Boolean existsByLogin(String login); - Employee getEmployeeByLogin(String login); + Optional findByLogin(String login); } \ No newline at end of file diff --git a/src/main/java/com/example/nto/repository/EnterRepository.java b/src/main/java/com/example/nto/repository/EnterRepository.java new file mode 100644 index 0000000..d3a6b7b --- /dev/null +++ b/src/main/java/com/example/nto/repository/EnterRepository.java @@ -0,0 +1,9 @@ +package com.example.nto.repository; + +import com.example.nto.entity.Enter; +import org.springframework.data.jpa.repository.JpaRepository; + +public interface EnterRepository extends JpaRepository { + + Enter getByEmployee(); +} diff --git a/src/main/java/com/example/nto/service/EmployeeService.java b/src/main/java/com/example/nto/service/EmployeeService.java index 3cc5647..e523058 100644 --- a/src/main/java/com/example/nto/service/EmployeeService.java +++ b/src/main/java/com/example/nto/service/EmployeeService.java @@ -1,5 +1,8 @@ package com.example.nto.service; + +import org.springframework.stereotype.Service; + public interface EmployeeService { boolean checkLogin(String login); } \ No newline at end of file diff --git a/src/main/java/com/example/nto/service/EnterService.java b/src/main/java/com/example/nto/service/EnterService.java new file mode 100644 index 0000000..77a9866 --- /dev/null +++ b/src/main/java/com/example/nto/service/EnterService.java @@ -0,0 +1,8 @@ +package com.example.nto.service; + +import com.example.nto.entity.Enter; +import org.springframework.stereotype.Service; + +public interface EnterService { + Enter getEnterByLogin(String Login); +} diff --git a/src/main/java/com/example/nto/service/impl/EnterServiceImpl.java b/src/main/java/com/example/nto/service/impl/EnterServiceImpl.java new file mode 100644 index 0000000..9fe4271 --- /dev/null +++ b/src/main/java/com/example/nto/service/impl/EnterServiceImpl.java @@ -0,0 +1,19 @@ +package com.example.nto.service.impl; + +import com.example.nto.entity.Enter; +import com.example.nto.repository.EnterRepository; +import com.example.nto.service.EnterService; +import lombok.RequiredArgsConstructor; +import org.springframework.stereotype.Service; + +@Service +@RequiredArgsConstructor +public class EnterServiceImpl implements EnterService { + + private final EnterRepository enterRepository; + + @Override + public Enter getEnterByLogin(String Login) { + return null; + } +} diff --git a/src/main/java/com/example/nto/service/impl/UserDetailsServiceImpl.java b/src/main/java/com/example/nto/service/impl/UserDetailsServiceImpl.java new file mode 100644 index 0000000..997c207 --- /dev/null +++ b/src/main/java/com/example/nto/service/impl/UserDetailsServiceImpl.java @@ -0,0 +1,28 @@ +package com.example.nto.service.impl; + +import com.example.nto.entity.Employee; +import com.example.nto.repository.EmployeeRepository; +import lombok.RequiredArgsConstructor; +import org.springframework.security.core.userdetails.UserDetails; +import org.springframework.security.core.userdetails.UserDetailsService; +import org.springframework.security.core.userdetails.UsernameNotFoundException; +import org.springframework.stereotype.Service; + +import java.util.Optional; + +@Service +@RequiredArgsConstructor +public class UserDetailsServiceImpl implements UserDetailsService { + + private final EmployeeRepository employeeRepository; + + @Override + public UserDetails loadUserByUsername(String s) throws UsernameNotFoundException { + Employee optionalPerson = employeeRepository.findByLogin(s); + if (optionalPerson.isEmpty()) { + throw new UsernameNotFoundException("User not found"); + } + + return optionalPerson.get(); + } +} diff --git a/src/main/resources/application.yml b/src/main/resources/application.yml index c6bfd72..68a4ece 100644 --- a/src/main/resources/application.yml +++ b/src/main/resources/application.yml @@ -9,18 +9,20 @@ spring: enabled: true jpa: - #generate-ddl: false - generate-ddl: true + generate-ddl: false + #generate-ddl: true + hibernate: - #ddl-auto: none - ddl-auto: create-drop + ddl-auto: none + #ddl-auto: create-drop # Показываем запросы show-sql: true - # Своевременный запуск data.sql - defer-datasource-initialization: true + liquibase: + enabled: true + change-log: classpath:db.changelog/db.changelog-master.xml spring-doc: swagger-ui: diff --git a/src/main/resources/data.sql b/src/main/resources/data.sql deleted file mode 100644 index 03720a9..0000000 --- a/src/main/resources/data.sql +++ /dev/null @@ -1,14 +0,0 @@ -INSERT INTO employee (id, login, name, photo, position, last_visit) -VALUES -(1, 'pivanov', 'Иванов Петр Федорович', 'https://funnyducks.ru/upload/iblock/0cd/0cdeb7ec3ed6fddda0f90fccee05557d.jpg', 'Разработчик', '2024-02-12T08:30'), -(2, 'ipetrov', 'Петров Иван Константинович', 'https://funnyducks.ru/upload/iblock/0cd/0cdeb7ec3ed6fddda0f90fccee05557d.jpg', 'Аналитик', '2024-02-13T08:35'), -(3, 'asemenov', 'Семенов Анатолий Анатольевич', 'https://funnyducks.ru/upload/iblock/0cd/0cdeb7ec3ed6fddda0f90fccee05557d.jpg', 'Разработчик', '2024-02-13T08:31'), -(4, 'afedorov', 'Федоров Александр Сергеевич', 'https://funnyducks.ru/upload/iblock/0cd/0cdeb7ec3ed6fddda0f90fccee05557d.jpg', 'Тестировщик', '2024-02-12T08:36'); - -INSERT INTO code (value) -VALUES -(1234567890123456789), -(9223372036854775807), -(1122334455667788990), -(998877665544332211), -(5566778899001122334); \ No newline at end of file diff --git a/src/main/resources/db.changelog/1.0/2025-01-30--0001-code.xml b/src/main/resources/db.changelog/1.0/2025-01-30--0001-code.xml new file mode 100644 index 0000000..b58a5dd --- /dev/null +++ b/src/main/resources/db.changelog/1.0/2025-01-30--0001-code.xml @@ -0,0 +1,26 @@ + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/src/main/resources/db.changelog/1.0/2025-01-30--0002-employee.xml b/src/main/resources/db.changelog/1.0/2025-01-30--0002-employee.xml new file mode 100644 index 0000000..77f49eb --- /dev/null +++ b/src/main/resources/db.changelog/1.0/2025-01-30--0002-employee.xml @@ -0,0 +1,37 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/src/main/resources/db.changelog/1.0/2025-02-05--0003-authority.xml b/src/main/resources/db.changelog/1.0/2025-02-05--0003-authority.xml new file mode 100644 index 0000000..2b33f7a --- /dev/null +++ b/src/main/resources/db.changelog/1.0/2025-02-05--0003-authority.xml @@ -0,0 +1,24 @@ + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/src/main/resources/db.changelog/1.0/2025-02-05--0004-employee-authorities.xml b/src/main/resources/db.changelog/1.0/2025-02-05--0004-employee-authorities.xml new file mode 100644 index 0000000..46cd0b8 --- /dev/null +++ b/src/main/resources/db.changelog/1.0/2025-02-05--0004-employee-authorities.xml @@ -0,0 +1,30 @@ + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/src/main/resources/db.changelog/data/2025-01-30--0001-code-data.xml b/src/main/resources/db.changelog/data/2025-01-30--0001-code-data.xml new file mode 100644 index 0000000..788cd95 --- /dev/null +++ b/src/main/resources/db.changelog/data/2025-01-30--0001-code-data.xml @@ -0,0 +1,14 @@ + + + + + + + \ No newline at end of file diff --git a/src/main/resources/db.changelog/data/2025-01-30--0002-employee-data.xml b/src/main/resources/db.changelog/data/2025-01-30--0002-employee-data.xml new file mode 100644 index 0000000..ef03bb7 --- /dev/null +++ b/src/main/resources/db.changelog/data/2025-01-30--0002-employee-data.xml @@ -0,0 +1,17 @@ + + + + + + ALTER TABLE employee ALTER COLUMN created_at SET DEFAULT CURRENT_TIMESTAMP; + + + + \ No newline at end of file diff --git a/src/main/resources/db.changelog/data/2025-02-05--0003-authority-data.xml b/src/main/resources/db.changelog/data/2025-02-05--0003-authority-data.xml new file mode 100644 index 0000000..bd32d7a --- /dev/null +++ b/src/main/resources/db.changelog/data/2025-02-05--0003-authority-data.xml @@ -0,0 +1,14 @@ + + + + + + + \ No newline at end of file diff --git a/src/main/resources/db.changelog/data/2025-02-05--0004-employee-authorities-data.xml b/src/main/resources/db.changelog/data/2025-02-05--0004-employee-authorities-data.xml new file mode 100644 index 0000000..95d9e18 --- /dev/null +++ b/src/main/resources/db.changelog/data/2025-02-05--0004-employee-authorities-data.xml @@ -0,0 +1,14 @@ + + + + + + + \ No newline at end of file diff --git a/src/main/resources/db.changelog/data/2025-02-18--0005-enter-data.xml b/src/main/resources/db.changelog/data/2025-02-18--0005-enter-data.xml new file mode 100644 index 0000000..31f9111 --- /dev/null +++ b/src/main/resources/db.changelog/data/2025-02-18--0005-enter-data.xml @@ -0,0 +1,14 @@ + + + + + + + \ No newline at end of file diff --git a/src/main/resources/db.changelog/data/csv/2025-01-30--0001-code-data.csv b/src/main/resources/db.changelog/data/csv/2025-01-30--0001-code-data.csv new file mode 100644 index 0000000..0efe168 --- /dev/null +++ b/src/main/resources/db.changelog/data/csv/2025-01-30--0001-code-data.csv @@ -0,0 +1,6 @@ +name;value +Вход "A";1234567890123456789 +Вход "Реактор";9223372036854775807 +Вход "Лаборатория";1122334455667788990 +Вход "Навигация";998877665544332211 +Вход "Б";5566778899001122334 \ No newline at end of file diff --git a/src/main/resources/db.changelog/data/csv/2025-01-30--0002-employee-data.csv b/src/main/resources/db.changelog/data/csv/2025-01-30--0002-employee-data.csv new file mode 100644 index 0000000..af66e43 --- /dev/null +++ b/src/main/resources/db.changelog/data/csv/2025-01-30--0002-employee-data.csv @@ -0,0 +1,15 @@ +name;login;password;description;avatar_url +Никита;nzh;$2b$12$.XPrLwQtsr2UzI6M/KiqFO6UY.aUyRULerAd.cgjAeQOLj0pljmPG;sysadmin - is my passion;https://i.pinimg.com/736x/74/50/b2/7450b27aefa67d3ba126dab3023d3a4f.jpg +Ксюша;ksh;$2b$12$.XPrLwQtsr2UzI6M/KiqFO6UY.aUyRULerAd.cgjAeQOLj0pljmPG;ui/ux - true love;https://s2.hostingkartinok.com/uploads/images/2013/08/9b22035204e381ee2b54d10b9251d9e1.png +Вася;vasya;$2b$12$.XPrLwQtsr2UzI6M/KiqFO6UY.aUyRULerAd.cgjAeQOLj0pljmPG;;https://i.pinimg.com/736x/45/76/20/45762041651b269c7375e4bc83137695.jpg +Таня;tanya;$2b$12$.XPrLwQtsr2UzI6M/KiqFO6UY.aUyRULerAd.cgjAeQOLj0pljmPG;;https://encrypted-tbn0.gstatic.com/images?q=tbn:ANd9GcTfk_JZXZ8eWUU-8A6Ls7Qn4pcYpE16rUHy7g&s +Максим;maksim;$2b$12$.XPrLwQtsr2UzI6M/KiqFO6UY.aUyRULerAd.cgjAeQOLj0pljmPG;;https://encrypted-tbn0.gstatic.com/images?q=tbn:ANd9GcQcj2Nr_VM4rvfLeHklb-JA_toVaDg7IFB4Nw&s +Васек;vasya1;$2b$12$.XPrLwQtsr2UzI6M/KiqFO6UY.aUyRULerAd.cgjAeQOLj0pljmPG;;https://i.pinimg.com/736x/45/76/20/45762041651b269c7375e4bc83137695.jpg +Танек;tanya1;$2b$12$.XPrLwQtsr2UzI6M/KiqFO6UY.aUyRULerAd.cgjAeQOLj0pljmPG;;https://encrypted-tbn0.gstatic.com/images?q=tbn:ANd9GcTfk_JZXZ8eWUU-8A6Ls7Qn4pcYpE16rUHy7g&s +Максимок;maksim1;$2b$12$.XPrLwQtsr2UzI6M/KiqFO6UY.aUyRULerAd.cgjAeQOLj0pljmPG;;https://encrypted-tbn0.gstatic.com/images?q=tbn:ANd9GcQcj2Nr_VM4rvfLeHklb-JA_toVaDg7IFB4Nw&s +Петя;petya;$2b$12$.XPrLwQtsr2UzI6M/KiqFO6UY.aUyRULerAd.cgjAeQOLj0pljmPG;;https://encrypted-tbn0.gstatic.com/images?q=tbn:ANd9GcRSwB8zx8dh25EpckaIBW8BRBzHCUNfLwiuhw&s +Петька;petya1;$2b$12$.XPrLwQtsr2UzI6M/KiqFO6UY.aUyRULerAd.cgjAeQOLj0pljmPG;;https://encrypted-tbn0.gstatic.com/images?q=tbn:ANd9GcRSwB8zx8dh25EpckaIBW8BRBzHCUNfLwiuhw&s +Катя;katya;$2b$12$.XPrLwQtsr2UzI6M/KiqFO6UY.aUyRULerAd.cgjAeQOLj0pljmPG;;https://encrypted-tbn0.gstatic.com/images?q=tbn:ANd9GcS_uvFIqpHNQ-DZP7XNbPyYmga5Z1KOxNQfZQ&s +Катька;katya1;$2b$12$.XPrLwQtsr2UzI6M/KiqFO6UY.aUyRULerAd.cgjAeQOLj0pljmPG;;https://encrypted-tbn0.gstatic.com/images?q=tbn:ANd9GcS_uvFIqpHNQ-DZP7XNbPyYmga5Z1KOxNQfZQ&s +Андрей;andrey;$2b$12$.XPrLwQtsr2UzI6M/KiqFO6UY.aUyRULerAd.cgjAeQOLj0pljmPG;; +Андрюха;andrey1;$2b$12$.XPrLwQtsr2UzI6M/KiqFO6UY.aUyRULerAd.cgjAeQOLj0pljmPG;; \ No newline at end of file diff --git a/src/main/resources/db.changelog/data/csv/2025-02-05--0003-authority-data.csv b/src/main/resources/db.changelog/data/csv/2025-02-05--0003-authority-data.csv new file mode 100644 index 0000000..2efec9a --- /dev/null +++ b/src/main/resources/db.changelog/data/csv/2025-02-05--0003-authority-data.csv @@ -0,0 +1,3 @@ +authority +ROLE_USER +ROLE_ADMIN \ No newline at end of file diff --git a/src/main/resources/db.changelog/data/csv/2025-02-05--0003-employee-authorities-data.csv b/src/main/resources/db.changelog/data/csv/2025-02-05--0003-employee-authorities-data.csv new file mode 100644 index 0000000..126b052 --- /dev/null +++ b/src/main/resources/db.changelog/data/csv/2025-02-05--0003-employee-authorities-data.csv @@ -0,0 +1,3 @@ +user_id;authorities_id +1;2 +2;2 diff --git a/src/main/resources/db.changelog/data/csv/2025-02-18--0005-enter-data.csv b/src/main/resources/db.changelog/data/csv/2025-02-18--0005-enter-data.csv new file mode 100644 index 0000000..7c0277b --- /dev/null +++ b/src/main/resources/db.changelog/data/csv/2025-02-18--0005-enter-data.csv @@ -0,0 +1,8 @@ +employee_id;code_id +1;1 +1;3 +1;4 +2;2 +2;3 +2;2 +2;5 \ No newline at end of file diff --git a/src/main/resources/db.changelog/db.changelog-master.xml b/src/main/resources/db.changelog/db.changelog-master.xml new file mode 100644 index 0000000..e365c12 --- /dev/null +++ b/src/main/resources/db.changelog/db.changelog-master.xml @@ -0,0 +1,16 @@ + + + + + + + + + + + + \ No newline at end of file