19.02.2025 - Spring Security, main functions
This commit is contained in:
		
							parent
							
								
									7497c4a93f
								
							
						
					
					
						commit
						400c6744aa
					
				
							
								
								
									
										35
									
								
								pom.xml
									
									
									
									
									
								
							
							
						
						
									
										35
									
								
								pom.xml
									
									
									
									
									
								
							@ -58,6 +58,41 @@
 | 
			
		||||
            <artifactId>spring-boot-starter-test</artifactId>
 | 
			
		||||
            <scope>test</scope>
 | 
			
		||||
        </dependency>
 | 
			
		||||
        <dependency>
 | 
			
		||||
            <groupId>io.swagger</groupId>
 | 
			
		||||
            <artifactId>swagger-annotations</artifactId>
 | 
			
		||||
            <version>1.6.14</version>
 | 
			
		||||
        </dependency>
 | 
			
		||||
        <dependency>
 | 
			
		||||
            <groupId>io.springfox</groupId>
 | 
			
		||||
            <artifactId>springfox-swagger2</artifactId>
 | 
			
		||||
            <version>2.9.2</version>
 | 
			
		||||
        </dependency>
 | 
			
		||||
 | 
			
		||||
        <dependency>
 | 
			
		||||
            <groupId>io.springfox</groupId>
 | 
			
		||||
            <artifactId>springfox-swagger-ui</artifactId>
 | 
			
		||||
            <version>2.9.2</version>
 | 
			
		||||
        </dependency>
 | 
			
		||||
        <!-- https://mvnrepository.com/artifact/org.springframework.security/spring-security-web -->
 | 
			
		||||
        <dependency>
 | 
			
		||||
            <groupId>org.springframework.security</groupId>
 | 
			
		||||
            <artifactId>spring-security-web</artifactId>
 | 
			
		||||
        </dependency>
 | 
			
		||||
        <dependency>
 | 
			
		||||
            <groupId>org.springframework.security</groupId>
 | 
			
		||||
            <artifactId>spring-security-core</artifactId>
 | 
			
		||||
        </dependency>
 | 
			
		||||
        <dependency>
 | 
			
		||||
            <groupId>org.springframework.security</groupId>
 | 
			
		||||
            <artifactId>spring-security-config</artifactId>
 | 
			
		||||
        </dependency>
 | 
			
		||||
        <dependency>
 | 
			
		||||
            <groupId>org.springframework.security</groupId>
 | 
			
		||||
            <artifactId>spring-security-taglibs</artifactId>
 | 
			
		||||
        </dependency>
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
    </dependencies>
 | 
			
		||||
 | 
			
		||||
</project>
 | 
			
		||||
							
								
								
									
										21
									
								
								src/main/java/com/example/nto/config/SwaggerConfig.java
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										21
									
								
								src/main/java/com/example/nto/config/SwaggerConfig.java
									
									
									
									
									
										Normal file
									
								
							@ -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();
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
							
								
								
									
										62
									
								
								src/main/java/com/example/nto/config/WebSecurityConfig.java
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										62
									
								
								src/main/java/com/example/nto/config/WebSecurityConfig.java
									
									
									
									
									
										Normal file
									
								
							@ -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();
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
}
 | 
			
		||||
