Добавление роли админа и функции блокировки пользователя
This commit is contained in:
parent
dc19aee368
commit
99249e4055
@ -25,11 +25,8 @@ public class WebSecurityConfig extends WebSecurityConfigurerAdapter {
|
|||||||
.csrf().disable()
|
.csrf().disable()
|
||||||
.authorizeRequests()
|
.authorizeRequests()
|
||||||
.antMatchers("/h2-console/**").permitAll()
|
.antMatchers("/h2-console/**").permitAll()
|
||||||
// .antMatchers("/api/auth").permitAll()
|
.antMatchers("/api/user/**").hasAnyAuthority("ROLE_USER", "ROLE_ADMIN")
|
||||||
// .antMatchers("/api/users/username/{username}").permitAll()
|
.antMatchers("/api/admin/**").hasAnyAuthority("ROLE_ADMIN")
|
||||||
// .antMatchers("/api/volunteer/one/1").hasAnyAuthority("ROLE_ADMIN")
|
|
||||||
// .antMatchers("/api/authority/**").hasAnyAuthority("ROLE_ADMIN")
|
|
||||||
.antMatchers("/api/**").hasAnyAuthority("ROLE_USER", "ROLE_ADMIN")
|
|
||||||
.anyRequest().authenticated()
|
.anyRequest().authenticated()
|
||||||
.and()
|
.and()
|
||||||
.httpBasic()
|
.httpBasic()
|
||||||
|
@ -3,9 +3,7 @@ package com.example.nto.controller;
|
|||||||
|
|
||||||
import com.example.nto.dto.EmployeeDTO;
|
import com.example.nto.dto.EmployeeDTO;
|
||||||
import com.example.nto.dto.EnterDTO;
|
import com.example.nto.dto.EnterDTO;
|
||||||
import com.example.nto.entity.Code;
|
import com.example.nto.entity.*;
|
||||||
import com.example.nto.entity.Employee;
|
|
||||||
import com.example.nto.entity.EnterType;
|
|
||||||
import com.example.nto.service.impl.EmployeeServiceImpl;
|
import com.example.nto.service.impl.EmployeeServiceImpl;
|
||||||
import lombok.RequiredArgsConstructor;
|
import lombok.RequiredArgsConstructor;
|
||||||
import org.springframework.http.ResponseEntity;
|
import org.springframework.http.ResponseEntity;
|
||||||
@ -22,23 +20,28 @@ public class EmployeeController {
|
|||||||
|
|
||||||
private final EmployeeServiceImpl employeeService;
|
private final EmployeeServiceImpl employeeService;
|
||||||
|
|
||||||
@GetMapping("/login")
|
@GetMapping("/user/login")
|
||||||
public ResponseEntity<EmployeeDTO> login(Authentication authentication){
|
public ResponseEntity<EmployeeDTO> login(Authentication authentication){
|
||||||
return ResponseEntity.ok(employeeService.getEmployeeByUsername(authentication.getName()));
|
return ResponseEntity.ok(employeeService.getEmployeeByUsername(authentication.getName()));
|
||||||
}
|
}
|
||||||
|
|
||||||
@GetMapping("/info/{login}")
|
@GetMapping("/user/info/{login}")
|
||||||
public ResponseEntity<EmployeeDTO> info(@PathVariable("login") String username){
|
public ResponseEntity<EmployeeDTO> info(@PathVariable("login") String username){
|
||||||
return ResponseEntity.ok(employeeService.getInfo(username));
|
return ResponseEntity.ok(employeeService.getInfo(username));
|
||||||
}
|
}
|
||||||
|
|
||||||
@PostMapping("/add/{login}")
|
@PostMapping("/user/add/{login}")
|
||||||
public ResponseEntity<EnterDTO> add(@PathVariable("login") String login, @RequestBody EnterDTO enterDTO){
|
public ResponseEntity<EnterDTO> add(@PathVariable("login") String login, @RequestBody EnterDTO enterDTO){
|
||||||
return ResponseEntity.ok(employeeService.addEnter(login, enterDTO));
|
return ResponseEntity.ok(employeeService.addEnter(login, enterDTO));
|
||||||
}
|
}
|
||||||
|
|
||||||
@GetMapping("/list/{login}")
|
@GetMapping("/user/list/{login}")
|
||||||
public List<EnterDTO> list(@PathVariable("login") String username){
|
public List<EnterDTO> list(@PathVariable("login") String username){
|
||||||
return employeeService.getAllEmployeeEnters(username);
|
return employeeService.getAllEmployeeEnters(username);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@PatchMapping("/admin/authority/change/{login}")
|
||||||
|
public ResponseEntity<EmployeeAuthority> authChange(@PathVariable("login") String username, @RequestBody Authority authority){
|
||||||
|
return ResponseEntity.ok(employeeService.changeAuthority(username, authority));
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
8
src/main/java/com/example/nto/dto/AuthorityDTO.java
Normal file
8
src/main/java/com/example/nto/dto/AuthorityDTO.java
Normal file
@ -0,0 +1,8 @@
|
|||||||
|
package com.example.nto.dto;
|
||||||
|
|
||||||
|
import lombok.Data;
|
||||||
|
|
||||||
|
@Data
|
||||||
|
public class AuthorityDTO {
|
||||||
|
private String authority;
|
||||||
|
}
|
@ -1,8 +1,10 @@
|
|||||||
package com.example.nto.dto;
|
package com.example.nto.dto;
|
||||||
|
|
||||||
|
import com.example.nto.entity.Authority;
|
||||||
import lombok.Data;
|
import lombok.Data;
|
||||||
|
|
||||||
import java.time.LocalDateTime;
|
import java.time.LocalDateTime;
|
||||||
|
import java.util.Set;
|
||||||
|
|
||||||
@Data
|
@Data
|
||||||
public class EmployeeDTO {
|
public class EmployeeDTO {
|
||||||
@ -12,4 +14,5 @@ public class EmployeeDTO {
|
|||||||
private String photoUrl;
|
private String photoUrl;
|
||||||
private String position;
|
private String position;
|
||||||
private LocalDateTime lastVisit;
|
private LocalDateTime lastVisit;
|
||||||
|
private Set<Authority> authority;
|
||||||
}
|
}
|
||||||
|
22
src/main/java/com/example/nto/entity/EmployeeAuthority.java
Normal file
22
src/main/java/com/example/nto/entity/EmployeeAuthority.java
Normal file
@ -0,0 +1,22 @@
|
|||||||
|
package com.example.nto.entity;
|
||||||
|
|
||||||
|
import lombok.Data;
|
||||||
|
|
||||||
|
import javax.persistence.*;
|
||||||
|
|
||||||
|
@Data
|
||||||
|
@Entity
|
||||||
|
@Table(name="employee_authorities")
|
||||||
|
public class EmployeeAuthority {
|
||||||
|
@Id
|
||||||
|
@GeneratedValue(strategy = GenerationType.IDENTITY)
|
||||||
|
private long id;
|
||||||
|
|
||||||
|
@ManyToOne
|
||||||
|
@JoinColumn(name="employee_id")
|
||||||
|
private Employee empId;
|
||||||
|
|
||||||
|
@ManyToOne
|
||||||
|
@JoinColumn(name="authorities_id")
|
||||||
|
private Authority authId;
|
||||||
|
}
|
@ -0,0 +1,7 @@
|
|||||||
|
package com.example.nto.exception;
|
||||||
|
|
||||||
|
public class IncorrectAuthority extends RuntimeException {
|
||||||
|
public IncorrectAuthority(String message) {
|
||||||
|
super(message);
|
||||||
|
}
|
||||||
|
}
|
@ -1,9 +1,6 @@
|
|||||||
package com.example.nto.exception.handler;
|
package com.example.nto.exception.handler;
|
||||||
|
|
||||||
import com.example.nto.exception.EmployeeNotFoundException;
|
import com.example.nto.exception.*;
|
||||||
import com.example.nto.exception.IncorrectCodeException;
|
|
||||||
import com.example.nto.exception.IncorrectPasswordException;
|
|
||||||
import com.example.nto.exception.IncorrectTypeException;
|
|
||||||
import org.springframework.http.HttpStatus;
|
import org.springframework.http.HttpStatus;
|
||||||
import org.springframework.http.ResponseEntity;
|
import org.springframework.http.ResponseEntity;
|
||||||
import org.springframework.web.bind.annotation.ControllerAdvice;
|
import org.springframework.web.bind.annotation.ControllerAdvice;
|
||||||
@ -25,4 +22,9 @@ public class GlobalExceptionHandler {
|
|||||||
public ResponseEntity<String> handlerIncorrectTypeException(IncorrectTypeException e) {
|
public ResponseEntity<String> handlerIncorrectTypeException(IncorrectTypeException e) {
|
||||||
return new ResponseEntity<>(e.getMessage(), HttpStatus.CONFLICT);
|
return new ResponseEntity<>(e.getMessage(), HttpStatus.CONFLICT);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ExceptionHandler(IncorrectAuthority.class)
|
||||||
|
public ResponseEntity<String> handlerIncorrectAuthority(IncorrectAuthority e) {
|
||||||
|
return new ResponseEntity<>(e.getMessage(), HttpStatus.CONFLICT);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
@ -0,0 +1,12 @@
|
|||||||
|
package com.example.nto.repository;
|
||||||
|
|
||||||
|
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,11 @@
|
|||||||
|
package com.example.nto.repository;
|
||||||
|
|
||||||
|
import com.example.nto.entity.Employee;
|
||||||
|
import com.example.nto.entity.EmployeeAuthority;
|
||||||
|
import org.springframework.data.jpa.repository.JpaRepository;
|
||||||
|
import org.springframework.stereotype.Repository;
|
||||||
|
|
||||||
|
@Repository
|
||||||
|
public interface EmployeeAuthorityRepository extends JpaRepository<EmployeeAuthority, Long> {
|
||||||
|
EmployeeAuthority findByEmpId(Employee id);
|
||||||
|
}
|
@ -2,6 +2,8 @@ package com.example.nto.service;
|
|||||||
|
|
||||||
import com.example.nto.dto.EmployeeDTO;
|
import com.example.nto.dto.EmployeeDTO;
|
||||||
import com.example.nto.dto.EnterDTO;
|
import com.example.nto.dto.EnterDTO;
|
||||||
|
import com.example.nto.entity.Authority;
|
||||||
|
import com.example.nto.entity.EmployeeAuthority;
|
||||||
|
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
||||||
@ -10,4 +12,5 @@ public interface EmployeeService {
|
|||||||
EmployeeDTO getInfo(String username);
|
EmployeeDTO getInfo(String username);
|
||||||
EnterDTO addEnter(String username, EnterDTO enterDTO);
|
EnterDTO addEnter(String username, EnterDTO enterDTO);
|
||||||
List<EnterDTO> getAllEmployeeEnters(String username);
|
List<EnterDTO> getAllEmployeeEnters(String username);
|
||||||
|
EmployeeAuthority changeAuthority(String username, Authority auth);
|
||||||
}
|
}
|
||||||
|
@ -2,17 +2,12 @@ package com.example.nto.service.impl;
|
|||||||
|
|
||||||
import com.example.nto.dto.EmployeeDTO;
|
import com.example.nto.dto.EmployeeDTO;
|
||||||
import com.example.nto.dto.EnterDTO;
|
import com.example.nto.dto.EnterDTO;
|
||||||
import com.example.nto.entity.Code;
|
import com.example.nto.entity.*;
|
||||||
import com.example.nto.entity.Employee;
|
|
||||||
import com.example.nto.entity.Enter;
|
|
||||||
import com.example.nto.entity.EnterType;
|
|
||||||
import com.example.nto.exception.EmployeeNotFoundException;
|
import com.example.nto.exception.EmployeeNotFoundException;
|
||||||
|
import com.example.nto.exception.IncorrectAuthority;
|
||||||
import com.example.nto.exception.IncorrectCodeException;
|
import com.example.nto.exception.IncorrectCodeException;
|
||||||
import com.example.nto.exception.IncorrectTypeException;
|
import com.example.nto.exception.IncorrectTypeException;
|
||||||
import com.example.nto.repository.CodeRepository;
|
import com.example.nto.repository.*;
|
||||||
import com.example.nto.repository.EmployeeRepository;
|
|
||||||
import com.example.nto.repository.EnterRepository;
|
|
||||||
import com.example.nto.repository.EnterTypeRepository;
|
|
||||||
import com.example.nto.service.EmployeeService;
|
import com.example.nto.service.EmployeeService;
|
||||||
import com.example.nto.util.EmployeeMapper;
|
import com.example.nto.util.EmployeeMapper;
|
||||||
import com.example.nto.util.EnterMapper;
|
import com.example.nto.util.EnterMapper;
|
||||||
@ -33,6 +28,8 @@ public class EmployeeServiceImpl implements EmployeeService {
|
|||||||
private final CodeRepository codeRepository;
|
private final CodeRepository codeRepository;
|
||||||
private final EnterTypeRepository enterTypeRepository;
|
private final EnterTypeRepository enterTypeRepository;
|
||||||
private final EnterRepository enterRepository;
|
private final EnterRepository enterRepository;
|
||||||
|
private final AuthorityRepository authorityRepository;
|
||||||
|
private final EmployeeAuthorityRepository employeeAuthorityRepository;
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public EmployeeDTO getEmployeeByUsername(String username) {
|
public EmployeeDTO getEmployeeByUsername(String username) {
|
||||||
@ -84,5 +81,20 @@ public class EmployeeServiceImpl implements EmployeeService {
|
|||||||
.collect(Collectors.toList());
|
.collect(Collectors.toList());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public EmployeeAuthority changeAuthority(String username, Authority auth) {
|
||||||
|
Optional<Employee> optionalEmployee = employeeRepository.findByUsername(username);
|
||||||
|
if(optionalEmployee.isEmpty())
|
||||||
|
throw new EmployeeNotFoundException("Employee with username: " + username + " not found");
|
||||||
|
Optional<Authority> optionalAuthority = authorityRepository.findByAuthority(auth.getAuthority());
|
||||||
|
if(optionalAuthority.isEmpty())
|
||||||
|
throw new IncorrectAuthority("Incorrect authority");
|
||||||
|
|
||||||
|
EmployeeAuthority employeeAuthority = employeeAuthorityRepository.findByEmpId(optionalEmployee.get());
|
||||||
|
employeeAuthority.setAuthId(optionalAuthority.get());
|
||||||
|
|
||||||
|
return employeeAuthorityRepository.save(employeeAuthority);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
17
src/main/java/com/example/nto/util/AuthorityMapper.java
Normal file
17
src/main/java/com/example/nto/util/AuthorityMapper.java
Normal file
@ -0,0 +1,17 @@
|
|||||||
|
package com.example.nto.util;
|
||||||
|
|
||||||
|
import com.example.nto.dto.AuthorityDTO;
|
||||||
|
import com.example.nto.dto.EnterDTO;
|
||||||
|
import com.example.nto.entity.Authority;
|
||||||
|
import com.example.nto.entity.Enter;
|
||||||
|
import lombok.experimental.UtilityClass;
|
||||||
|
|
||||||
|
@UtilityClass
|
||||||
|
public class AuthorityMapper {
|
||||||
|
public AuthorityDTO convertToDTO(Authority authority){
|
||||||
|
AuthorityDTO authorityDTO = new AuthorityDTO();
|
||||||
|
authorityDTO.setAuthority(authority.getAuthority());
|
||||||
|
|
||||||
|
return authorityDTO;
|
||||||
|
}
|
||||||
|
}
|
@ -1,5 +1,6 @@
|
|||||||
package com.example.nto.util;
|
package com.example.nto.util;
|
||||||
|
|
||||||
|
import com.example.nto.dto.AuthorityDTO;
|
||||||
import com.example.nto.dto.EmployeeDTO;
|
import com.example.nto.dto.EmployeeDTO;
|
||||||
import com.example.nto.entity.Employee;
|
import com.example.nto.entity.Employee;
|
||||||
import lombok.experimental.UtilityClass;
|
import lombok.experimental.UtilityClass;
|
||||||
@ -14,6 +15,7 @@ public class EmployeeMapper {
|
|||||||
employeeDTO.setPosition(employee.getPosition());
|
employeeDTO.setPosition(employee.getPosition());
|
||||||
employeeDTO.setPhotoUrl(employee.getPhotoUrl());
|
employeeDTO.setPhotoUrl(employee.getPhotoUrl());
|
||||||
employeeDTO.setLastVisit(employee.getLastVisit());
|
employeeDTO.setLastVisit(employee.getLastVisit());
|
||||||
|
employeeDTO.setAuthority(employee.getAuthorities());
|
||||||
|
|
||||||
return employeeDTO;
|
return employeeDTO;
|
||||||
}
|
}
|
||||||
|
@ -1,3 +1,4 @@
|
|||||||
authorities
|
authorities
|
||||||
ROLE_USER
|
ROLE_USER
|
||||||
ROLE_ADMIN
|
ROLE_ADMIN
|
||||||
|
ROLE_BLOCK
|
|
@ -1,5 +1,5 @@
|
|||||||
employee_id;authorities_id
|
employee_id;authorities_id
|
||||||
1;1
|
1;1
|
||||||
2;1
|
2;2
|
||||||
3;1
|
3;3
|
||||||
4;1
|
4;1
|
|
Loading…
x
Reference in New Issue
Block a user