diff --git a/src/main/java/com/example/nto/App.java b/src/main/java/com/example/nto/App.java index cfd9169..14ab398 100644 --- a/src/main/java/com/example/nto/App.java +++ b/src/main/java/com/example/nto/App.java @@ -3,9 +3,10 @@ package com.example.nto; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; -@SpringBootApplication +@SpringBootApplication() public class App { public static void main(String[] args) { - SpringApplication.run(App.class); + SpringApplication.run(App.class,args); + } } diff --git a/src/main/java/com/example/nto/Generate.java b/src/main/java/com/example/nto/Generate.java new file mode 100644 index 0000000..d1b3679 --- /dev/null +++ b/src/main/java/com/example/nto/Generate.java @@ -0,0 +1,16 @@ +package com.example.nto; + +import org.springframework.security.crypto.bcrypt.BCryptPasswordEncoder; +import org.springframework.security.crypto.password.PasswordEncoder; + +public class Generate { + public static void main(String[] args) { + PasswordEncoder passwordEncoder = new BCryptPasswordEncoder(); + String rawPassword = "admin"; + + + String hashedPassword = passwordEncoder.encode(rawPassword); + + System.out.println("Хеш пароля: " + hashedPassword); + } +} diff --git a/src/main/java/com/example/nto/config/SwaggerConfig.java b/src/main/java/com/example/nto/confg/SwaggerConfig.java similarity index 95% rename from src/main/java/com/example/nto/config/SwaggerConfig.java rename to src/main/java/com/example/nto/confg/SwaggerConfig.java index f65a9f5..75db65c 100644 --- a/src/main/java/com/example/nto/config/SwaggerConfig.java +++ b/src/main/java/com/example/nto/confg/SwaggerConfig.java @@ -1,4 +1,4 @@ -package com.example.nto.config; +package com.example.nto.confg; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; @@ -18,4 +18,4 @@ public class SwaggerConfig { .paths(PathSelectors.any()) .build(); } -} \ No newline at end of file +} diff --git a/src/main/java/com/example/nto/config/WebSecurityConfig.java b/src/main/java/com/example/nto/confg/WebSecurityConfig.java similarity index 73% rename from src/main/java/com/example/nto/config/WebSecurityConfig.java rename to src/main/java/com/example/nto/confg/WebSecurityConfig.java index a2a6420..d2e6c50 100644 --- a/src/main/java/com/example/nto/config/WebSecurityConfig.java +++ b/src/main/java/com/example/nto/confg/WebSecurityConfig.java @@ -1,12 +1,9 @@ -package com.example.nto.config; +package com.example.nto.confg; -import com.example.nto.service.EmployeeService; import lombok.RequiredArgsConstructor; -import org.springframework.boot.web.servlet.FilterRegistrationBean; import org.springframework.boot.web.servlet.support.ErrorPageFilter; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; -import org.springframework.security.authentication.AuthenticationManager; import org.springframework.security.config.annotation.authentication.builders.AuthenticationManagerBuilder; import org.springframework.security.config.annotation.web.builders.HttpSecurity; import org.springframework.security.config.annotation.web.configuration.EnableWebSecurity; @@ -15,7 +12,7 @@ import org.springframework.security.core.userdetails.UserDetailsService; import org.springframework.security.crypto.bcrypt.BCryptPasswordEncoder; import org.springframework.security.crypto.password.PasswordEncoder; -import javax.servlet.Filter; + @Configuration @@ -28,16 +25,13 @@ public class WebSecurityConfig extends WebSecurityConfigurerAdapter { protected void configure(HttpSecurity http) throws Exception { http .csrf().disable() - .authorizeRequests() .antMatchers("/h2-console/**").permitAll() - .antMatchers("/api/employees/register").permitAll() - .antMatchers("/api/employees/{username}").permitAll() - .antMatchers("/api/employees/paginated").permitAll() - .antMatchers("/api/employees/unoccupied").permitAll() + .antMatchers("/api/users/register").permitAll() + .antMatchers("/api/users/username/{username}").permitAll() + .antMatchers("/api/users/paginated").permitAll() + .antMatchers("/api/users/login").permitAll() .antMatchers("/api/authority/").permitAll() - .antMatchers("/api/employees/**").hasAnyAuthority("ROLE_USER", "ROLE_ADMIN") - .antMatchers("/api/employees/login").permitAll() .anyRequest().authenticated() .and() .httpBasic() @@ -52,7 +46,6 @@ public class WebSecurityConfig extends WebSecurityConfigurerAdapter { .passwordEncoder(passwordEncoder()); } - @Bean public PasswordEncoder passwordEncoder() { return new BCryptPasswordEncoder(); diff --git a/src/main/java/com/example/nto/controller/AuthorityController.java b/src/main/java/com/example/nto/controller/AuthorityController.java index 24dc1ad..4b5bfc9 100644 --- a/src/main/java/com/example/nto/controller/AuthorityController.java +++ b/src/main/java/com/example/nto/controller/AuthorityController.java @@ -1,4 +1,5 @@ package com.example.nto.controller; + import com.example.nto.entity.Authority; import com.example.nto.service.AuthorityService; import lombok.RequiredArgsConstructor; @@ -30,12 +31,12 @@ public class AuthorityController { @GetMapping("/{id}") @ResponseStatus(HttpStatus.OK) - public ResponseEntity idRole(@PathVariable Long id) { + public ResponseEntity login(@PathVariable Long id) { String idn = authorityService.isAdmin(id); if (Objects.equals(idn, "ROLE_ADMIN")) { - return ResponseEntity.ok("Является администратором");} + return ResponseEntity.ok("is Admin");} else { - return ResponseEntity.status(HttpStatus.FORBIDDEN).body("Не является администратором"); + return ResponseEntity.status(HttpStatus.FORBIDDEN).body("is Not Admin"); } } -} \ No newline at end of file +} diff --git a/src/main/java/com/example/nto/controller/CodeController.java b/src/main/java/com/example/nto/controller/CodeController.java index 7523ac4..1594a75 100644 --- a/src/main/java/com/example/nto/controller/CodeController.java +++ b/src/main/java/com/example/nto/controller/CodeController.java @@ -1,21 +1,24 @@ package com.example.nto.controller; -import com.example.nto.entity.Code; -import com.example.nto.entity.Employee; +import com.example.nto.dto.CodeDTO; +import com.example.nto.entity.Users; import com.example.nto.service.CodeService; import lombok.RequiredArgsConstructor; +import org.springframework.security.core.Authentication; import org.springframework.web.bind.annotation.*; +import java.util.Optional; + @RestController @RequiredArgsConstructor public class CodeController { private final CodeService codeService; - @PatchMapping("/api/{username}/open") - public Employee update(@PathVariable String username, @RequestBody Code newCode) { -// return codeService.openDoor(username, newCode.getValue()); - return null; - //TODO Service доделать и открыть тут коммент + @PatchMapping("/api/open") + public Optional update(Authentication authentication, @RequestBody CodeDTO newCode) { + String username = authentication.getName(); + return codeService.openDoor(username, newCode.getValue()); + } } diff --git a/src/main/java/com/example/nto/controller/EmployeeController.java b/src/main/java/com/example/nto/controller/EmployeeController.java deleted file mode 100644 index a2c83b7..0000000 --- a/src/main/java/com/example/nto/controller/EmployeeController.java +++ /dev/null @@ -1,45 +0,0 @@ -package com.example.nto.controller; - -import com.example.nto.dto.EmployeeDTO; -import com.example.nto.dto.UserRegisterDTO; -import com.example.nto.entity.Employee; -import com.example.nto.service.EmployeeService; -import io.swagger.models.Response; -import lombok.RequiredArgsConstructor; -import org.springframework.http.HttpStatus; -import org.springframework.http.ResponseEntity; -import org.springframework.security.core.Authentication; -import org.springframework.web.bind.annotation.*; - -@RestController -@RequestMapping("/api/employees") -@RequiredArgsConstructor -public class EmployeeController { - - private final EmployeeService employeeService; - - - @GetMapping("/{username}") - @ResponseStatus(HttpStatus.OK) - public ResponseEntity findByUsername(@PathVariable String username) { - if (employeeService.findExistByUsername(username)) { - return ResponseEntity.ok("Done"); - } else return ResponseEntity.badRequest().body("User is not found"); - } - - @GetMapping("/login") - public ResponseEntity login(Authentication authentication) { - System.out.println("Authentication object: " + authentication); - String username = authentication.getName(); - System.out.println("Username: " + username); - - EmployeeDTO employeeDTO = employeeService.getUserByUsername(username); - if (employeeDTO == null) { - System.out.println("User not found for username: " + username); - return ResponseEntity.status(404).body(null); - } - - System.out.println("EmployeeDTO: " + employeeDTO); - return ResponseEntity.ok(employeeDTO); - } -} diff --git a/src/main/java/com/example/nto/controller/PassController.java b/src/main/java/com/example/nto/controller/PassController.java index 4a152d4..c47f8c2 100644 --- a/src/main/java/com/example/nto/controller/PassController.java +++ b/src/main/java/com/example/nto/controller/PassController.java @@ -1,17 +1,22 @@ package com.example.nto.controller; import com.example.nto.dto.PassDTO; -import com.example.nto.dto.TerminalDTO; +import com.example.nto.entity.Users; +import com.example.nto.repository.UsersRepository; import com.example.nto.service.PassService; -import com.example.nto.service.TerminalService; import lombok.RequiredArgsConstructor; -import org.springframework.data.domain.Page; import org.springframework.data.domain.PageRequest; import org.springframework.data.domain.Pageable; import org.springframework.http.ResponseEntity; -import org.springframework.web.bind.annotation.*; +import org.springframework.security.core.Authentication; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RequestParam; +import org.springframework.web.bind.annotation.RestController; import java.util.List; +import java.util.Objects; +import java.util.Optional; @RestController @@ -20,14 +25,29 @@ import java.util.List; public class PassController { private final PassService passService; + private final UsersRepository usersRepository; @GetMapping("/paginated/") public ResponseEntity> getAllPassesAtUser( - @RequestParam long userId, + @RequestParam(required = false) String username, @RequestParam(defaultValue = "0") int page, - @RequestParam(defaultValue = "10") int size + @RequestParam(defaultValue = "10") int size, + Authentication authentication ) { + String name = authentication.getName(); + if (username == null) { + username = authentication.getName(); + } + Optional user = usersRepository.findByUsername(username); + if (user.isPresent()) { + if (Objects.equals(user.get().getAuthority().getAuthority(), "ROLE_ADMIN")) { + Pageable pageable = PageRequest.of(page, size); + return ResponseEntity.ok(passService.getAllPassesPaginated(pageable, username)); + } + username = authentication.getName(); + } + System.out.println(username); Pageable pageable = PageRequest.of(page, size); - return ResponseEntity.ok(passService.getAllPassesPaginated(pageable, userId)); + return ResponseEntity.ok(passService.getAllPassesPaginated(pageable, username)); } } \ No newline at end of file diff --git a/src/main/java/com/example/nto/controller/TerminalController.java b/src/main/java/com/example/nto/controller/TerminalController.java index 29cf512..8dd7774 100644 --- a/src/main/java/com/example/nto/controller/TerminalController.java +++ b/src/main/java/com/example/nto/controller/TerminalController.java @@ -1,14 +1,13 @@ package com.example.nto.controller; -import com.example.nto.dto.CredentialsDTO; import com.example.nto.dto.TerminalDTO; -import com.example.nto.service.CredentialsService; import com.example.nto.service.TerminalService; import lombok.RequiredArgsConstructor; import org.springframework.http.ResponseEntity; -import org.springframework.web.bind.annotation.*; - -import java.util.List; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.PathVariable; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; @RestController @RequestMapping("/api/terminal") diff --git a/src/main/java/com/example/nto/controller/UsersController.java b/src/main/java/com/example/nto/controller/UsersController.java new file mode 100644 index 0000000..4cfe394 --- /dev/null +++ b/src/main/java/com/example/nto/controller/UsersController.java @@ -0,0 +1,86 @@ +package com.example.nto.controller; + +import com.example.nto.dto.UsersDTO; +import com.example.nto.entity.Users; +import com.example.nto.exception.RoleisNotAdmin; +import com.example.nto.repository.UsersRepository; +import com.example.nto.service.UsersService; +import lombok.RequiredArgsConstructor; +import org.springframework.http.ResponseEntity; +import org.springframework.security.core.Authentication; +import org.springframework.web.bind.annotation.*; + +import java.util.List; +import java.util.Objects; +import java.util.Optional; + +@RestController +@RequestMapping("/api/users") +@RequiredArgsConstructor +public class UsersController { + + private final UsersService usersService; + private final UsersRepository usersRepository; + + @GetMapping + public List getAllUsers() { + return usersService.getAllUsers(); + } + + @GetMapping("/get") + public ResponseEntity getUserByUsername(@RequestParam String username, Authentication authentication) { + String name = authentication.getName(); + Optional user = usersRepository.findByUsername(name); + if (user.isPresent()) { + if(Objects.equals(user.get().getAuthority().getAuthority(), "ROLE_ADMIN")) { + return ResponseEntity.ok(usersService.getUserByUsername(username)); + } + throw new RoleisNotAdmin("User with username " + user.get().getUsername() + " is not admin"); + } + throw new RuntimeException("User is not found"); + } + + + @GetMapping("/username/{username}") + public ResponseEntity getByUsername(@PathVariable String username) { + UsersDTO usersDTO = usersService.getUserByUsername(username); + return ResponseEntity.ok("User " + usersDTO.getUsername() + " is registered"); + } + + @GetMapping("/login") + public ResponseEntity login(Authentication authentication) { + return ResponseEntity.ok(usersService.getUserByUsername(authentication.getName())); + } + @PatchMapping("/block") + public ResponseEntity BlockUser( + @RequestParam() String username, Authentication authentication) { + String name = authentication.getName(); + Optional user = usersRepository.findByUsername(name); + if (user.isPresent()) { + if (Objects.equals(user.get().getAuthority().getAuthority(), "ROLE_ADMIN")) { + return ResponseEntity.ok(usersService.blockUser(username)); + } + throw new RoleisNotAdmin("User with username " + user.get().getUsername() + " is not admin"); + + } + throw new RuntimeException("User not found"); + } + + @PatchMapping("/unblock") + public ResponseEntity UnblockUser( + @RequestParam() String username, Authentication authentication) { + String name = authentication.getName(); + Optional user = usersRepository.findByUsername(name); + if (user.isPresent()) { + if (Objects.equals(user.get().getAuthority().getAuthority(), "ROLE_ADMIN")) { + return ResponseEntity.ok(usersService.unblockUser(username)); + } + throw new RoleisNotAdmin("User with username " + user.get().getUsername() + " is not admin"); + + } + throw new RuntimeException("User not found"); + } + + + +} diff --git a/src/main/java/com/example/nto/dto/AuthorityDTO.java b/src/main/java/com/example/nto/dto/AuthorityDTO.java index 9017e1b..037cd07 100644 --- a/src/main/java/com/example/nto/dto/AuthorityDTO.java +++ b/src/main/java/com/example/nto/dto/AuthorityDTO.java @@ -4,6 +4,7 @@ import lombok.Data; @Data public class AuthorityDTO { + private long id; - private String authority; + private String name; } diff --git a/src/main/java/com/example/nto/dto/CodeDTO.java b/src/main/java/com/example/nto/dto/CodeDTO.java new file mode 100644 index 0000000..774d4d8 --- /dev/null +++ b/src/main/java/com/example/nto/dto/CodeDTO.java @@ -0,0 +1,8 @@ +package com.example.nto.dto; + +import lombok.Data; + +@Data +public class CodeDTO { + private Long value; +} diff --git a/src/main/java/com/example/nto/dto/CredentialsDTO.java b/src/main/java/com/example/nto/dto/CredentialsDTO.java index 8dccb6a..972e9e7 100644 --- a/src/main/java/com/example/nto/dto/CredentialsDTO.java +++ b/src/main/java/com/example/nto/dto/CredentialsDTO.java @@ -4,8 +4,8 @@ import lombok.Data; @Data public class CredentialsDTO { + private long id; private String login; private String hashedPassword; - } diff --git a/src/main/java/com/example/nto/dto/PassDTO.java b/src/main/java/com/example/nto/dto/PassDTO.java index 8c9a775..5a22557 100644 --- a/src/main/java/com/example/nto/dto/PassDTO.java +++ b/src/main/java/com/example/nto/dto/PassDTO.java @@ -1,13 +1,12 @@ package com.example.nto.dto; +import com.example.nto.entity.Terminal; import lombok.Data; import java.time.LocalDateTime; @Data public class PassDTO { - private long id; - private long employee; private LocalDateTime localDateTime; - private long terminal; + private Terminal terminal; } diff --git a/src/main/java/com/example/nto/dto/TerminalDTO.java b/src/main/java/com/example/nto/dto/TerminalDTO.java index ab362d1..f307c57 100644 --- a/src/main/java/com/example/nto/dto/TerminalDTO.java +++ b/src/main/java/com/example/nto/dto/TerminalDTO.java @@ -2,8 +2,6 @@ package com.example.nto.dto; import lombok.Data; -import java.time.LocalDateTime; - @Data public class TerminalDTO { private long id; diff --git a/src/main/java/com/example/nto/dto/UserRegisterDTO.java b/src/main/java/com/example/nto/dto/UserRegisterDTO.java index cee8f4e..c1c7e88 100644 --- a/src/main/java/com/example/nto/dto/UserRegisterDTO.java +++ b/src/main/java/com/example/nto/dto/UserRegisterDTO.java @@ -8,4 +8,5 @@ public class UserRegisterDTO { private String password; private String name; private String lastname; -} \ No newline at end of file + +} diff --git a/src/main/java/com/example/nto/dto/EmployeeDTO.java b/src/main/java/com/example/nto/dto/UsersDTO.java similarity index 77% rename from src/main/java/com/example/nto/dto/EmployeeDTO.java rename to src/main/java/com/example/nto/dto/UsersDTO.java index 44f5941..49e1c6c 100644 --- a/src/main/java/com/example/nto/dto/EmployeeDTO.java +++ b/src/main/java/com/example/nto/dto/UsersDTO.java @@ -5,15 +5,14 @@ import lombok.Data; import java.time.LocalDateTime; @Data -public class EmployeeDTO { +public class UsersDTO { + private long id; private String username; private String name; - private String password; private long authority_id; - private long credentials; private String photo; private String position; + private Boolean isCardBlocked; private LocalDateTime lastVisit; - } diff --git a/src/main/java/com/example/nto/entity/Authority.java b/src/main/java/com/example/nto/entity/Authority.java index 0f07526..557e914 100644 --- a/src/main/java/com/example/nto/entity/Authority.java +++ b/src/main/java/com/example/nto/entity/Authority.java @@ -1,28 +1,19 @@ package com.example.nto.entity; -import lombok.AllArgsConstructor; -import lombok.Builder; import lombok.Data; -import lombok.NoArgsConstructor; import org.springframework.security.core.GrantedAuthority; import javax.persistence.*; @Data @Entity -@Builder -@NoArgsConstructor -@AllArgsConstructor -@Table(name = "Authority") +@Table(name = "authority") public class Authority implements GrantedAuthority { + @Id @GeneratedValue(strategy = GenerationType.IDENTITY) private long id; + @Column(name = "authority") private String authority; - - @Override - public String getAuthority() { - return ""; - } -} +} \ 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 637d9be..a787e64 100644 --- a/src/main/java/com/example/nto/entity/Code.java +++ b/src/main/java/com/example/nto/entity/Code.java @@ -1,5 +1,6 @@ package com.example.nto.entity; +import com.fasterxml.jackson.annotation.JsonIgnore; import lombok.AllArgsConstructor; import lombok.Builder; import lombok.Data; @@ -17,6 +18,10 @@ public class Code { @Id @GeneratedValue(strategy = GenerationType.IDENTITY) private long id; + @ManyToOne + @JoinColumn(name="terminal") + @JsonIgnore + private Terminal terminal; @Column(name = "value") private long value; } diff --git a/src/main/java/com/example/nto/entity/Credentials.java b/src/main/java/com/example/nto/entity/Credentials.java index faf549d..4436fc8 100644 --- a/src/main/java/com/example/nto/entity/Credentials.java +++ b/src/main/java/com/example/nto/entity/Credentials.java @@ -19,4 +19,7 @@ public class Credentials { @Column(name = "hashed_password") private String hashedPassword; + @OneToMany(mappedBy = "credentials") + @JsonIgnore + private List users; } \ No newline at end of file diff --git a/src/main/java/com/example/nto/entity/Pass.java b/src/main/java/com/example/nto/entity/Pass.java index 51dc8a4..c14159a 100644 --- a/src/main/java/com/example/nto/entity/Pass.java +++ b/src/main/java/com/example/nto/entity/Pass.java @@ -2,10 +2,9 @@ package com.example.nto.entity; import com.fasterxml.jackson.annotation.JsonIgnore; import lombok.Data; + import javax.persistence.*; -import java.time.LocalDate; import java.time.LocalDateTime; -import java.util.List; @Data @Entity @@ -16,9 +15,9 @@ public class Pass { private long id; @ManyToOne - @JoinColumn(name = "employee") + @JoinColumn(name = "users") @JsonIgnore - private Employee employee; + private Users users; @Column(name = "time") private LocalDateTime time; diff --git a/src/main/java/com/example/nto/entity/Terminal.java b/src/main/java/com/example/nto/entity/Terminal.java index 5106d95..4dff70c 100644 --- a/src/main/java/com/example/nto/entity/Terminal.java +++ b/src/main/java/com/example/nto/entity/Terminal.java @@ -1,10 +1,8 @@ package com.example.nto.entity; -import com.fasterxml.jackson.annotation.JsonIgnore; import lombok.Data; import javax.persistence.*; -import java.time.LocalDateTime; @Data @Entity diff --git a/src/main/java/com/example/nto/entity/Employee.java b/src/main/java/com/example/nto/entity/Users.java similarity index 83% rename from src/main/java/com/example/nto/entity/Employee.java rename to src/main/java/com/example/nto/entity/Users.java index 8db3b12..952fd48 100644 --- a/src/main/java/com/example/nto/entity/Employee.java +++ b/src/main/java/com/example/nto/entity/Users.java @@ -1,10 +1,7 @@ package com.example.nto.entity; import com.fasterxml.jackson.annotation.JsonIgnore; -import lombok.AllArgsConstructor; -import lombok.Builder; import lombok.Data; -import lombok.NoArgsConstructor; import org.springframework.security.core.GrantedAuthority; import org.springframework.security.core.userdetails.UserDetails; @@ -16,11 +13,8 @@ import java.util.Set; @Data @Entity -@Builder -@NoArgsConstructor -@AllArgsConstructor -@Table(name = "Employee") -public class Employee implements UserDetails { +@Table(name = "users") +public class Users implements UserDetails { @Id @GeneratedValue(strategy = GenerationType.IDENTITY) private long id; @@ -42,18 +36,20 @@ public class Employee implements UserDetails { private String photo; @Column(name = "position") private String position; + @ManyToMany(fetch = FetchType.EAGER) + private Set authorities; @Column(name = "lastVisit") private LocalDateTime lastVisit; + @Column(name = "iscardblocked") + private Boolean isCardBlocked; + @Override public Collection getAuthorities() { return List.of(); } - @Override - public String getUsername() { - return ""; - } + @Override public boolean isAccountNonExpired() { @@ -74,4 +70,5 @@ public class Employee implements UserDetails { public boolean isEnabled() { return true; } -} + +} \ No newline at end of file diff --git a/src/main/java/com/example/nto/exception/PersonAlreadyExistsException.java b/src/main/java/com/example/nto/exception/PersonAlreadyExistsException.java index 82731e2..7b45481 100644 --- a/src/main/java/com/example/nto/exception/PersonAlreadyExistsException.java +++ b/src/main/java/com/example/nto/exception/PersonAlreadyExistsException.java @@ -4,4 +4,4 @@ public class PersonAlreadyExistsException extends RuntimeException { public PersonAlreadyExistsException(String message) { super(message); } -} \ No newline at end of file +} diff --git a/src/main/java/com/example/nto/exception/PersonNotFoundException.java b/src/main/java/com/example/nto/exception/PersonNotFoundException.java index e3fc36f..f32787f 100644 --- a/src/main/java/com/example/nto/exception/PersonNotFoundException.java +++ b/src/main/java/com/example/nto/exception/PersonNotFoundException.java @@ -4,4 +4,4 @@ public class PersonNotFoundException extends RuntimeException { public PersonNotFoundException(String message) { super(message); } -} \ No newline at end of file +} diff --git a/src/main/java/com/example/nto/exception/RoleisNotAdmin.java b/src/main/java/com/example/nto/exception/RoleisNotAdmin.java index c150c36..26e5498 100644 --- a/src/main/java/com/example/nto/exception/RoleisNotAdmin.java +++ b/src/main/java/com/example/nto/exception/RoleisNotAdmin.java @@ -4,4 +4,4 @@ public class RoleisNotAdmin extends RuntimeException { public RoleisNotAdmin(String message) { super(message); } -} \ No newline at end of file +} diff --git a/src/main/java/com/example/nto/exception/handler/GlobalExceptionHandler.java b/src/main/java/com/example/nto/exception/handler/GlobalExceptionHandler.java index 91a9fef..b540010 100644 --- a/src/main/java/com/example/nto/exception/handler/GlobalExceptionHandler.java +++ b/src/main/java/com/example/nto/exception/handler/GlobalExceptionHandler.java @@ -1,6 +1,5 @@ package com.example.nto.exception.handler; - import com.example.nto.exception.PersonAlreadyExistsException; import com.example.nto.exception.PersonNotFoundException; import com.example.nto.exception.RoleisNotAdmin; @@ -11,16 +10,19 @@ import org.springframework.web.bind.annotation.ExceptionHandler; @ControllerAdvice public class GlobalExceptionHandler { - @ExceptionHandler(RoleisNotAdmin.class) - public ResponseEntity handleRoleisNotAdmin(RoleisNotAdmin e) { - return new ResponseEntity<>(e.getMessage(), HttpStatus.BAD_REQUEST); - } + @ExceptionHandler(PersonNotFoundException.class) - public ResponseEntity handlePersonNotFound(PersonNotFoundException e) { + public ResponseEntity handlePersonNotFoundException(PersonNotFoundException e) { return new ResponseEntity<>(e.getMessage(), HttpStatus.NOT_FOUND); } + @ExceptionHandler(PersonAlreadyExistsException.class) - public ResponseEntity handlePersonAlreadyExists(PersonAlreadyExistsException e) { - return new ResponseEntity<>(e.getMessage(), HttpStatus.BAD_GATEWAY); + public ResponseEntity handlePersonAlreadyExistsException(PersonAlreadyExistsException e) { + return new ResponseEntity<>(e.getMessage(), HttpStatus.BAD_REQUEST); + } + + @ExceptionHandler(RoleisNotAdmin.class) + public ResponseEntity hadnleRoleisNotAdmin(RoleisNotAdmin e) { + return new ResponseEntity<>(e.getMessage(), HttpStatus.BAD_REQUEST); } } \ No newline at end of file diff --git a/src/main/java/com/example/nto/repository/AuthorityRepository.java b/src/main/java/com/example/nto/repository/AuthorityRepository.java index 11cd7a6..f105b43 100644 --- a/src/main/java/com/example/nto/repository/AuthorityRepository.java +++ b/src/main/java/com/example/nto/repository/AuthorityRepository.java @@ -1,6 +1,5 @@ package com.example.nto.repository; -import com.example.nto.dto.AuthorityDTO; import com.example.nto.entity.Authority; import org.springframework.data.jpa.repository.JpaRepository; import org.springframework.stereotype.Repository; @@ -10,4 +9,4 @@ import java.util.Optional; @Repository public interface AuthorityRepository extends JpaRepository { Optional findByAuthority(String Authority); -} \ No newline at end of file +} diff --git a/src/main/java/com/example/nto/repository/CodeRepository.java b/src/main/java/com/example/nto/repository/CodeRepository.java index 4fa3542..ef6c2b6 100644 --- a/src/main/java/com/example/nto/repository/CodeRepository.java +++ b/src/main/java/com/example/nto/repository/CodeRepository.java @@ -2,12 +2,15 @@ package com.example.nto.repository; import com.example.nto.entity.Code; import org.springframework.data.jpa.repository.JpaRepository; -import org.springframework.data.jpa.repository.Query; import org.springframework.stereotype.Repository; +import java.util.Optional; + @Repository public interface CodeRepository extends JpaRepository { - @Query("select count(e) = 1 from Code e where value = ?1") - boolean findExistByValue(Long value); + + + + Optional findByValue(Long value); } diff --git a/src/main/java/com/example/nto/repository/CredentialsRepository.java b/src/main/java/com/example/nto/repository/CredentialsRepository.java index 87fcf1b..c90dbe5 100644 --- a/src/main/java/com/example/nto/repository/CredentialsRepository.java +++ b/src/main/java/com/example/nto/repository/CredentialsRepository.java @@ -8,5 +8,5 @@ import java.util.Optional; @Repository public interface CredentialsRepository extends JpaRepository { - Optional findByLogin(String username); -} \ No newline at end of file + Optional findByLogin(String login); +} diff --git a/src/main/java/com/example/nto/repository/EmployeeRepository.java b/src/main/java/com/example/nto/repository/EmployeeRepository.java deleted file mode 100644 index 429d31c..0000000 --- a/src/main/java/com/example/nto/repository/EmployeeRepository.java +++ /dev/null @@ -1,17 +0,0 @@ -package com.example.nto.repository; - -import com.example.nto.entity.Employee; -import org.springframework.data.jpa.repository.JpaRepository; -import org.springframework.data.jpa.repository.Query; -import org.springframework.stereotype.Repository; - -import java.util.Optional; - -@Repository -public interface EmployeeRepository extends JpaRepository { - - Optional findByUsername(String username); - Employee findById(long id); - Boolean findExistByUsername(String username); - -} diff --git a/src/main/java/com/example/nto/repository/PassRepository.java b/src/main/java/com/example/nto/repository/PassRepository.java index 8da8c92..c6abc76 100644 --- a/src/main/java/com/example/nto/repository/PassRepository.java +++ b/src/main/java/com/example/nto/repository/PassRepository.java @@ -1,7 +1,6 @@ package com.example.nto.repository; import com.example.nto.entity.Pass; -import com.example.nto.entity.Terminal; import org.springframework.data.jpa.repository.JpaRepository; import org.springframework.stereotype.Repository; diff --git a/src/main/java/com/example/nto/repository/UsersRepository.java b/src/main/java/com/example/nto/repository/UsersRepository.java new file mode 100644 index 0000000..74a6876 --- /dev/null +++ b/src/main/java/com/example/nto/repository/UsersRepository.java @@ -0,0 +1,20 @@ +package com.example.nto.repository; + +import com.example.nto.entity.Users; +import org.springframework.data.domain.Page; +import org.springframework.data.domain.Pageable; +import org.springframework.data.jpa.repository.JpaRepository; +import org.springframework.stereotype.Repository; + +import java.util.List; +import java.util.Optional; + +@Repository +public interface UsersRepository extends JpaRepository { + Optional findByCredentialsId(Integer credentialsId); + Optional findByAuthorityId(Integer authorityId); + Optional findByUsername(String username); + + + Page findAll(Pageable pageable); +} diff --git a/src/main/java/com/example/nto/service/AuthorityService.java b/src/main/java/com/example/nto/service/AuthorityService.java index 82fe52f..319b05b 100644 --- a/src/main/java/com/example/nto/service/AuthorityService.java +++ b/src/main/java/com/example/nto/service/AuthorityService.java @@ -11,4 +11,4 @@ public interface AuthorityService { List getAll(); String isAdmin(Long id); -} \ No newline at end of file +} diff --git a/src/main/java/com/example/nto/service/CodeService.java b/src/main/java/com/example/nto/service/CodeService.java index f4fb452..01d92cb 100644 --- a/src/main/java/com/example/nto/service/CodeService.java +++ b/src/main/java/com/example/nto/service/CodeService.java @@ -1,12 +1,12 @@ package com.example.nto.service; -import com.example.nto.entity.Employee; +import com.example.nto.entity.Users; import java.util.Optional; public interface CodeService { Boolean findExistByValue(Long value); - Optional openDoor(String username, Long value); + Optional openDoor(String username, Long value); } diff --git a/src/main/java/com/example/nto/service/CredentialsService.java b/src/main/java/com/example/nto/service/CredentialsService.java index 5e5be11..3307a7f 100644 --- a/src/main/java/com/example/nto/service/CredentialsService.java +++ b/src/main/java/com/example/nto/service/CredentialsService.java @@ -1,4 +1,3 @@ - package com.example.nto.service; import com.example.nto.dto.CredentialsDTO; diff --git a/src/main/java/com/example/nto/service/EmployeeService.java b/src/main/java/com/example/nto/service/EmployeeService.java deleted file mode 100644 index 0baf492..0000000 --- a/src/main/java/com/example/nto/service/EmployeeService.java +++ /dev/null @@ -1,23 +0,0 @@ -package com.example.nto.service; - -import com.example.nto.dto.EmployeeDTO; -import com.example.nto.dto.UserRegisterDTO; -import com.example.nto.entity.Employee; - -import java.util.Optional; - -public interface EmployeeService { - - Employee updateEmployee(long id, Employee newEmployee); - Optional findByUsername(String username); - - EmployeeDTO findById(Long id); - - boolean findExistByUsername(String username); - - EmployeeDTO createUser(UserRegisterDTO dto); - - EmployeeDTO getUserByUsername(String username); - - EmployeeDTO get(String name); -} diff --git a/src/main/java/com/example/nto/service/PassService.java b/src/main/java/com/example/nto/service/PassService.java index d9bb46b..deadf20 100644 --- a/src/main/java/com/example/nto/service/PassService.java +++ b/src/main/java/com/example/nto/service/PassService.java @@ -2,17 +2,14 @@ package com.example.nto.service; import com.example.nto.dto.PassDTO; -import org.springframework.data.domain.Page; import org.springframework.data.domain.Pageable; import org.springframework.stereotype.Service; import java.util.List; -import java.util.Optional; @Service public interface PassService { List getPassAtUser(long id); - - List getAllPassesPaginated(Pageable pageable, long id); + List getAllPassesPaginated(Pageable pageable, String username); } diff --git a/src/main/java/com/example/nto/service/TerminalService.java b/src/main/java/com/example/nto/service/TerminalService.java index a69e05a..59adcb2 100644 --- a/src/main/java/com/example/nto/service/TerminalService.java +++ b/src/main/java/com/example/nto/service/TerminalService.java @@ -1,12 +1,9 @@ package com.example.nto.service; -import com.example.nto.dto.CredentialsDTO; import com.example.nto.dto.TerminalDTO; import org.springframework.stereotype.Service; -import java.util.List; - @Service public interface TerminalService { TerminalDTO getTerminalbyId(Long id); diff --git a/src/main/java/com/example/nto/service/UsersService.java b/src/main/java/com/example/nto/service/UsersService.java new file mode 100644 index 0000000..af4bbe8 --- /dev/null +++ b/src/main/java/com/example/nto/service/UsersService.java @@ -0,0 +1,22 @@ +package com.example.nto.service; + +import com.example.nto.dto.UsersDTO; +import com.example.nto.entity.Users; +import org.springframework.stereotype.Service; + +import java.util.List; + +@Service +public interface UsersService { + List getAllUsers(); + UsersDTO getUserbyId(Long id); + + + Users updateEmployee(long id, Users newUser); + String blockUser(String username); + + String unblockUser(String username); + + UsersDTO getUserByUsername(String username); + +} diff --git a/src/main/java/com/example/nto/service/impl/AuthorityServiceImpl.java b/src/main/java/com/example/nto/service/impl/AuthorityServiceImpl.java index a70dcf0..6ea58b0 100644 --- a/src/main/java/com/example/nto/service/impl/AuthorityServiceImpl.java +++ b/src/main/java/com/example/nto/service/impl/AuthorityServiceImpl.java @@ -19,7 +19,9 @@ public class AuthorityServiceImpl implements AuthorityService { public Authority add(Authority authority) { Optional optionalAuthority = authorityRepository.findByAuthority(authority.getAuthority()); - return optionalAuthority.orElseGet(() -> authorityRepository.save(authority)); + + if (optionalAuthority.isPresent()) return optionalAuthority.get(); + else return authorityRepository.save(authority); } @Override public List getAll() { @@ -33,4 +35,4 @@ public class AuthorityServiceImpl implements AuthorityService { return existingsAuthority.getAuthority(); } -} \ No newline at end of file +} diff --git a/src/main/java/com/example/nto/service/impl/CodeServiceImpl.java b/src/main/java/com/example/nto/service/impl/CodeServiceImpl.java new file mode 100644 index 0000000..8626dad --- /dev/null +++ b/src/main/java/com/example/nto/service/impl/CodeServiceImpl.java @@ -0,0 +1,55 @@ +package com.example.nto.service.impl; + +import com.example.nto.entity.Code; +import com.example.nto.entity.Pass; +import com.example.nto.entity.Users; +import com.example.nto.exception.RoleisNotAdmin; +import com.example.nto.repository.CodeRepository; +import com.example.nto.repository.PassRepository; +import com.example.nto.repository.UsersRepository; +import com.example.nto.service.CodeService; +import com.example.nto.service.UsersService; +import lombok.RequiredArgsConstructor; +import org.springframework.http.HttpStatus; +import org.springframework.stereotype.Service; +import org.springframework.web.server.ResponseStatusException; + +import java.time.LocalDateTime; +import java.util.Optional; + +@Service +@RequiredArgsConstructor +public class CodeServiceImpl implements CodeService { + + private final CodeRepository codeRepository; + private final UsersRepository usersRepository; + private final UsersService usersService; + private final PassRepository passRepository; + + @Override + public Boolean findExistByValue(Long value) { + return codeRepository.findByValue(value).isPresent(); + } + + @Override + public Optional openDoor(String username, Long value) { + if (usersRepository.findByUsername(username).isPresent() && findExistByValue(value)) { + Optional user = usersRepository.findByUsername(username); + Optional code = codeRepository.findByValue(value); + if (!user.get().getIsCardBlocked()) { + Pass pass = new Pass(); + pass.setTerminal(code.get().getTerminal()); + pass.setUsers(user.get()); + pass.setTime(LocalDateTime.now()); + passRepository.save(pass); + user.get().setLastVisit(LocalDateTime.now()); + + return Optional.ofNullable(usersService.updateEmployee(user.get().getId(), user.orElse(null))); + } + throw new RoleisNotAdmin("Card is blocked"); + } + + throw new ResponseStatusException(HttpStatus.BAD_REQUEST); + + } +} diff --git a/src/main/java/com/example/nto/service/impl/CredentialsServiceImpl.java b/src/main/java/com/example/nto/service/impl/CredentialsServiceImpl.java index 769b5aa..39de772 100644 --- a/src/main/java/com/example/nto/service/impl/CredentialsServiceImpl.java +++ b/src/main/java/com/example/nto/service/impl/CredentialsServiceImpl.java @@ -4,7 +4,7 @@ import com.example.nto.dto.CredentialsDTO; import com.example.nto.entity.Credentials; import com.example.nto.repository.CredentialsRepository; import com.example.nto.service.CredentialsService; -import com.example.nto.utils.CredentialsMapper; +import com.example.nto.util.CredentialsMapper; import lombok.RequiredArgsConstructor; import org.springframework.stereotype.Service; @@ -64,4 +64,4 @@ public class CredentialsServiceImpl implements CredentialsService { public void deleteCredentials(Long id) { credentialsRepository.deleteById(id); } -} \ No newline at end of file +} diff --git a/src/main/java/com/example/nto/service/impl/EmployeeCodeServiceImpl.java b/src/main/java/com/example/nto/service/impl/EmployeeCodeServiceImpl.java deleted file mode 100644 index 09ced4c..0000000 --- a/src/main/java/com/example/nto/service/impl/EmployeeCodeServiceImpl.java +++ /dev/null @@ -1,139 +0,0 @@ -package com.example.nto.service.impl; - -import com.example.nto.dto.EmployeeDTO; -import com.example.nto.dto.UserRegisterDTO; -import com.example.nto.entity.Authority; -import com.example.nto.entity.Credentials; -import com.example.nto.entity.Employee; -import com.example.nto.exception.PersonAlreadyExistsException; -import com.example.nto.exception.PersonNotFoundException; -import com.example.nto.repository.AuthorityRepository; -import com.example.nto.repository.CodeRepository; -import com.example.nto.repository.CredentialsRepository; -import com.example.nto.repository.EmployeeRepository; -import com.example.nto.service.CodeService; -import com.example.nto.service.EmployeeService; -import com.example.nto.utils.EmployeeMapper; -import lombok.RequiredArgsConstructor; -import org.springframework.http.HttpStatus; -import org.springframework.security.crypto.password.PasswordEncoder; -import org.springframework.stereotype.Service; -import org.springframework.web.server.ResponseStatusException; - -import java.time.LocalDateTime; -import java.util.Optional; -import java.util.Set; - -@Service -@RequiredArgsConstructor -public class EmployeeCodeServiceImpl implements EmployeeService, CodeService { - - private final EmployeeRepository employeeRepository; - private final CodeRepository codeRepository; - private final PasswordEncoder passwordEncoder; - private final AuthorityRepository authorityRepository; - private final CredentialsRepository credentialsRepository; - - @Override - public Employee updateEmployee(long id, Employee newEmployee) { - Optional optionalEmployee = Optional.ofNullable(employeeRepository.findById(id)); - if (optionalEmployee.isEmpty()) throw new RuntimeException("No such user with id " + id); - - Employee employee = optionalEmployee.get(); - employee.setName(newEmployee.getName()); - employee.setUsername(newEmployee.getUsername()); - employee.setPhoto(newEmployee.getPhoto()); - employee.setPosition(newEmployee.getPosition()); - employee.setLastVisit(newEmployee.getLastVisit()); - - return employeeRepository.save(employee); - } - - @Override - public Optional findByUsername(String username) { - if (employeeRepository.findExistByUsername(username)) - return employeeRepository.findByUsername(username); - throw new ResponseStatusException(HttpStatus.UNAUTHORIZED, - "There is no account with login " + username + " or it is incorrect"); - } - - - - @Override - public EmployeeDTO findById(Long id) { - return employeeRepository.findById(id) - .map(EmployeeMapper::convertDTO) - .orElseThrow(() -> new PersonNotFoundException("Person not found!")); - } - - @Override - public boolean findExistByUsername(String username) { - if (employeeRepository.findExistByUsername(username)) - throw new ResponseStatusException(HttpStatus.OK, "Login is existing, processing"); - throw new ResponseStatusException(HttpStatus.UNAUTHORIZED, - "There is no account with login " + username + " or it is incorrect"); - - } - - - @Override - public Optional openDoor(String username, Long value) { -// if (findByLogin(login) != null && findExistByValue(value)) { -// Optional employee = findByLogin(login); -// employee.ifPresent(employee1 -> employee1.setLastVisit(LocalDateTime.now())); -// employee.setLastVisit(LocalDateTime.now()); -// -// return updateEmployee(employee.getId(), employee); -// } -// -// throw new ResponseStatusException(HttpStatus.BAD_REQUEST); - return null; - // TODO Доделать элемент с OpenDoor - } - - @Override - public Boolean findExistByValue(Long value) { - if (codeRepository.findExistByValue(value)) - return codeRepository.findExistByValue(value); - throw new ResponseStatusException(HttpStatus.BAD_REQUEST); - } - @Override - public EmployeeDTO createUser(UserRegisterDTO dto) { - - - Optional roleUser = authorityRepository.findByAuthority("ROlE_USER"); - System.out.println(roleUser); - - if (roleUser.isEmpty()) throw new RuntimeException("Roles not found"); - Credentials credentials = new Credentials(); - credentials.setLogin(dto.getUsername()); - credentials.setHashedPassword(passwordEncoder.encode(dto.getPassword())); - Credentials credentialSave = credentialsRepository.save(credentials); - Employee employee = new Employee(); - employee.setUsername(dto.getUsername()); - employee.setName(dto.getName()); - employee.setPassword(passwordEncoder.encode(dto.getPassword())); - employee.setCredentials(credentials); - employee.setAuthority(roleUser.get()); - - - - Employee savedUser = employeeRepository.save(employee); - return EmployeeMapper.convertDTO(savedUser); - } - @Override - public EmployeeDTO getUserByUsername(String username) { - System.out.println(username); - Optional optionalUsers = employeeRepository.findByUsername(username); - System.out.println(optionalUsers); - if (optionalUsers.isEmpty()) { - throw new PersonNotFoundException("User with username " + username + "not found"); - } - return EmployeeMapper.convertDTO(optionalUsers.get()); - } - - @Override - public EmployeeDTO get(String name) { - return null; - } -} diff --git a/src/main/java/com/example/nto/service/impl/PassServiceImpl.java b/src/main/java/com/example/nto/service/impl/PassServiceImpl.java index 2f98d9f..2f1e155 100644 --- a/src/main/java/com/example/nto/service/impl/PassServiceImpl.java +++ b/src/main/java/com/example/nto/service/impl/PassServiceImpl.java @@ -3,13 +3,13 @@ package com.example.nto.service.impl; import com.example.nto.dto.PassDTO; import com.example.nto.repository.PassRepository; import com.example.nto.service.PassService; -import com.example.nto.utils.PassMapper; +import com.example.nto.util.PassMapper; import lombok.RequiredArgsConstructor; -import org.springframework.data.domain.Page; import org.springframework.data.domain.Pageable; import org.springframework.stereotype.Service; import java.util.List; +import java.util.Objects; import java.util.stream.Collectors; @Service @@ -22,14 +22,16 @@ public class PassServiceImpl implements PassService { @Override public List getPassAtUser(long id) { return passRepository.findAll().stream() - .filter(pass -> pass.getEmployee().toString().equals(id)) + .filter(pass -> pass.getUsers().getId() == id) .map(PassMapper::convertDTO) .collect(Collectors.toList()); } @Override - public List getAllPassesPaginated(Pageable pageable, long id) { - return passRepository.findAll(pageable) - .filter(pass -> pass.getEmployee().toString().equals(id)) - .map(PassMapper::convertDTO).toList(); + public List getAllPassesPaginated(Pageable pageable, String username) { + return passRepository.findAll(pageable).stream() + .filter(pass -> Objects.equals(pass.getUsers().getUsername(), username)) + .map(PassMapper::convertDTO) + .collect(Collectors.toList()); + } } \ No newline at end of file diff --git a/src/main/java/com/example/nto/service/impl/TerminalServiceimpl.java b/src/main/java/com/example/nto/service/impl/TerminalServiceimpl.java index 3e0c855..af1d047 100644 --- a/src/main/java/com/example/nto/service/impl/TerminalServiceimpl.java +++ b/src/main/java/com/example/nto/service/impl/TerminalServiceimpl.java @@ -1,21 +1,14 @@ package com.example.nto.service.impl; -import com.example.nto.dto.CredentialsDTO; import com.example.nto.dto.TerminalDTO; -import com.example.nto.entity.Credentials; import com.example.nto.entity.Terminal; -import com.example.nto.repository.CredentialsRepository; import com.example.nto.repository.TerminalRepository; -import com.example.nto.service.CredentialsService; import com.example.nto.service.TerminalService; -import com.example.nto.utils.CredentialsMapper; -import com.example.nto.utils.TerminalMapper; +import com.example.nto.util.TerminalMapper; import lombok.RequiredArgsConstructor; import org.springframework.stereotype.Service; -import java.util.List; import java.util.Optional; -import java.util.stream.Collectors; @Service @RequiredArgsConstructor diff --git a/src/main/java/com/example/nto/service/impl/UserDetailsServiceImpl.java b/src/main/java/com/example/nto/service/impl/UserDetailsServiceImpl.java index f97c2fa..b40f2fe 100644 --- a/src/main/java/com/example/nto/service/impl/UserDetailsServiceImpl.java +++ b/src/main/java/com/example/nto/service/impl/UserDetailsServiceImpl.java @@ -1,7 +1,7 @@ package com.example.nto.service.impl; -import com.example.nto.entity.Employee; -import com.example.nto.repository.EmployeeRepository; +import com.example.nto.entity.Users; +import com.example.nto.repository.UsersRepository; import lombok.RequiredArgsConstructor; import org.springframework.security.core.userdetails.UserDetails; import org.springframework.security.core.userdetails.UserDetailsService; @@ -14,14 +14,14 @@ import java.util.Optional; @RequiredArgsConstructor public class UserDetailsServiceImpl implements UserDetailsService { - private final EmployeeRepository employeeRepository; + private final UsersRepository usersRepository; @Override public UserDetails loadUserByUsername(String s) throws UsernameNotFoundException { - Optional optionalUsers = employeeRepository.findByUsername(s); + Optional optionalUsers = usersRepository.findByUsername(s); if(optionalUsers.isEmpty()) { throw new UsernameNotFoundException("User not found"); } return optionalUsers.get(); } -} \ No newline at end of file +} diff --git a/src/main/java/com/example/nto/service/impl/UsersServiceImpl.java b/src/main/java/com/example/nto/service/impl/UsersServiceImpl.java new file mode 100644 index 0000000..9c5cff2 --- /dev/null +++ b/src/main/java/com/example/nto/service/impl/UsersServiceImpl.java @@ -0,0 +1,95 @@ +package com.example.nto.service.impl; + +import com.example.nto.dto.UsersDTO; +import com.example.nto.entity.*; +import com.example.nto.exception.PersonNotFoundException; +import com.example.nto.repository.*; +import com.example.nto.service.UsersService; +import com.example.nto.util.UsersMapper; +import lombok.RequiredArgsConstructor; +import org.springframework.security.crypto.password.PasswordEncoder; +import org.springframework.stereotype.Service; + +import java.util.List; +import java.util.Optional; +import java.util.stream.Collectors; + +@Service +@RequiredArgsConstructor +public class UsersServiceImpl implements UsersService { + + private final UsersRepository usersRepository; + private final CredentialsRepository credentialsRepository; + private final AuthorityRepository rolesRepository; + private final PasswordEncoder passwordEncoder; + + @Override + public List getAllUsers() { + return usersRepository.findAll().stream() + .map(UsersMapper::convertDTO) + .collect(Collectors.toList()); + } + + + + + @Override + public UsersDTO getUserbyId(Long id) { + return usersRepository.findById(id) + .map(UsersMapper::convertDTO) + .orElseThrow(() -> new PersonNotFoundException("Person not found!")); + } + + + @Override + public Users updateEmployee(long id, Users newUser) { + Optional optionalEmployee = usersRepository.findById(id); + if (optionalEmployee.isEmpty()) throw new RuntimeException("No such user with id " + id); + + Pass pass = new Pass(); + Users users = optionalEmployee.get(); + users.setName(newUser.getName()); + users.setUsername(newUser.getUsername()); + users.setPhoto(newUser.getPhoto()); + users.setPosition(newUser.getPosition()); + users.setLastVisit(newUser.getLastVisit()); + + return usersRepository.save(users); + } + + @Override + public String blockUser(String username) { + Optional users = usersRepository.findByUsername(username); + + if (users.isPresent()) { + Users user = users.get(); + user.setIsCardBlocked(true); + usersRepository.save(user); + return "Blocked user"; + } + throw new RuntimeException("No such user with username " + username); + } + @Override + public String unblockUser(String username) { + Optional users = usersRepository.findByUsername(username); + + if (users.isPresent()) { + Users user = users.get(); + user.setIsCardBlocked(false); + usersRepository.save(user); + return "Unblocked user"; + } + throw new PersonNotFoundException("No such user with username " + username); + } + + + @Override + public UsersDTO getUserByUsername(String username) { + Optional optionalUsers = usersRepository.findByUsername(username); + + if (optionalUsers.isEmpty()) { + throw new PersonNotFoundException("User with username " + username + "not found"); + } + return UsersMapper.convertDTO(optionalUsers.get()); + } +} diff --git a/src/main/java/com/example/nto/utils/AuthorityMapper.java b/src/main/java/com/example/nto/util/AuthorityMapper.java similarity index 52% rename from src/main/java/com/example/nto/utils/AuthorityMapper.java rename to src/main/java/com/example/nto/util/AuthorityMapper.java index 670984e..dbc0e4d 100644 --- a/src/main/java/com/example/nto/utils/AuthorityMapper.java +++ b/src/main/java/com/example/nto/util/AuthorityMapper.java @@ -1,14 +1,15 @@ -package com.example.nto.utils; -import com.example.nto.entity.Authority; +package com.example.nto.util; + import com.example.nto.dto.AuthorityDTO; +import com.example.nto.entity.Authority; import lombok.experimental.UtilityClass; @UtilityClass public class AuthorityMapper { public static AuthorityDTO convertDTO(Authority role) { - AuthorityDTO authorityDTO = new AuthorityDTO(); - authorityDTO.setId(role.getId()); - authorityDTO.setAuthority(role.getAuthority()); - return authorityDTO; + AuthorityDTO rolesDTO = new AuthorityDTO(); + rolesDTO.setId(role.getId()); + rolesDTO.setName(role.getAuthority()); + return rolesDTO; } -} \ No newline at end of file +} diff --git a/src/main/java/com/example/nto/utils/CredentialsMapper.java b/src/main/java/com/example/nto/util/CredentialsMapper.java similarity index 82% rename from src/main/java/com/example/nto/utils/CredentialsMapper.java rename to src/main/java/com/example/nto/util/CredentialsMapper.java index f322311..2953d0a 100644 --- a/src/main/java/com/example/nto/utils/CredentialsMapper.java +++ b/src/main/java/com/example/nto/util/CredentialsMapper.java @@ -1,8 +1,6 @@ -package com.example.nto.utils; +package com.example.nto.util; -import com.example.nto.dto.AuthorityDTO; import com.example.nto.dto.CredentialsDTO; -import com.example.nto.entity.Authority; import com.example.nto.entity.Credentials; import lombok.experimental.UtilityClass; @@ -15,4 +13,4 @@ public class CredentialsMapper { credentialsDTO.setHashedPassword(credentials.getHashedPassword()); return credentialsDTO; } -} \ No newline at end of file +} diff --git a/src/main/java/com/example/nto/utils/PassMapper.java b/src/main/java/com/example/nto/util/PassMapper.java similarity index 61% rename from src/main/java/com/example/nto/utils/PassMapper.java rename to src/main/java/com/example/nto/util/PassMapper.java index a656b13..f17b6a9 100644 --- a/src/main/java/com/example/nto/utils/PassMapper.java +++ b/src/main/java/com/example/nto/util/PassMapper.java @@ -1,4 +1,4 @@ -package com.example.nto.utils; +package com.example.nto.util; @@ -6,20 +6,19 @@ import com.example.nto.dto.PassDTO; import com.example.nto.entity.Pass; import lombok.experimental.UtilityClass; + @UtilityClass public class PassMapper { public static PassDTO convertDTO(Pass pass) { PassDTO passDTO = new PassDTO(); - passDTO.setId(pass.getId()); - if (pass.getEmployee() != null) { - passDTO.setEmployee(pass.getEmployee().getId()); - } + passDTO.setLocalDateTime(pass.getTime()); if (pass.getTerminal() != null) { - passDTO.setTerminal(pass.getTerminal().getId()); + passDTO.setTerminal(pass.getTerminal()); } + return passDTO; } } \ No newline at end of file diff --git a/src/main/java/com/example/nto/utils/TerminalMapper.java b/src/main/java/com/example/nto/util/TerminalMapper.java similarity index 93% rename from src/main/java/com/example/nto/utils/TerminalMapper.java rename to src/main/java/com/example/nto/util/TerminalMapper.java index fd244ae..019ebcc 100644 --- a/src/main/java/com/example/nto/utils/TerminalMapper.java +++ b/src/main/java/com/example/nto/util/TerminalMapper.java @@ -1,4 +1,4 @@ -package com.example.nto.utils; +package com.example.nto.util; diff --git a/src/main/java/com/example/nto/util/UsersMapper.java b/src/main/java/com/example/nto/util/UsersMapper.java new file mode 100644 index 0000000..1f76622 --- /dev/null +++ b/src/main/java/com/example/nto/util/UsersMapper.java @@ -0,0 +1,27 @@ +package com.example.nto.util; + +import com.example.nto.dto.UsersDTO; +import com.example.nto.entity.Users; +import lombok.experimental.UtilityClass; + +@UtilityClass +public class UsersMapper { + public static UsersDTO convertDTO(Users user) { + UsersDTO usersDTO = new UsersDTO(); + usersDTO.setId(user.getId()); + usersDTO.setUsername(user.getUsername()); + usersDTO.setName(user.getName()); + if (user.getAuthority() != null) { + usersDTO.setAuthority_id(user.getAuthority().getId()); + } + usersDTO.setPhoto(user.getPhoto()); + usersDTO.setPosition(user.getPosition()); + usersDTO.setLastVisit(user.getLastVisit()); + usersDTO.setIsCardBlocked(false); + + + return usersDTO; + + } + +} diff --git a/src/main/java/com/example/nto/utils/EmployeeMapper.java b/src/main/java/com/example/nto/utils/EmployeeMapper.java deleted file mode 100644 index c97efca..0000000 --- a/src/main/java/com/example/nto/utils/EmployeeMapper.java +++ /dev/null @@ -1,28 +0,0 @@ -package com.example.nto.utils; - - -import com.example.nto.dto.EmployeeDTO; -import com.example.nto.entity.Employee; -import lombok.experimental.UtilityClass; - -@UtilityClass -public class EmployeeMapper { - public static EmployeeDTO convertDTO(Employee user) { - EmployeeDTO employeeDTO = new EmployeeDTO(); - employeeDTO.setId(user.getId()); - employeeDTO.setUsername(user.getUsername()); - employeeDTO.setName(user.getName()); - if (user.getAuthority() != null) { - employeeDTO.setAuthority_id(user.getAuthority().getId()); - } - if (user.getCredentials() != null) { - employeeDTO.setCredentials(user.getCredentials().getId()); - } - employeeDTO.setPassword(user.getPassword()); - employeeDTO.setPhoto(user.getPhoto()); - employeeDTO.setPosition(user.getPosition()); - employeeDTO.setLastVisit(user.getLastVisit()); - - return employeeDTO; - } -} \ No newline at end of file diff --git a/src/main/resources/application.yml b/src/main/resources/application.yml index 500cdaa..61cb31d 100644 --- a/src/main/resources/application.yml +++ b/src/main/resources/application.yml @@ -2,7 +2,6 @@ spring: datasource: url: jdbc:h2:mem:testdb - h2: console: enabled: true @@ -18,9 +17,4 @@ spring: generate-ddl: false hibernate: ddl-auto: none - show-sql: true - - spring-doc: - swagger-ui: - path: /swagger-ui.html - operationsSorter: method \ No newline at end of file + show-sql: true \ No newline at end of file diff --git a/src/main/resources/db.changelog/1.0/2025-02-19--0001-code-terminal.xml b/src/main/resources/db.changelog/1.0/2025-02-19--0001-code-terminal.xml new file mode 100644 index 0000000..da4f869 --- /dev/null +++ b/src/main/resources/db.changelog/1.0/2025-02-19--0001-code-terminal.xml @@ -0,0 +1,24 @@ + + + + + + + + + + + + + + + + + + diff --git a/src/main/resources/db.changelog/1.0/2025-02-19--0001-code.xml b/src/main/resources/db.changelog/1.0/2025-02-19--0001-code.xml index 8434599..e18742e 100644 --- a/src/main/resources/db.changelog/1.0/2025-02-19--0001-code.xml +++ b/src/main/resources/db.changelog/1.0/2025-02-19--0001-code.xml @@ -13,6 +13,8 @@ + + diff --git a/src/main/resources/db.changelog/1.0/2025-02-19--0001-pass-terminal.xml b/src/main/resources/db.changelog/1.0/2025-02-19--0001-pass-terminal.xml new file mode 100644 index 0000000..844b36a --- /dev/null +++ b/src/main/resources/db.changelog/1.0/2025-02-19--0001-pass-terminal.xml @@ -0,0 +1,24 @@ + + + + + + + + + + + + + + + + + + diff --git a/src/main/resources/db.changelog/1.0/2025-02-19--0001-pass-users.xml b/src/main/resources/db.changelog/1.0/2025-02-19--0001-pass-users.xml new file mode 100644 index 0000000..50b53a7 --- /dev/null +++ b/src/main/resources/db.changelog/1.0/2025-02-19--0001-pass-users.xml @@ -0,0 +1,24 @@ + + + + + + + + + + + + + + + + + + diff --git a/src/main/resources/db.changelog/1.0/2025-02-19--0001-pass.xml b/src/main/resources/db.changelog/1.0/2025-02-19--0001-pass.xml index 13db1a3..7d1b2d4 100644 --- a/src/main/resources/db.changelog/1.0/2025-02-19--0001-pass.xml +++ b/src/main/resources/db.changelog/1.0/2025-02-19--0001-pass.xml @@ -11,11 +11,11 @@ - + - + diff --git a/src/main/resources/db.changelog/1.0/2025-02-19--0001-employee-authorities.xml b/src/main/resources/db.changelog/1.0/2025-02-19--0001-users-authorities.xml similarity index 79% rename from src/main/resources/db.changelog/1.0/2025-02-19--0001-employee-authorities.xml rename to src/main/resources/db.changelog/1.0/2025-02-19--0001-users-authorities.xml index fe04a92..06c424d 100644 --- a/src/main/resources/db.changelog/1.0/2025-02-19--0001-employee-authorities.xml +++ b/src/main/resources/db.changelog/1.0/2025-02-19--0001-users-authorities.xml @@ -6,13 +6,13 @@ xsi:schemaLocation="http://www.liquibase.org/xml/ns/dbchangelog http://www.liquibase.org/xml/ns/dbchangelog/dbchangelog-3.10.xsd"> - - + + - - + diff --git a/src/main/resources/db.changelog/1.0/2025-02-19--0001-users-is-card-blocked.xml b/src/main/resources/db.changelog/1.0/2025-02-19--0001-users-is-card-blocked.xml new file mode 100644 index 0000000..6713ac4 --- /dev/null +++ b/src/main/resources/db.changelog/1.0/2025-02-19--0001-users-is-card-blocked.xml @@ -0,0 +1,24 @@ + + + + + + + + + + + + + + + + + + diff --git a/src/main/resources/db.changelog/1.0/2025-02-19--0001-employee.xml b/src/main/resources/db.changelog/1.0/2025-02-19--0001-users.xml similarity index 84% rename from src/main/resources/db.changelog/1.0/2025-02-19--0001-employee.xml rename to src/main/resources/db.changelog/1.0/2025-02-19--0001-users.xml index 28e9aaf..5f1653a 100644 --- a/src/main/resources/db.changelog/1.0/2025-02-19--0001-employee.xml +++ b/src/main/resources/db.changelog/1.0/2025-02-19--0001-users.xml @@ -6,8 +6,8 @@ xsi:schemaLocation="http://www.liquibase.org/xml/ns/dbchangelog http://www.liquibase.org/xml/ns/dbchangelog/dbchangelog-3.10.xsd"> - - + + @@ -23,6 +23,9 @@ + + + diff --git a/src/main/resources/db.changelog/data/2025-02-19--0001-employee-authorities-data.xml b/src/main/resources/db.changelog/data/2025-02-19--0001-code-terminal-data.xml similarity index 62% rename from src/main/resources/db.changelog/data/2025-02-19--0001-employee-authorities-data.xml rename to src/main/resources/db.changelog/data/2025-02-19--0001-code-terminal-data.xml index 594c684..49fd898 100644 --- a/src/main/resources/db.changelog/data/2025-02-19--0001-employee-authorities-data.xml +++ b/src/main/resources/db.changelog/data/2025-02-19--0001-code-terminal-data.xml @@ -5,12 +5,12 @@ http://www.liquibase.org/xml/ns/dbchangelog/dbchangelog-3.8.xsd"> - + - - + diff --git a/src/main/resources/db.changelog/data/2025-02-19--0001-pass-terminal-data.xml b/src/main/resources/db.changelog/data/2025-02-19--0001-pass-terminal-data.xml new file mode 100644 index 0000000..1cdfc36 --- /dev/null +++ b/src/main/resources/db.changelog/data/2025-02-19--0001-pass-terminal-data.xml @@ -0,0 +1,17 @@ + + + + + + + + + + \ No newline at end of file diff --git a/src/main/resources/db.changelog/data/2025-02-19--0001-pass-users-data.xml b/src/main/resources/db.changelog/data/2025-02-19--0001-pass-users-data.xml new file mode 100644 index 0000000..7485a08 --- /dev/null +++ b/src/main/resources/db.changelog/data/2025-02-19--0001-pass-users-data.xml @@ -0,0 +1,17 @@ + + + + + + + + + + \ No newline at end of file diff --git a/src/main/resources/db.changelog/data/2025-02-19--0001-terminal-data.xml b/src/main/resources/db.changelog/data/2025-02-19--0001-terminal-data.xml index 56a0826..717343e 100644 --- a/src/main/resources/db.changelog/data/2025-02-19--0001-terminal-data.xml +++ b/src/main/resources/db.changelog/data/2025-02-19--0001-terminal-data.xml @@ -5,7 +5,7 @@ http://www.liquibase.org/xml/ns/dbchangelog/dbchangelog-3.8.xsd"> - + diff --git a/src/main/resources/db.changelog/data/2025-02-19--0001-users-authorities-data.xml b/src/main/resources/db.changelog/data/2025-02-19--0001-users-authorities-data.xml new file mode 100644 index 0000000..3142170 --- /dev/null +++ b/src/main/resources/db.changelog/data/2025-02-19--0001-users-authorities-data.xml @@ -0,0 +1,17 @@ + + + + + + + + + + \ No newline at end of file diff --git a/src/main/resources/db.changelog/data/2025-02-19--0001-employee-data.xml b/src/main/resources/db.changelog/data/2025-02-19--0001-users-data.xml similarity index 66% rename from src/main/resources/db.changelog/data/2025-02-19--0001-employee-data.xml rename to src/main/resources/db.changelog/data/2025-02-19--0001-users-data.xml index 3e55117..a64545f 100644 --- a/src/main/resources/db.changelog/data/2025-02-19--0001-employee-data.xml +++ b/src/main/resources/db.changelog/data/2025-02-19--0001-users-data.xml @@ -5,12 +5,12 @@ http://www.liquibase.org/xml/ns/dbchangelog/dbchangelog-3.8.xsd"> - + - - + diff --git a/src/main/resources/db.changelog/data/2025-02-19--0001-users-is-card-blocked-data.xml b/src/main/resources/db.changelog/data/2025-02-19--0001-users-is-card-blocked-data.xml new file mode 100644 index 0000000..5993716 --- /dev/null +++ b/src/main/resources/db.changelog/data/2025-02-19--0001-users-is-card-blocked-data.xml @@ -0,0 +1,17 @@ + + + + + + + + + + \ No newline at end of file diff --git a/src/main/resources/db.changelog/data/csv/2025-02-19--0001-code-data.csv b/src/main/resources/db.changelog/data/csv/2025-02-19--0001-code-data.csv index 44a67f9..31103c9 100644 --- a/src/main/resources/db.changelog/data/csv/2025-02-19--0001-code-data.csv +++ b/src/main/resources/db.changelog/data/csv/2025-02-19--0001-code-data.csv @@ -1,6 +1,6 @@ -value -123456789 -123456789 -123456789 -123456789 -123456789 \ No newline at end of file +value;terminal +123456789;2 +1234567891;1 +1234567892;1 +1234567893;2 +1234567894;2 \ No newline at end of file diff --git a/src/main/resources/db.changelog/data/csv/2025-02-19--0001-code-terminal-data.csv b/src/main/resources/db.changelog/data/csv/2025-02-19--0001-code-terminal-data.csv new file mode 100644 index 0000000..00503f4 --- /dev/null +++ b/src/main/resources/db.changelog/data/csv/2025-02-19--0001-code-terminal-data.csv @@ -0,0 +1,6 @@ +code_id;terminal_ids +1;1 +2;2 +3;2 +4;1 +5;1 diff --git a/src/main/resources/db.changelog/data/csv/2025-02-19--0001-employee-authorities-data.csv b/src/main/resources/db.changelog/data/csv/2025-02-19--0001-employee-authorities-data.csv deleted file mode 100644 index b90a7a7..0000000 --- a/src/main/resources/db.changelog/data/csv/2025-02-19--0001-employee-authorities-data.csv +++ /dev/null @@ -1,5 +0,0 @@ -employee_id;authorities_id -1;1 -2;1 -3;1 -4;2 diff --git a/src/main/resources/db.changelog/data/csv/2025-02-19--0001-employee-data.csv b/src/main/resources/db.changelog/data/csv/2025-02-19--0001-employee-data.csv deleted file mode 100644 index fb56e33..0000000 --- a/src/main/resources/db.changelog/data/csv/2025-02-19--0001-employee-data.csv +++ /dev/null @@ -1,5 +0,0 @@ -username;credentials;name;password;photo;position -pivanov;1; Иванов Петр Федорович;$2a$10$mq/UrB0MPG6.Fw2h.4gRauGYa7Zy37dveEU3U1mn22oHxCK7km24e;https://funnyducks.ru/upload/iblock/0cd/0cdeb7ec3ed6fddda0f90fccee05557d.jpg;Разработчик -ipetrov;2; Петров Иван Константинович;$2a$10$mq/UrB0MPG6.Fw2h.4gRauGYa7Zy37dveEU3U1mn22oHxCK7km24e;https://funnyducks.ru/upload/iblock/0cd/0cdeb7ec3ed6fddda0f90fccee05557d.jpg;Аналитик -asemenov;3; Семенов Анатолий Анатольевич;$2a$10$mq/UrB0MPG6.Fw2h.4gRauGYa7Zy37dveEU3U1mn22oHxCK7km24e;https://funnyducks.ru/upload/iblock/0cd/0cdeb7ec3ed6fddda0f90fccee05557d.jpg;Разработчик -afedorov;4; Федоров Александр Сергеевич;$2a$10$mq/UrB0MPG6.Fw2h.4gRauGYa7Zy37dveEU3U1mn22oHxCK7km24e;https://funnyducks.ru/upload/iblock/0cd/0cdeb7ec3ed6fddda0f90fccee05557d.jpg;Тестировщик \ No newline at end of file diff --git a/src/main/resources/db.changelog/data/csv/2025-02-19--0001-pass-data.csv b/src/main/resources/db.changelog/data/csv/2025-02-19--0001-pass-data.csv index c4c41ea..ea49246 100644 --- a/src/main/resources/db.changelog/data/csv/2025-02-19--0001-pass-data.csv +++ b/src/main/resources/db.changelog/data/csv/2025-02-19--0001-pass-data.csv @@ -1,5 +1,5 @@ -employee;time -1;2023-05-29T10:15:30 -2;2021-05-29T10:15:30 -3;2022-05-29T10:15:30 -4;2025-05-29T10:15:30 \ No newline at end of file +users;time;terminal +1;2023-05-29T10:15:30;1 +2;2021-05-29T10:15:30;2 +3;2022-05-29T10:15:30;2 +4;2025-05-29T10:15:30;1 \ No newline at end of file diff --git a/src/main/resources/db.changelog/data/csv/2025-02-19--0001-pass-terminal-data.csv b/src/main/resources/db.changelog/data/csv/2025-02-19--0001-pass-terminal-data.csv new file mode 100644 index 0000000..1e303cf --- /dev/null +++ b/src/main/resources/db.changelog/data/csv/2025-02-19--0001-pass-terminal-data.csv @@ -0,0 +1,5 @@ +pass_id;terminal_ids +1;1 +2;1 +2;1 +1;1 diff --git a/src/main/resources/db.changelog/data/csv/2025-02-19--0001-pass-users-data.csv b/src/main/resources/db.changelog/data/csv/2025-02-19--0001-pass-users-data.csv new file mode 100644 index 0000000..475a191 --- /dev/null +++ b/src/main/resources/db.changelog/data/csv/2025-02-19--0001-pass-users-data.csv @@ -0,0 +1,5 @@ +pass_id;users_ids +1;1 +2;2 +2;3 +2;4 diff --git a/src/main/resources/db.changelog/data/csv/2025-02-19--0001-users-authorities-data.csv b/src/main/resources/db.changelog/data/csv/2025-02-19--0001-users-authorities-data.csv new file mode 100644 index 0000000..c1265cd --- /dev/null +++ b/src/main/resources/db.changelog/data/csv/2025-02-19--0001-users-authorities-data.csv @@ -0,0 +1,5 @@ +users_id;authorities_id +1;1 +2;1 +3;1 +4;2 diff --git a/src/main/resources/db.changelog/data/csv/2025-02-19--0001-users-data.csv b/src/main/resources/db.changelog/data/csv/2025-02-19--0001-users-data.csv new file mode 100644 index 0000000..5690ed8 --- /dev/null +++ b/src/main/resources/db.changelog/data/csv/2025-02-19--0001-users-data.csv @@ -0,0 +1,5 @@ +username;credentials;authority_id;name;password;photo;position;isCardBlocked +pivanov;1;1; Иванов Петр Федорович;$2a$10$mq/UrB0MPG6.Fw2h.4gRauGYa7Zy37dveEU3U1mn22oHxCK7km24e;https://funnyducks.ru/upload/iblock/0cd/0cdeb7ec3ed6fddda0f90fccee05557d.jpg;Разработчик;false +ipetrov;2;1; Петров Иван Константинович;$2a$10$mq/UrB0MPG6.Fw2h.4gRauGYa7Zy37dveEU3U1mn22oHxCK7km24e;https://funnyducks.ru/upload/iblock/0cd/0cdeb7ec3ed6fddda0f90fccee05557d.jpg;Аналитик;false +asemenov;3;1; Семенов Анатолий Анатольевич;$2a$10$mq/UrB0MPG6.Fw2h.4gRauGYa7Zy37dveEU3U1mn22oHxCK7km24e;https://funnyducks.ru/upload/iblock/0cd/0cdeb7ec3ed6fddda0f90fccee05557d.jpg;Разработчик;false +afedorov;4;2; Федоров Александр Сергеевич;$2a$10$mq/UrB0MPG6.Fw2h.4gRauGYa7Zy37dveEU3U1mn22oHxCK7km24e;https://funnyducks.ru/upload/iblock/0cd/0cdeb7ec3ed6fddda0f90fccee05557d.jpg;Тестировщик;false \ No newline at end of file diff --git a/src/main/resources/db.changelog/data/csv/2025-02-19--0001-users-is-card-blocked-data.csv b/src/main/resources/db.changelog/data/csv/2025-02-19--0001-users-is-card-blocked-data.csv new file mode 100644 index 0000000..3694fd4 --- /dev/null +++ b/src/main/resources/db.changelog/data/csv/2025-02-19--0001-users-is-card-blocked-data.csv @@ -0,0 +1,5 @@ +users_id;card_blocked +1;false +2;false +3;false +4;false \ 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 index 9ee695c..c881297 100644 --- a/src/main/resources/db.changelog/db.changelog-master.xml +++ b/src/main/resources/db.changelog/db.changelog-master.xml @@ -4,21 +4,29 @@ xsi:schemaLocation="http://www.liquibase.org/xml/ns/dbchangelog http://www.liquibase.org/xml/ns/dbchangelog/dbchangelog-3.8.xsd"> - + - + + + + - - + - + + + + + + + \ No newline at end of file