@ -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<Authority> getAll() {
 | 
			
		||||
        return authorityService.getAll();
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    @GetMapping("/{id}")
 | 
			
		||||
    @ResponseStatus(HttpStatus.OK)
 | 
			
		||||
    public ResponseEntity<String> 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("Не является администратором");
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
@ -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 доделать и открыть тут коммент
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
@ -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<CredentialsDTO> getAllCredentials() {
 | 
			
		||||
        return credentialsService.getAllCredentials();
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    @GetMapping("/{id}")
 | 
			
		||||
    public ResponseEntity<CredentialsDTO> getCredentialsById(@PathVariable long id) {
 | 
			
		||||
        return ResponseEntity.ok(credentialsService.getCredentialsById(id));
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    @PostMapping
 | 
			
		||||
    public ResponseEntity<CredentialsDTO> createCredentials(@RequestBody CredentialsDTO dto) {
 | 
			
		||||
        return ResponseEntity.ok(credentialsService.createCredentials(dto));
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    @PutMapping("/{id}")
 | 
			
		||||
    public ResponseEntity<CredentialsDTO> updateCredentials(@PathVariable long id, @RequestBody CredentialsDTO dto) {
 | 
			
		||||
        return ResponseEntity.ok(credentialsService.updateCredentials(id, dto));
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    @DeleteMapping("/{id}")
 | 
			
		||||
    public ResponseEntity<Void> deleteCredentials(@PathVariable long id) {
 | 
			
		||||
        credentialsService.deleteCredentials(id);
 | 
			
		||||
        return ResponseEntity.noContent().build();
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
@ -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<String> 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<EmployeeDTO> login(Authentication authentication) {
 | 
			
		||||
        System.out.println("out" + authentication.getAuthorities());
 | 
			
		||||
        return ResponseEntity.ok(employeeService.getUserByUsername(authentication.getName()));
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
							
								
								
									
										33
									
								
								src/main/java/com/example/nto/controller/PassController.java
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										33
									
								
								src/main/java/com/example/nto/controller/PassController.java
									
									
									
									
									
										Normal file
									
								
							@ -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<List<PassDTO>> 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));
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
@ -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<TerminalDTO> getCredentialsById(@PathVariable long id) {
 | 
			
		||||
        return ResponseEntity.ok(terminalService.getTerminalbyId(id));
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
							
								
								
									
										9
									
								
								src/main/java/com/example/nto/dto/AuthorityDTO.java
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										9
									
								
								src/main/java/com/example/nto/dto/AuthorityDTO.java
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1,9 @@
 | 
			
		||||
package com.example.nto.dto;
 | 
			
		||||
 | 
			
		||||
import lombok.Data;
 | 
			
		||||
 | 
			
		||||
@Data
 | 
			
		||||
public class AuthorityDTO {
 | 
			
		||||
    private long id;
 | 
			
		||||
    private String authority;
 | 
			
		||||
}
 | 
			
		||||
							
								
								
									
										11
									
								
								src/main/java/com/example/nto/dto/CredentialsDTO.java
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										11
									
								
								src/main/java/com/example/nto/dto/CredentialsDTO.java
									
									
									
									
									
										Normal file
									
								
							@ -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;
 | 
			
		||||
 | 
			
		||||
}
 | 
			
		||||
							
								
								
									
										19
									
								
								src/main/java/com/example/nto/dto/EmployeeDTO.java
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										19
									
								
								src/main/java/com/example/nto/dto/EmployeeDTO.java
									
									
									
									
									
										Normal file
									
								
							@ -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;
 | 
			
		||||
 | 
			
		||||
}
 | 
			
		||||
							
								
								
									
										13
									
								
								src/main/java/com/example/nto/dto/PassDTO.java
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										13
									
								
								src/main/java/com/example/nto/dto/PassDTO.java
									
									
									
									
									
										Normal file
									
								
							@ -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;
 | 
			
		||||
}
 | 
			
		||||
							
								
								
									
										12
									
								
								src/main/java/com/example/nto/dto/TerminalDTO.java
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										12
									
								
								src/main/java/com/example/nto/dto/TerminalDTO.java
									
									
									
									
									
										Normal file
									
								
							@ -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;
 | 
			
		||||
}
 | 
			
		||||
							
								
								
									
										11
									
								
								src/main/java/com/example/nto/dto/UserRegisterDTO.java
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										11
									
								
								src/main/java/com/example/nto/dto/UserRegisterDTO.java
									
									
									
									
									
										Normal file
									
								
							@ -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;
 | 
			
		||||
}
 | 
			
		||||
							
								
								
									
										28
									
								
								src/main/java/com/example/nto/entity/Authority.java
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										28
									
								
								src/main/java/com/example/nto/entity/Authority.java
									
									
									
									
									
										Normal file
									
								
							@ -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 "";
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
							
								
								
									
										25
									
								
								src/main/java/com/example/nto/entity/Credentials.java
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										25
									
								
								src/main/java/com/example/nto/entity/Credentials.java
									
									
									
									
									
										Normal file
									
								
							@ -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<Employee> employees;
 | 
			
		||||
}
 | 
			
		||||
@ -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<Authority> 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;
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
							
								
								
									
										30
									
								
								src/main/java/com/example/nto/entity/Pass.java
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										30
									
								
								src/main/java/com/example/nto/entity/Pass.java
									
									
									
									
									
										Normal file
									
								
							@ -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;
 | 
			
		||||
}
 | 
			
		||||
							
								
								
									
										22
									
								
								src/main/java/com/example/nto/entity/Terminal.java
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										22
									
								
								src/main/java/com/example/nto/entity/Terminal.java
									
									
									
									
									
										Normal file
									
								
							@ -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;
 | 
			
		||||
}
 | 
			
		||||
@ -0,0 +1,7 @@
 | 
			
		||||
package com.example.nto.exception;
 | 
			
		||||
 | 
			
		||||
public class PersonAlreadyExistsException extends RuntimeException {
 | 
			
