diff --git a/pom.xml b/pom.xml
index bf9a43a..808ae46 100644
--- a/pom.xml
+++ b/pom.xml
@@ -58,6 +58,41 @@
spring-boot-starter-test
test
+
+ io.swagger
+ swagger-annotations
+ 1.6.14
+
+
+ io.springfox
+ springfox-swagger2
+ 2.9.2
+
+
+
+ io.springfox
+ springfox-swagger-ui
+ 2.9.2
+
+
+
+ org.springframework.security
+ spring-security-web
+
+
+ org.springframework.security
+ spring-security-core
+
+
+ org.springframework.security
+ spring-security-config
+
+
+ org.springframework.security
+ spring-security-taglibs
+
+
+
\ No newline at end of file
diff --git a/src/main/java/com/example/nto/config/SwaggerConfig.java b/src/main/java/com/example/nto/config/SwaggerConfig.java
new file mode 100644
index 0000000..f65a9f5
--- /dev/null
+++ b/src/main/java/com/example/nto/config/SwaggerConfig.java
@@ -0,0 +1,21 @@
+package com.example.nto.config;
+
+import org.springframework.context.annotation.Bean;
+import org.springframework.context.annotation.Configuration;
+import springfox.documentation.builders.PathSelectors;
+import springfox.documentation.builders.RequestHandlerSelectors;
+import springfox.documentation.spi.DocumentationType;
+import springfox.documentation.spring.web.plugins.Docket;
+
+@Configuration
+public class SwaggerConfig {
+
+ @Bean
+ public Docket api() {
+ return new Docket(DocumentationType.SWAGGER_2)
+ .select()
+ .apis(RequestHandlerSelectors.basePackage("com.example.nto"))
+ .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/config/WebSecurityConfig.java
new file mode 100644
index 0000000..5dc057d
--- /dev/null
+++ b/src/main/java/com/example/nto/config/WebSecurityConfig.java
@@ -0,0 +1,62 @@
+package com.example.nto.config;
+
+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.config.annotation.authentication.builders.AuthenticationManagerBuilder;
+import org.springframework.security.config.annotation.web.builders.HttpSecurity;
+import org.springframework.security.config.annotation.web.configuration.EnableWebSecurity;
+import org.springframework.security.config.annotation.web.configuration.WebSecurityConfigurerAdapter;
+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
+@EnableWebSecurity
+@RequiredArgsConstructor
+public class WebSecurityConfig extends WebSecurityConfigurerAdapter {
+
+ private final UserDetailsService userDetailsService;
+ @Override
+ protected void configure(HttpSecurity http) throws Exception {
+ http
+ .csrf().disable()
+ .authorizeRequests()
+ .antMatchers("/h2-console/**").permitAll()
+ .antMatchers("/api/employees/register").permitAll()
+ .antMatchers("/api/employees/{login}").permitAll()
+ .antMatchers("/api/employees/paginated").permitAll()
+ .antMatchers("/api/employees/unoccupied").permitAll()
+ .antMatchers("/api/authority/").permitAll()
+ .antMatchers("/api/employees/**").hasAnyAuthority("ROLE_USER", "ROLE_ADMIN")
+ .antMatchers("/api/employees/login").permitAll()
+ .anyRequest().authenticated()
+ .and()
+ .httpBasic()
+ .and()
+ .headers().frameOptions().disable();
+ }
+
+
+ @Override
+ protected void configure(AuthenticationManagerBuilder auth) throws Exception {
+ auth.userDetailsService(userDetailsService)
+ .passwordEncoder(passwordEncoder());
+ }
+
+ @Bean
+ public PasswordEncoder passwordEncoder() {
+ return new BCryptPasswordEncoder();
+ }
+ @Bean
+ public ErrorPageFilter errorPageFilter() {
+ return new ErrorPageFilter();
+ }
+
+
+}
\ No newline at end of file
diff --git a/src/main/java/com/example/nto/controller/AuthorityController.java b/src/main/java/com/example/nto/controller/AuthorityController.java
new file mode 100644
index 0000000..24dc1ad
--- /dev/null
+++ b/src/main/java/com/example/nto/controller/AuthorityController.java
@@ -0,0 +1,41 @@
+package com.example.nto.controller;
+import com.example.nto.entity.Authority;
+import com.example.nto.service.AuthorityService;
+import lombok.RequiredArgsConstructor;
+import org.springframework.http.HttpStatus;
+import org.springframework.http.ResponseEntity;
+import org.springframework.web.bind.annotation.*;
+
+import java.util.List;
+import java.util.Objects;
+
+@RestController
+@RequestMapping("/api/authority")
+@RequiredArgsConstructor
+public class AuthorityController {
+
+ private final AuthorityService authorityService;
+
+ @PostMapping
+ @ResponseStatus(HttpStatus.CREATED)
+ public Authority add(@RequestBody Authority authority) {
+ return authorityService.add(authority);
+ }
+
+ @GetMapping
+ @ResponseStatus(HttpStatus.OK)
+ public List getAll() {
+ return authorityService.getAll();
+ }
+
+ @GetMapping("/{id}")
+ @ResponseStatus(HttpStatus.OK)
+ public ResponseEntity idRole(@PathVariable Long id) {
+ String idn = authorityService.isAdmin(id);
+ if (Objects.equals(idn, "ROLE_ADMIN")) {
+ return ResponseEntity.ok("Является администратором");}
+ else {
+ return ResponseEntity.status(HttpStatus.FORBIDDEN).body("Не является администратором");
+ }
+ }
+}
\ 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 3aafe05..3487733 100644
--- a/src/main/java/com/example/nto/controller/CodeController.java
+++ b/src/main/java/com/example/nto/controller/CodeController.java
@@ -14,6 +14,8 @@ public class CodeController {
@PatchMapping("/api/{login}/open")
public Employee update(@PathVariable String login, @RequestBody Code newCode) {
- return codeService.openDoor(login, newCode.getValue());
+// return codeService.openDoor(login, newCode.getValue());
+ return null;
+ //TODO Service доделать и открыть тут коммент
}
}
diff --git a/src/main/java/com/example/nto/controller/CredentialsController.java b/src/main/java/com/example/nto/controller/CredentialsController.java
new file mode 100644
index 0000000..5bbb605
--- /dev/null
+++ b/src/main/java/com/example/nto/controller/CredentialsController.java
@@ -0,0 +1,43 @@
+package com.example.nto.controller;
+
+import com.example.nto.dto.CredentialsDTO;
+import com.example.nto.service.CredentialsService;
+import lombok.RequiredArgsConstructor;
+import org.springframework.http.ResponseEntity;
+import org.springframework.web.bind.annotation.*;
+
+import java.util.List;
+
+@RestController
+@RequestMapping("/api/credentials")
+@RequiredArgsConstructor
+public class CredentialsController {
+
+ private final CredentialsService credentialsService;
+
+ @GetMapping
+ public List getAllCredentials() {
+ return credentialsService.getAllCredentials();
+ }
+
+ @GetMapping("/{id}")
+ public ResponseEntity getCredentialsById(@PathVariable long id) {
+ return ResponseEntity.ok(credentialsService.getCredentialsById(id));
+ }
+
+ @PostMapping
+ public ResponseEntity createCredentials(@RequestBody CredentialsDTO dto) {
+ return ResponseEntity.ok(credentialsService.createCredentials(dto));
+ }
+
+ @PutMapping("/{id}")
+ public ResponseEntity updateCredentials(@PathVariable long id, @RequestBody CredentialsDTO dto) {
+ return ResponseEntity.ok(credentialsService.updateCredentials(id, dto));
+ }
+
+ @DeleteMapping("/{id}")
+ public ResponseEntity deleteCredentials(@PathVariable long id) {
+ credentialsService.deleteCredentials(id);
+ return ResponseEntity.noContent().build();
+ }
+}
\ 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 f115bbe..b7f7999 100644
--- a/src/main/java/com/example/nto/controller/EmployeeController.java
+++ b/src/main/java/com/example/nto/controller/EmployeeController.java
@@ -1,25 +1,35 @@
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.web.bind.annotation.GetMapping;
-import org.springframework.web.bind.annotation.PathVariable;
-import org.springframework.web.bind.annotation.RestController;
+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("api/{login}/info")
- public Employee findByLogin(@PathVariable String login) {
- return employeeService.findByLogin(login);
+
+ @GetMapping("/{login}")
+ @ResponseStatus(HttpStatus.OK)
+ public ResponseEntity findByLogin(@PathVariable String login) {
+ if (employeeService.findExistByLogin(login)) {
+ return ResponseEntity.ok("Done");
+ } else return ResponseEntity.badRequest().body("User is not found");
}
- @GetMapping("api/{login}/auth")
- public void findExistByLogin(@PathVariable String login) {
- employeeService.findExistByLogin(login);
+ @GetMapping("/login")
+ public ResponseEntity login(Authentication authentication) {
+ System.out.println("out" + authentication.getAuthorities());
+ return ResponseEntity.ok(employeeService.getUserByUsername(authentication.getName()));
}
}
diff --git a/src/main/java/com/example/nto/controller/PassController.java b/src/main/java/com/example/nto/controller/PassController.java
new file mode 100644
index 0000000..4a152d4
--- /dev/null
+++ b/src/main/java/com/example/nto/controller/PassController.java
@@ -0,0 +1,33 @@
+package com.example.nto.controller;
+
+import com.example.nto.dto.PassDTO;
+import com.example.nto.dto.TerminalDTO;
+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 java.util.List;
+
+
+@RestController
+@RequestMapping("/api/passes")
+@RequiredArgsConstructor
+public class PassController {
+
+ private final PassService passService;
+
+ @GetMapping("/paginated/")
+ public ResponseEntity> getAllPassesAtUser(
+ @RequestParam long userId,
+ @RequestParam(defaultValue = "0") int page,
+ @RequestParam(defaultValue = "10") int size
+ ) {
+ Pageable pageable = PageRequest.of(page, size);
+ return ResponseEntity.ok(passService.getAllPassesPaginated(pageable, userId));
+ }
+}
\ 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
new file mode 100644
index 0000000..29cf512
--- /dev/null
+++ b/src/main/java/com/example/nto/controller/TerminalController.java
@@ -0,0 +1,24 @@
+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;
+
+@RestController
+@RequestMapping("/api/terminal")
+@RequiredArgsConstructor
+public class TerminalController {
+
+ private final TerminalService terminalService;
+
+ @GetMapping("/{id}")
+ public ResponseEntity getCredentialsById(@PathVariable long id) {
+ return ResponseEntity.ok(terminalService.getTerminalbyId(id));
+ }
+}
\ No newline at end of file
diff --git a/src/main/java/com/example/nto/dto/AuthorityDTO.java b/src/main/java/com/example/nto/dto/AuthorityDTO.java
new file mode 100644
index 0000000..9017e1b
--- /dev/null
+++ b/src/main/java/com/example/nto/dto/AuthorityDTO.java
@@ -0,0 +1,9 @@
+package com.example.nto.dto;
+
+import lombok.Data;
+
+@Data
+public class AuthorityDTO {
+ private long id;
+ private String authority;
+}
diff --git a/src/main/java/com/example/nto/dto/CredentialsDTO.java b/src/main/java/com/example/nto/dto/CredentialsDTO.java
new file mode 100644
index 0000000..8dccb6a
--- /dev/null
+++ b/src/main/java/com/example/nto/dto/CredentialsDTO.java
@@ -0,0 +1,11 @@
+package com.example.nto.dto;
+
+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/EmployeeDTO.java b/src/main/java/com/example/nto/dto/EmployeeDTO.java
new file mode 100644
index 0000000..62eb87b
--- /dev/null
+++ b/src/main/java/com/example/nto/dto/EmployeeDTO.java
@@ -0,0 +1,19 @@
+package com.example.nto.dto;
+
+import lombok.Data;
+
+import java.time.LocalDateTime;
+
+@Data
+public class EmployeeDTO {
+ private long id;
+ private String login;
+ private String name;
+ private String password;
+ private long authority_id;
+ private long credentials;
+ private String photo;
+ private String position;
+ private LocalDateTime lastVisit;
+
+}
diff --git a/src/main/java/com/example/nto/dto/PassDTO.java b/src/main/java/com/example/nto/dto/PassDTO.java
new file mode 100644
index 0000000..8c9a775
--- /dev/null
+++ b/src/main/java/com/example/nto/dto/PassDTO.java
@@ -0,0 +1,13 @@
+package com.example.nto.dto;
+
+import lombok.Data;
+
+import java.time.LocalDateTime;
+
+@Data
+public class PassDTO {
+ private long id;
+ private long employee;
+ private LocalDateTime localDateTime;
+ private long terminal;
+}
diff --git a/src/main/java/com/example/nto/dto/TerminalDTO.java b/src/main/java/com/example/nto/dto/TerminalDTO.java
new file mode 100644
index 0000000..ab362d1
--- /dev/null
+++ b/src/main/java/com/example/nto/dto/TerminalDTO.java
@@ -0,0 +1,12 @@
+package com.example.nto.dto;
+
+import lombok.Data;
+
+import java.time.LocalDateTime;
+
+@Data
+public class TerminalDTO {
+ private long id;
+ private String type;
+ private String name;
+}
diff --git a/src/main/java/com/example/nto/dto/UserRegisterDTO.java b/src/main/java/com/example/nto/dto/UserRegisterDTO.java
new file mode 100644
index 0000000..cb083c0
--- /dev/null
+++ b/src/main/java/com/example/nto/dto/UserRegisterDTO.java
@@ -0,0 +1,11 @@
+package com.example.nto.dto;
+
+import lombok.Data;
+
+@Data
+public class UserRegisterDTO {
+ private String login;
+ private String password;
+ private String name;
+ private String lastname;
+}
\ No newline at end of file
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..0f07526
--- /dev/null
+++ b/src/main/java/com/example/nto/entity/Authority.java
@@ -0,0 +1,28 @@
+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")
+public class Authority implements GrantedAuthority {
+ @Id
+ @GeneratedValue(strategy = GenerationType.IDENTITY)
+ private long id;
+ @Column(name = "authority")
+ private String authority;
+
+ @Override
+ public String getAuthority() {
+ return "";
+ }
+}
diff --git a/src/main/java/com/example/nto/entity/Credentials.java b/src/main/java/com/example/nto/entity/Credentials.java
new file mode 100644
index 0000000..d9cd486
--- /dev/null
+++ b/src/main/java/com/example/nto/entity/Credentials.java
@@ -0,0 +1,25 @@
+package com.example.nto.entity;
+
+import com.fasterxml.jackson.annotation.JsonIgnore;
+import lombok.Data;
+import javax.persistence.*;
+import java.util.List;
+
+@Data
+@Entity
+@Table(name = "credentials")
+public class Credentials {
+ @Id
+ @GeneratedValue(strategy = GenerationType.IDENTITY)
+ private long id;
+
+ @Column(name = "login")
+ private String login;
+
+ @Column(name = "hashed_password")
+ private String hashedPassword;
+
+ @OneToMany(mappedBy = "credentials")
+ @JsonIgnore
+ private List employees;
+}
\ No newline at end of file
diff --git a/src/main/java/com/example/nto/entity/Employee.java b/src/main/java/com/example/nto/entity/Employee.java
index ac539a3..3d0c1cf 100644
--- a/src/main/java/com/example/nto/entity/Employee.java
+++ b/src/main/java/com/example/nto/entity/Employee.java
@@ -1,12 +1,18 @@
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;
import javax.persistence.*;
import java.time.LocalDateTime;
+import java.util.Collection;
+import java.util.List;
+import java.util.Set;
@Data
@Entity
@@ -14,7 +20,7 @@ import java.time.LocalDateTime;
@NoArgsConstructor
@AllArgsConstructor
@Table(name = "Employee")
-public class Employee {
+public class Employee implements UserDetails {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private long id;
@@ -22,10 +28,52 @@ public class Employee {
private String login;
@Column(name = "name")
private String name;
+ @Column(name = "password")
+ private String password;
+ @ManyToOne
+ @JoinColumn(name = "authority_id")
+ @JsonIgnore
+ private Authority authority;
+ @ManyToOne
+ @JoinColumn(name = "credentials")
+ @JsonIgnore
+ private Credentials credentials;
@Column(name = "photo")
private String photo;
+ @ManyToMany(fetch = FetchType.EAGER)
+ private Set authorities;
@Column(name = "position")
private String position;
@Column(name = "lastVisit")
private LocalDateTime lastVisit;
+
+ @Override
+ public Collection extends GrantedAuthority> getAuthorities() {
+ return List.of();
+ }
+
+ @Override
+ public String getUsername() {
+ return "";
+ }
+
+ @Override
+ public boolean isAccountNonExpired() {
+ return true;
+ }
+
+ @Override
+ public boolean isAccountNonLocked() {
+ return true;
+ }
+
+ @Override
+ public boolean isCredentialsNonExpired() {
+ return true;
+ }
+
+ @Override
+ public boolean isEnabled() {
+ return true;
+ }
}
diff --git a/src/main/java/com/example/nto/entity/Pass.java b/src/main/java/com/example/nto/entity/Pass.java
new file mode 100644
index 0000000..51dc8a4
--- /dev/null
+++ b/src/main/java/com/example/nto/entity/Pass.java
@@ -0,0 +1,30 @@
+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
+@Table(name = "pass")
+public class Pass {
+ @Id
+ @GeneratedValue(strategy = GenerationType.IDENTITY)
+ private long id;
+
+ @ManyToOne
+ @JoinColumn(name = "employee")
+ @JsonIgnore
+ private Employee employee;
+
+ @Column(name = "time")
+ private LocalDateTime time;
+
+ @ManyToOne
+ @JoinColumn(name="terminal")
+ @JsonIgnore
+ private Terminal terminal;
+}
\ No newline at end of file
diff --git a/src/main/java/com/example/nto/entity/Terminal.java b/src/main/java/com/example/nto/entity/Terminal.java
new file mode 100644
index 0000000..5106d95
--- /dev/null
+++ b/src/main/java/com/example/nto/entity/Terminal.java
@@ -0,0 +1,22 @@
+package com.example.nto.entity;
+
+import com.fasterxml.jackson.annotation.JsonIgnore;
+import lombok.Data;
+
+import javax.persistence.*;
+import java.time.LocalDateTime;
+
+@Data
+@Entity
+@Table(name = "terminal")
+public class Terminal {
+ @Id
+ @GeneratedValue(strategy = GenerationType.IDENTITY)
+ private long id;
+
+ @Column(name = "type")
+ private String type;
+
+ @Column(name="name")
+ private String name;
+}
\ 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
new file mode 100644
index 0000000..82731e2
--- /dev/null
+++ b/src/main/java/com/example/nto/exception/PersonAlreadyExistsException.java
@@ -0,0 +1,7 @@
+package com.example.nto.exception;
+
+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
new file mode 100644
index 0000000..e3fc36f
--- /dev/null
+++ b/src/main/java/com/example/nto/exception/PersonNotFoundException.java
@@ -0,0 +1,7 @@
+package com.example.nto.exception;
+
+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
new file mode 100644
index 0000000..c150c36
--- /dev/null
+++ b/src/main/java/com/example/nto/exception/RoleisNotAdmin.java
@@ -0,0 +1,7 @@
+package com.example.nto.exception;
+
+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
new file mode 100644
index 0000000..91a9fef
--- /dev/null
+++ b/src/main/java/com/example/nto/exception/handler/GlobalExceptionHandler.java
@@ -0,0 +1,26 @@
+package com.example.nto.exception.handler;
+
+
+import com.example.nto.exception.PersonAlreadyExistsException;
+import com.example.nto.exception.PersonNotFoundException;
+import com.example.nto.exception.RoleisNotAdmin;
+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(RoleisNotAdmin.class)
+ public ResponseEntity handleRoleisNotAdmin(RoleisNotAdmin e) {
+ return new ResponseEntity<>(e.getMessage(), HttpStatus.BAD_REQUEST);
+ }
+ @ExceptionHandler(PersonNotFoundException.class)
+ public ResponseEntity handlePersonNotFound(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);
+ }
+}
\ 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
new file mode 100644
index 0000000..11cd7a6
--- /dev/null
+++ b/src/main/java/com/example/nto/repository/AuthorityRepository.java
@@ -0,0 +1,13 @@
+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;
+
+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/CredentialsRepository.java b/src/main/java/com/example/nto/repository/CredentialsRepository.java
new file mode 100644
index 0000000..ffc5d2c
--- /dev/null
+++ b/src/main/java/com/example/nto/repository/CredentialsRepository.java
@@ -0,0 +1,12 @@
+package com.example.nto.repository;
+
+import com.example.nto.entity.Credentials;
+import org.springframework.data.jpa.repository.JpaRepository;
+import org.springframework.stereotype.Repository;
+
+import java.util.Optional;
+
+@Repository
+public interface CredentialsRepository extends JpaRepository {
+ Optional findByLogin(String login);
+}
\ No newline at end of file
diff --git a/src/main/java/com/example/nto/repository/EmployeeRepository.java b/src/main/java/com/example/nto/repository/EmployeeRepository.java
index 5ac6e96..715590b 100644
--- a/src/main/java/com/example/nto/repository/EmployeeRepository.java
+++ b/src/main/java/com/example/nto/repository/EmployeeRepository.java
@@ -5,12 +5,16 @@ 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 {
@Query("select e from Employee e where e.login = ?1")
- Employee findByLogin(String login);
-
+ Optional findByLogin(String login);
+ @Query("select e from Employee e where e.id = ?1")
+ Employee findById(long id);
@Query("select count(e) = 1 from Employee e where login = ?1")
Boolean findExistByLogin(String login);
+
}
diff --git a/src/main/java/com/example/nto/repository/PassRepository.java b/src/main/java/com/example/nto/repository/PassRepository.java
new file mode 100644
index 0000000..8da8c92
--- /dev/null
+++ b/src/main/java/com/example/nto/repository/PassRepository.java
@@ -0,0 +1,13 @@
+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;
+
+import java.util.Optional;
+
+@Repository
+public interface PassRepository extends JpaRepository {
+ Optional findById(long id);
+}
\ No newline at end of file
diff --git a/src/main/java/com/example/nto/repository/TerminalRepository.java b/src/main/java/com/example/nto/repository/TerminalRepository.java
new file mode 100644
index 0000000..17a53d0
--- /dev/null
+++ b/src/main/java/com/example/nto/repository/TerminalRepository.java
@@ -0,0 +1,12 @@
+package com.example.nto.repository;
+
+import com.example.nto.entity.Terminal;
+import org.springframework.data.jpa.repository.JpaRepository;
+import org.springframework.stereotype.Repository;
+
+import java.util.Optional;
+
+@Repository
+public interface TerminalRepository extends JpaRepository {
+ Optional findByName(String name);
+}
\ No newline at end of file
diff --git a/src/main/java/com/example/nto/service/AuthorityService.java b/src/main/java/com/example/nto/service/AuthorityService.java
new file mode 100644
index 0000000..82fe52f
--- /dev/null
+++ b/src/main/java/com/example/nto/service/AuthorityService.java
@@ -0,0 +1,14 @@
+package com.example.nto.service;
+
+import com.example.nto.entity.Authority;
+import org.springframework.stereotype.Service;
+
+import java.util.List;
+
+@Service
+public interface AuthorityService {
+ Authority add(Authority authority);
+ 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 3df877a..79e340d 100644
--- a/src/main/java/com/example/nto/service/CodeService.java
+++ b/src/main/java/com/example/nto/service/CodeService.java
@@ -3,8 +3,10 @@ package com.example.nto.service;
import com.example.nto.entity.Employee;
+import java.util.Optional;
+
public interface CodeService {
Boolean findExistByValue(Long value);
- Employee openDoor(String login, Long value);
+ Optional openDoor(String login, Long value);
}
diff --git a/src/main/java/com/example/nto/service/CredentialsService.java b/src/main/java/com/example/nto/service/CredentialsService.java
new file mode 100644
index 0000000..5e5be11
--- /dev/null
+++ b/src/main/java/com/example/nto/service/CredentialsService.java
@@ -0,0 +1,16 @@
+
+package com.example.nto.service;
+
+import com.example.nto.dto.CredentialsDTO;
+import org.springframework.stereotype.Service;
+
+import java.util.List;
+
+@Service
+public interface CredentialsService {
+ List getAllCredentials();
+ CredentialsDTO getCredentialsById(Long id);
+ CredentialsDTO createCredentials(CredentialsDTO dto);
+ CredentialsDTO updateCredentials(Long id, CredentialsDTO dto);
+ void deleteCredentials(Long id);
+}
diff --git a/src/main/java/com/example/nto/service/EmployeeService.java b/src/main/java/com/example/nto/service/EmployeeService.java
index f9e63e2..05688df 100644
--- a/src/main/java/com/example/nto/service/EmployeeService.java
+++ b/src/main/java/com/example/nto/service/EmployeeService.java
@@ -1,10 +1,23 @@
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);
- Employee findByLogin(String login);
+ Optional findByLogin(String login);
+
+ EmployeeDTO findById(Long id);
+
boolean findExistByLogin(String login);
+
+ EmployeeDTO createUser(UserRegisterDTO dto);
+
+ EmployeeDTO getUserByUsername(String login);
+
+ 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
new file mode 100644
index 0000000..d9bb46b
--- /dev/null
+++ b/src/main/java/com/example/nto/service/PassService.java
@@ -0,0 +1,18 @@
+
+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);
+}
diff --git a/src/main/java/com/example/nto/service/TerminalService.java b/src/main/java/com/example/nto/service/TerminalService.java
new file mode 100644
index 0000000..a69e05a
--- /dev/null
+++ b/src/main/java/com/example/nto/service/TerminalService.java
@@ -0,0 +1,13 @@
+
+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/impl/AuthorityServiceImpl.java b/src/main/java/com/example/nto/service/impl/AuthorityServiceImpl.java
new file mode 100644
index 0000000..a70dcf0
--- /dev/null
+++ b/src/main/java/com/example/nto/service/impl/AuthorityServiceImpl.java
@@ -0,0 +1,36 @@
+package com.example.nto.service.impl;
+
+import com.example.nto.entity.Authority;
+import com.example.nto.repository.AuthorityRepository;
+import com.example.nto.service.AuthorityService;
+import lombok.RequiredArgsConstructor;
+import org.springframework.stereotype.Service;
+
+import java.util.List;
+import java.util.Optional;
+
+@Service
+@RequiredArgsConstructor
+public class AuthorityServiceImpl implements AuthorityService {
+
+ private final AuthorityRepository authorityRepository;
+
+ @Override
+ public Authority add(Authority authority) {
+
+ Optional optionalAuthority = authorityRepository.findByAuthority(authority.getAuthority());
+ return optionalAuthority.orElseGet(() -> authorityRepository.save(authority));
+ }
+ @Override
+ public List getAll() {
+ return authorityRepository.findAll();
+ }
+
+ @Override
+ public String isAdmin(Long id) {
+ Optional optionalAuthority = authorityRepository.findById(id);
+ Authority existingsAuthority = optionalAuthority.get();
+
+ return existingsAuthority.getAuthority();
+ }
+}
\ No newline at end of file
diff --git a/src/main/java/com/example/nto/service/impl/CredentialsServiceImpl.java b/src/main/java/com/example/nto/service/impl/CredentialsServiceImpl.java
new file mode 100644
index 0000000..769b5aa
--- /dev/null
+++ b/src/main/java/com/example/nto/service/impl/CredentialsServiceImpl.java
@@ -0,0 +1,67 @@
+package com.example.nto.service.impl;
+
+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 lombok.RequiredArgsConstructor;
+import org.springframework.stereotype.Service;
+
+import java.util.List;
+import java.util.Optional;
+import java.util.stream.Collectors;
+
+@Service
+@RequiredArgsConstructor
+public class CredentialsServiceImpl implements CredentialsService {
+
+ private final CredentialsRepository credentialsRepository;
+
+ @Override
+ public List getAllCredentials() {
+ return credentialsRepository.findAll().stream()
+ .map(CredentialsMapper::convertDTO)
+ .collect(Collectors.toList());
+ }
+
+ @Override
+ public CredentialsDTO getCredentialsById(Long id) {
+ Optional credentials = credentialsRepository.findById(id);
+ return credentials.map(CredentialsMapper::convertDTO).orElse(null);
+ }
+
+ @Override
+ public CredentialsDTO createCredentials(CredentialsDTO dto) {
+ Credentials credentials = new Credentials();
+ credentials.setLogin(dto.getLogin());
+ credentials.setHashedPassword(dto.getHashedPassword());
+
+ Credentials savedCredentials = credentialsRepository.save(credentials);
+
+ CredentialsDTO responseDto = new CredentialsDTO();
+ responseDto.setLogin(savedCredentials.getLogin());
+ responseDto.setHashedPassword(savedCredentials.getHashedPassword());
+
+ return responseDto;
+ }
+
+
+ @Override
+ public CredentialsDTO updateCredentials(Long id, CredentialsDTO dto) {
+ Optional existingCredentialsOptional = credentialsRepository.findById(id);
+ if (existingCredentialsOptional.isPresent()) {
+ Credentials existingCredentials = existingCredentialsOptional.get();
+ existingCredentials.setLogin(dto.getLogin());
+ existingCredentials.setHashedPassword(dto.getHashedPassword());
+ Credentials updatedCredentials = credentialsRepository.save(existingCredentials);
+ return CredentialsMapper.convertDTO(updatedCredentials);
+ }
+ return null;
+ }
+
+ @Override
+ 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
index 8749b21..f722dab 100644
--- a/src/main/java/com/example/nto/service/impl/EmployeeCodeServiceImpl.java
+++ b/src/main/java/com/example/nto/service/impl/EmployeeCodeServiceImpl.java
@@ -1,17 +1,28 @@
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
@@ -19,15 +30,18 @@ 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 = employeeRepository.findById(id);
+ 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.setLogin(newEmployee.getLogin());
+ employee.setLogin(newEmployee.getUsername());
employee.setPhoto(newEmployee.getPhoto());
employee.setPosition(newEmployee.getPosition());
employee.setLastVisit(newEmployee.getLastVisit());
@@ -36,13 +50,22 @@ public class EmployeeCodeServiceImpl implements EmployeeService, CodeService {
}
@Override
- public Employee findByLogin(String login) {
+ public Optional findByLogin(String login) {
if (employeeRepository.findExistByLogin(login))
return employeeRepository.findByLogin(login);
throw new ResponseStatusException(HttpStatus.UNAUTHORIZED,
"There is no account with login " + login + " 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 findExistByLogin(String login) {
if (employeeRepository.findExistByLogin(login))
@@ -52,15 +75,20 @@ public class EmployeeCodeServiceImpl implements EmployeeService, CodeService {
}
- @Override
- public Employee openDoor(String login, Long value) {
- if (findByLogin(login) != null && findExistByValue(value)) {
- Employee employee = findByLogin(login);
- employee.setLastVisit(LocalDateTime.now());
- return updateEmployee(employee.getId(), employee);
- }
- throw new ResponseStatusException(HttpStatus.BAD_REQUEST);
+ @Override
+ public Optional openDoor(String login, 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
@@ -69,4 +97,44 @@ public class EmployeeCodeServiceImpl implements EmployeeService, CodeService {
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.getLogin());
+ credentials.setHashedPassword(passwordEncoder.encode(dto.getPassword()));
+ Credentials credentialSave = credentialsRepository.save(credentials);
+ Employee employee = new Employee();
+ employee.setLogin(dto.getLogin());
+ employee.setName(dto.getName());
+ employee.setPassword(passwordEncoder.encode(dto.getPassword()));
+ employee.setAuthorities(Set.of(roleUser.get()));
+ employee.setCredentials(credentials);
+ employee.setAuthority(roleUser.get());
+
+
+
+ Employee savedUser = employeeRepository.save(employee);
+ return EmployeeMapper.convertDTO(savedUser);
+ }
+ @Override
+ public EmployeeDTO getUserByUsername(String login) {
+ System.out.println(login);
+ Optional optionalUsers = employeeRepository.findByLogin(login);
+ System.out.println(optionalUsers);
+ if (optionalUsers.isEmpty()) {
+ throw new PersonNotFoundException("User with username " + login + "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
new file mode 100644
index 0000000..2f98d9f
--- /dev/null
+++ b/src/main/java/com/example/nto/service/impl/PassServiceImpl.java
@@ -0,0 +1,35 @@
+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 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.stream.Collectors;
+
+@Service
+@RequiredArgsConstructor
+public class PassServiceImpl implements PassService {
+
+ private final PassRepository passRepository;
+
+
+ @Override
+ public List getPassAtUser(long id) {
+ return passRepository.findAll().stream()
+ .filter(pass -> pass.getEmployee().toString().equals(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();
+ }
+}
\ 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
new file mode 100644
index 0000000..3e0c855
--- /dev/null
+++ b/src/main/java/com/example/nto/service/impl/TerminalServiceimpl.java
@@ -0,0 +1,32 @@
+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 lombok.RequiredArgsConstructor;
+import org.springframework.stereotype.Service;
+
+import java.util.List;
+import java.util.Optional;
+import java.util.stream.Collectors;
+
+@Service
+@RequiredArgsConstructor
+public class TerminalServiceimpl implements TerminalService {
+
+ private final TerminalRepository terminalRepository;
+
+
+ @Override
+ public TerminalDTO getTerminalbyId(Long id) {
+ Optional terminal = terminalRepository.findById(id);
+ return terminal.map(TerminalMapper::convertDTO).orElse(null);
+ }
+}
\ No newline at end of file
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..bf2a403
--- /dev/null
+++ b/src/main/java/com/example/nto/service/impl/UserDetailsServiceImpl.java
@@ -0,0 +1,27 @@
+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 usersRepository;
+ @Override
+ public UserDetails loadUserByUsername(String s) throws UsernameNotFoundException {
+ Optional optionalUsers = usersRepository.findByLogin(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/utils/AuthorityMapper.java b/src/main/java/com/example/nto/utils/AuthorityMapper.java
new file mode 100644
index 0000000..670984e
--- /dev/null
+++ b/src/main/java/com/example/nto/utils/AuthorityMapper.java
@@ -0,0 +1,14 @@
+package com.example.nto.utils;
+import com.example.nto.entity.Authority;
+import com.example.nto.dto.AuthorityDTO;
+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;
+ }
+}
\ 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/utils/CredentialsMapper.java
new file mode 100644
index 0000000..f322311
--- /dev/null
+++ b/src/main/java/com/example/nto/utils/CredentialsMapper.java
@@ -0,0 +1,18 @@
+package com.example.nto.utils;
+
+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;
+
+@UtilityClass
+public class CredentialsMapper {
+ public static CredentialsDTO convertDTO(Credentials credentials) {
+ CredentialsDTO credentialsDTO = new CredentialsDTO();
+ credentialsDTO.setId(credentials.getId());
+ credentialsDTO.setLogin(credentials.getLogin());
+ credentialsDTO.setHashedPassword(credentials.getHashedPassword());
+ return credentialsDTO;
+ }
+}
\ No newline at end of file
diff --git a/src/main/java/com/example/nto/utils/EmployeeMapper.java b/src/main/java/com/example/nto/utils/EmployeeMapper.java
new file mode 100644
index 0000000..85bdf9c
--- /dev/null
+++ b/src/main/java/com/example/nto/utils/EmployeeMapper.java
@@ -0,0 +1,28 @@
+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.setLogin(user.getLogin());
+ 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/java/com/example/nto/utils/PassMapper.java b/src/main/java/com/example/nto/utils/PassMapper.java
new file mode 100644
index 0000000..a656b13
--- /dev/null
+++ b/src/main/java/com/example/nto/utils/PassMapper.java
@@ -0,0 +1,25 @@
+package com.example.nto.utils;
+
+
+
+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());
+ }
+
+
+ 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/utils/TerminalMapper.java
new file mode 100644
index 0000000..fd244ae
--- /dev/null
+++ b/src/main/java/com/example/nto/utils/TerminalMapper.java
@@ -0,0 +1,21 @@
+package com.example.nto.utils;
+
+
+
+
+import com.example.nto.dto.TerminalDTO;
+import com.example.nto.entity.Terminal;
+import lombok.experimental.UtilityClass;
+
+@UtilityClass
+public class TerminalMapper {
+ public static TerminalDTO convertDTO(Terminal terminal) {
+ TerminalDTO terminalDTO = new TerminalDTO();
+ terminalDTO.setId(terminal.getId());
+ terminalDTO.setType(terminal.getType());
+ terminalDTO.setName(terminal.getName());
+
+
+ return terminalDTO;
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/data.sql b/src/main/resources/data.sql
index 03720a9..7b3dd04 100644
--- a/src/main/resources/data.sql
+++ b/src/main/resources/data.sql
@@ -1,9 +1,15 @@
-INSERT INTO employee (id, login, name, photo, position, last_visit)
+INSERT into credentials (username, hashed_password)
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');
+('pivanov','$2a$10$mq/UrB0MPG6.Fw2h.4gRauGYa7Zy37dveEU3U1mn22oHxCK7km24e'),
+('ipetrov','$2a$10$mq/UrB0MPG6.Fw2h.4gRauGYa7Zy37dveEU3U1mn22oHxCK7km24e'),
+('asemenov','$2a$10$mq/UrB0MPG6.Fw2h.4gRauGYa7Zy37dveEU3U1mn22oHxCK7km24e'),
+('afedorov','$2a$10$mq/UrB0MPG6.Fw2h.4gRauGYa7Zy37dveEU3U1mn22oHxCK7km24e');
+INSERT INTO employee (username, credentials, name, password, photo, position, last_visit)
+VALUES
+('pivanov', 1, 'Иванов Петр Федорович', '$2a$10$mq/UrB0MPG6.Fw2h.4gRauGYa7Zy37dveEU3U1mn22oHxCK7km24e', 'https://funnyducks.ru/upload/iblock/0cd/0cdeb7ec3ed6fddda0f90fccee05557d.jpg', 'Разработчик', '2024-02-12T08:30'),
+('ipetrov', 2, 'Петров Иван Константинович', '$2a$10$mq/UrB0MPG6.Fw2h.4gRauGYa7Zy37dveEU3U1mn22oHxCK7km24e', 'https://funnyducks.ru/upload/iblock/0cd/0cdeb7ec3ed6fddda0f90fccee05557d.jpg', 'Аналитик', '2024-02-13T08:35'),
+('asemenov', 3, 'Семенов Анатолий Анатольевич', '$2a$10$mq/UrB0MPG6.Fw2h.4gRauGYa7Zy37dveEU3U1mn22oHxCK7km24e', 'https://funnyducks.ru/upload/iblock/0cd/0cdeb7ec3ed6fddda0f90fccee05557d.jpg', 'Разработчик', '2024-02-13T08:31'),
+('afedorov', 4, 'Федоров Александр Сергеевич', '$2a$10$mq/UrB0MPG6.Fw2h.4gRauGYa7Zy37dveEU3U1mn22oHxCK7km24e', 'https://funnyducks.ru/upload/iblock/0cd/0cdeb7ec3ed6fddda0f90fccee05557d.jpg', 'Тестировщик', '2024-02-12T08:36');
INSERT INTO code (value)
VALUES
@@ -11,4 +17,25 @@ VALUES
(9223372036854775807),
(1122334455667788990),
(998877665544332211),
-(5566778899001122334);
\ No newline at end of file
+(5566778899001122334);
+
+INSERT into authority (authority)
+VALUES
+('ROlE_USER'),
+('ROLE_ADMIN');
+
+UPDATE employee SET authority_id = (1);
+
+
+INSERT into terminal (type, name)
+VALUES
+('qr', 'name1'),
+('nfc', 'name2');
+INSERT into pass (employee, time)
+VALUES
+('1', '2023-05-29T10:15:30'),
+('2', '2021-05-29T10:15:30'),
+('3', '2022-05-29T10:15:30'),
+('4', '2025-05-29T10:15:30');
+
+UPDATE pass SET terminal = (1);
\ No newline at end of file