		||||
    public PersonAlreadyExistsException(String message) {
 | 
			
		||||
        super(message);
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
@ -0,0 +1,7 @@
 | 
			
		||||
package com.example.nto.exception;
 | 
			
		||||
 | 
			
		||||
public class PersonNotFoundException extends RuntimeException {
 | 
			
		||||
    public PersonNotFoundException(String message) {
 | 
			
		||||
        super(message);
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
@ -0,0 +1,7 @@
 | 
			
		||||
package com.example.nto.exception;
 | 
			
		||||
 | 
			
		||||
public class RoleisNotAdmin extends RuntimeException {
 | 
			
		||||
    public RoleisNotAdmin(String message) {
 | 
			
		||||
        super(message);
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
@ -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<String> handleRoleisNotAdmin(RoleisNotAdmin e) {
 | 
			
		||||
        return new ResponseEntity<>(e.getMessage(), HttpStatus.BAD_REQUEST);
 | 
			
		||||
    }
 | 
			
		||||
    @ExceptionHandler(PersonNotFoundException.class)
 | 
			
		||||
    public ResponseEntity<String> handlePersonNotFound(PersonNotFoundException e) {
 | 
			
		||||
        return new ResponseEntity<>(e.getMessage(), HttpStatus.NOT_FOUND);
 | 
			
		||||
    }
 | 
			
		||||
    @ExceptionHandler(PersonAlreadyExistsException.class)
 | 
			
		||||
    public ResponseEntity<String> handlePersonAlreadyExists(PersonAlreadyExistsException e) {
 | 
			
		||||
        return new ResponseEntity<>(e.getMessage(), HttpStatus.BAD_GATEWAY);
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
@ -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<Authority, Long> {
 | 
			
		||||
    Optional<Authority> findByAuthority(String Authority);
 | 
			
		||||
}
 | 
			
		||||
@ -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<Credentials, Long> {
 | 
			
		||||
    Optional<Credentials> findByLogin(String login);
 | 
			
		||||
}
 | 
			
		||||
@ -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<Employee, Long> {
 | 
			
		||||
 | 
			
		||||
    @Query("select e from Employee e where e.login = ?1")
 | 
			
		||||
    Employee findByLogin(String login);
 | 
			
		||||
 | 
			
		||||
    Optional<Employee> 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);
 | 
			
		||||
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
							
								
								
									
										13
									
								
								src/main/java/com/example/nto/repository/PassRepository.java
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										13
									
								
								src/main/java/com/example/nto/repository/PassRepository.java
									
									
									
									
									
										Normal file
									
								
							@ -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<Pass, Long> {
 | 
			
		||||
    Optional<Pass> findById(long id);
 | 
			
		||||
}
 | 
			
		||||
@ -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<Terminal, Long> {
 | 
			
		||||
    Optional<Terminal> findByName(String name);
 | 
			
		||||
}
 | 
			
		||||
							
								
								
									
										14
									
								
								src/main/java/com/example/nto/service/AuthorityService.java
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										14
									
								
								src/main/java/com/example/nto/service/AuthorityService.java
									
									
									
									
									
										Normal file
									
								
							@ -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<Authority> getAll();
 | 
			
		||||
 | 
			
		||||
    String isAdmin(Long id);
 | 
			
		||||
}
 | 
			
		||||
@ -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<Employee> openDoor(String login, Long value);
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
@ -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<CredentialsDTO> getAllCredentials();
 | 
			
		||||
    CredentialsDTO getCredentialsById(Long id);
 | 
			
		||||
    CredentialsDTO createCredentials(CredentialsDTO dto);
 | 
			
		||||
    CredentialsDTO updateCredentials(Long id, CredentialsDTO dto);
 | 
			
		||||
    void deleteCredentials(Long id);
 | 
			
		||||
}
 | 
			
		||||
@ -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<Employee> findByLogin(String login);
 | 
			
		||||
 | 
			
		||||
    EmployeeDTO findById(Long id);
 | 
			
		||||
 | 
			
		||||
    boolean findExistByLogin(String login);
 | 
			
		||||
 | 
			
		||||
    EmployeeDTO createUser(UserRegisterDTO dto);
 | 
			
		||||
 | 
			
		||||
    EmployeeDTO getUserByUsername(String login);
 | 
			
		||||
 | 
			
		||||
    EmployeeDTO get(String name);
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
							
								
								
									
										18
									
								
								src/main/java/com/example/nto/service/PassService.java
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										18
									
								
								src/main/java/com/example/nto/service/PassService.java
									
									
									
									
									
										Normal file
									
								
							@ -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<PassDTO> getPassAtUser(long id);
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
    List<PassDTO> getAllPassesPaginated(Pageable pageable, long id);
 | 
			
		||||
}
 | 
			
		||||
							
								
								
									
										13
									
								
								src/main/java/com/example/nto/service/TerminalService.java
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										13
									
								
								src/main/java/com/example/nto/service/TerminalService.java
									
									
									
									
									
										Normal file
									
								
							@ -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);
 | 
			
		||||
}
 | 
			
		||||
@ -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<Authority> optionalAuthority = authorityRepository.findByAuthority(authority.getAuthority());
 | 
			
		||||
        return optionalAuthority.orElseGet(() -> authorityRepository.save(authority));
 | 
			
		||||
    }
 | 
			
		||||
    @Override
 | 
			
		||||
    public List<Authority> getAll() {
 | 
			
		||||
        return authorityRepository.findAll();
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    @Override
 | 
			
		||||
    public String isAdmin(Long id) {
 | 
			
		||||
        Optional<Authority> optionalAuthority = authorityRepository.findById(id);
 | 
			
		||||
        Authority existingsAuthority = optionalAuthority.get();
 | 
			
		||||
 | 
			
		||||
        return existingsAuthority.getAuthority();
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
@ -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<CredentialsDTO> getAllCredentials() {
 | 
			
		||||
        return credentialsRepository.findAll().stream()
 | 
			
		||||
                .map(CredentialsMapper::convertDTO)
 | 
			
		||||
                .collect(Collectors.toList());
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    @Override
 | 
			
		||||
    public CredentialsDTO getCredentialsById(Long id) {
 | 
			
		||||
        Optional<Credentials> 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<Credentials> 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);
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
@ -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<Employee> optionalEmployee = employeeRepository.findById(id);
 | 
			
		||||
        Optional<Employee> 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<Employee> 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<Employee> openDoor(String login, Long value) {
 | 
			
		||||
//        if (findByLogin(login) != null && findExistByValue(value)) {
 | 
			
		||||
//            Optional<Employee> 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<Authority> 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<Employee> 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;
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
@ -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<PassDTO> getPassAtUser(long id) {
 | 
			
		||||
        return passRepository.findAll().stream()
 | 
			
		||||
                .filter(pass -> pass.getEmployee().toString().equals(id))
 | 
			
		||||
                .map(PassMapper::convertDTO)
 | 
			
		||||
                .collect(Collectors.toList());
 | 
			
		||||
    }
 | 
			
		||||
    @Override
 | 
			
		||||
    public List<PassDTO> getAllPassesPaginated(Pageable pageable, long id) {
 | 
			
		||||
        return passRepository.findAll(pageable)
 | 
			
		||||
                .filter(pass -> pass.getEmployee().toString().equals(id))
 | 
			
		||||
                .map(PassMapper::convertDTO).toList();
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
@ -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> terminal = terminalRepository.findById(id);
 | 
			
		||||
        return terminal.map(TerminalMapper::convertDTO).orElse(null);
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
@ -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<Employee> optionalUsers = usersRepository.findByLogin(s);
 | 
			
		||||
 | 
			
		||||
        if(optionalUsers.isEmpty()) {
 | 
			
		||||
            throw new UsernameNotFoundException("User not found");
 | 
			
		||||
        }
 | 
			
		||||
        return optionalUsers.get();
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
							
								
								
									
										14
									
								
								src/main/java/com/example/nto/utils/AuthorityMapper.java
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										14
									
								
								src/main/java/com/example/nto/utils/AuthorityMapper.java
									
									
									
									
									
										Normal file
									
								
							@ -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;
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
							
								
								
									
										18
									
								
								src/main/java/com/example/nto/utils/CredentialsMapper.java
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										18
									
								
								src/main/java/com/example/nto/utils/CredentialsMapper.java
									
									
									
									
									
										Normal file
									
								
							@ -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;
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
							
								
								
									
										28
									
								
								src/main/java/com/example/nto/utils/EmployeeMapper.java
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										28
									
								
								src/main/java/com/example/nto/utils/EmployeeMapper.java
									
									
									
									
									
										Normal file
									
								
							@ -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;
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
							
								
								
									
										25
									
								
								src/main/java/com/example/nto/utils/PassMapper.java
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										25
									
								
								src/main/java/com/example/nto/utils/PassMapper.java
									
									
									
									
									
										Normal file
									
								
							@ -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;
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
							
								
								
									
										21
									
								
								src/main/java/com/example/nto/utils/TerminalMapper.java
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										21
									
								
								src/main/java/com/example/nto/utils/TerminalMapper.java
									
									
									
									
									
										Normal file
									
								
							@ -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;
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
@ -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);
 | 
			
		||||
(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);
 | 
			
		||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user