edit access menu
This commit is contained in:
		| @@ -0,0 +1,29 @@ | ||||
| package com.iconplus.smartproc.controller; | ||||
|  | ||||
| import com.iconplus.smartproc.helper.model.EmptyResponse; | ||||
| import com.iconplus.smartproc.model.request.ListPermissionRequest; | ||||
| import com.iconplus.smartproc.repository.PermissionRepository; | ||||
| import com.iconplus.smartproc.service.permission.PutUpdatePermissionService; | ||||
| import org.springframework.web.bind.annotation.*; | ||||
|  | ||||
| @CrossOrigin(origins = "http://localhost:8080", allowCredentials = "true") | ||||
| @RestController | ||||
| @RequestMapping("/api/permission") | ||||
| public class PermissionController { | ||||
|  | ||||
|     private PermissionRepository permissionRepository; | ||||
|     private PutUpdatePermissionService putUpdatePermissionService; | ||||
|  | ||||
|     public PermissionController(PermissionRepository permissionRepository, | ||||
|                                 PutUpdatePermissionService putUpdatePermissionService) { | ||||
|         this.permissionRepository = permissionRepository; | ||||
|         this.putUpdatePermissionService = putUpdatePermissionService; | ||||
|     } | ||||
|  | ||||
|     @PutMapping("/{roleId}") | ||||
|     public EmptyResponse editPermissionRole(@PathVariable Long roleId, @RequestBody ListPermissionRequest listPermissionRequest) { | ||||
|         listPermissionRequest.setRoleId(roleId); | ||||
|         return putUpdatePermissionService.execute(listPermissionRequest); | ||||
|     } | ||||
|  | ||||
| } | ||||
| @@ -0,0 +1,20 @@ | ||||
| package com.iconplus.smartproc.model.request; | ||||
|  | ||||
| import com.iconplus.smartproc.helper.base.BaseRequest; | ||||
| import lombok.AllArgsConstructor; | ||||
| import lombok.Builder; | ||||
| import lombok.Data; | ||||
| import lombok.NoArgsConstructor; | ||||
|  | ||||
| import java.util.List; | ||||
|  | ||||
| @Data | ||||
| @Builder | ||||
| @AllArgsConstructor | ||||
| @NoArgsConstructor | ||||
| public class ListPermissionRequest extends BaseRequest { | ||||
|  | ||||
|     private Long roleId; | ||||
|     private List<PermissionRequest> data; | ||||
|  | ||||
| } | ||||
| @@ -0,0 +1,23 @@ | ||||
| package com.iconplus.smartproc.model.request; | ||||
|  | ||||
| import com.iconplus.smartproc.helper.base.BaseRequest; | ||||
| import lombok.AllArgsConstructor; | ||||
| import lombok.Builder; | ||||
| import lombok.Data; | ||||
| import lombok.NoArgsConstructor; | ||||
|  | ||||
| @Data | ||||
| @Builder | ||||
| @AllArgsConstructor | ||||
| @NoArgsConstructor | ||||
| public class PermissionRequest extends BaseRequest { | ||||
|     private Long id; | ||||
|     private Long parentId; | ||||
|     private Long menuId; | ||||
|     private String menu; | ||||
|     private Boolean canView; | ||||
|     private Boolean canCreate; | ||||
|     private Boolean canRead; | ||||
|     private Boolean canDelete; | ||||
|     private Boolean canUpdate; | ||||
| } | ||||
| @@ -5,9 +5,12 @@ import org.springframework.data.jpa.repository.JpaRepository; | ||||
| import org.springframework.stereotype.Repository; | ||||
|  | ||||
| import java.util.List; | ||||
| import java.util.Optional; | ||||
|  | ||||
| @Repository | ||||
| public interface MenusRepository extends JpaRepository<Menus, Long> { | ||||
|  | ||||
|     List<Menus> findByIsDeleteFalse(); | ||||
|     Optional<Menus> findByIdAndIsDeleteFalse(Long id); | ||||
|  | ||||
| } | ||||
|   | ||||
| @@ -7,6 +7,7 @@ import org.springframework.data.jpa.repository.Query; | ||||
| import org.springframework.stereotype.Repository; | ||||
|  | ||||
| import java.util.List; | ||||
| import java.util.Optional; | ||||
|  | ||||
| @Repository | ||||
| public interface PermissionRepository extends JpaRepository<Permission, Long> { | ||||
| @@ -25,4 +26,6 @@ public interface PermissionRepository extends JpaRepository<Permission, Long> { | ||||
|             "AND m.isDelete = false " + | ||||
|             "AND p.roleId = :roleId") | ||||
|     List<PermissionView> getAllPermissionsByRoleId(Long roleId); | ||||
|  | ||||
|     Optional<Permission> findByRoleIdAndMenuIdAndIsDeleteFalse(Long roleId, Long menuId); | ||||
| } | ||||
|   | ||||
| @@ -0,0 +1,91 @@ | ||||
| package com.iconplus.smartproc.service.permission; | ||||
|  | ||||
| import com.iconplus.smartproc.exception.BusinessException; | ||||
| import com.iconplus.smartproc.helper.model.EmptyResponse; | ||||
| import com.iconplus.smartproc.helper.service.BaseService; | ||||
| import com.iconplus.smartproc.model.entity.Menus; | ||||
| import com.iconplus.smartproc.model.entity.Permission; | ||||
| import com.iconplus.smartproc.model.entity.Roles; | ||||
| import com.iconplus.smartproc.model.request.ListPermissionRequest; | ||||
| import com.iconplus.smartproc.model.request.PermissionRequest; | ||||
| import com.iconplus.smartproc.repository.MenusRepository; | ||||
| import com.iconplus.smartproc.repository.PermissionRepository; | ||||
| import com.iconplus.smartproc.repository.RolesRepository; | ||||
| import com.iconplus.smartproc.util.Constants; | ||||
| import org.springframework.http.HttpStatus; | ||||
| import org.springframework.stereotype.Service; | ||||
|  | ||||
| import javax.transaction.Transactional; | ||||
| import java.util.ArrayList; | ||||
| import java.util.List; | ||||
|  | ||||
| @Service | ||||
| public class PutUpdatePermissionService implements BaseService<ListPermissionRequest, EmptyResponse> { | ||||
|  | ||||
|     private PermissionRepository permissionRepository; | ||||
|     private MenusRepository menusRepository; | ||||
|     private RolesRepository rolesRepository; | ||||
|     public PutUpdatePermissionService(PermissionRepository permissionRepository, | ||||
|                                       MenusRepository menusRepository, | ||||
|                                       RolesRepository rolesRepository) { | ||||
|         this.permissionRepository = permissionRepository; | ||||
|         this.menusRepository = menusRepository; | ||||
|         this.rolesRepository = rolesRepository; | ||||
|     } | ||||
|  | ||||
|     @Transactional | ||||
|     @Override | ||||
|     public EmptyResponse execute(ListPermissionRequest input) { | ||||
|  | ||||
|         Roles role = rolesRepository.findByIdAndIsDeleteFalse(input.getRoleId()) | ||||
|                 .orElseThrow(() -> new BusinessException(Constants.ERR_CODE_10005, | ||||
|                         Constants.ERR_TTL_10005, | ||||
|                         String.format(Constants.ERR_MSG_10005, input.getRoleId()))); | ||||
|  | ||||
|         List<Permission> permissionList = new ArrayList<>(); | ||||
|  | ||||
|         for (PermissionRequest permissionRequest : input.getData()) { | ||||
|             Permission permission = getPermission(permissionRequest, role); | ||||
|             permissionList.add(permission); | ||||
|         } | ||||
|  | ||||
|         permissionRepository.saveAll(permissionList); | ||||
|  | ||||
|         return new EmptyResponse(); | ||||
|     } | ||||
|  | ||||
|     public Menus findMenuById(Long menuId) { | ||||
|         var menus = menusRepository.findByIdAndIsDeleteFalse(menuId); | ||||
|         if (menus.isEmpty()) { | ||||
|             throw new BusinessException(HttpStatus.CONFLICT, | ||||
|                     "err", | ||||
|                     "err", | ||||
|                     "err"); | ||||
|         } | ||||
|         return menus.get(); | ||||
|     } | ||||
|  | ||||
|     private Permission getPermission(PermissionRequest permissionRequest, Roles roles) { | ||||
|         var permission = permissionRepository.findByRoleIdAndMenuIdAndIsDeleteFalse(roles.getId(), permissionRequest.getMenuId()); | ||||
|         if (permission.isPresent()) { | ||||
|             permission.get().setCanView(permissionRequest.getCanView()); | ||||
|             permission.get().setCanRead(permissionRequest.getCanRead()); | ||||
|             permission.get().setCanCreate(permissionRequest.getCanCreate()); | ||||
|             permission.get().setCanUpdate(permissionRequest.getCanUpdate()); | ||||
|             permission.get().setCanDelete(permissionRequest.getCanDelete()); | ||||
|             return permission.get(); | ||||
|         } else { | ||||
|             return Permission.builder() | ||||
|                     .roleId(roles.getId()) | ||||
|                     .menuId(permissionRequest.getMenuId()) | ||||
|                     .canView(permissionRequest.getCanView()) | ||||
|                     .canRead(permissionRequest.getCanRead()) | ||||
|                     .canCreate(permissionRequest.getCanCreate()) | ||||
|                     .canUpdate(permissionRequest.getCanUpdate()) | ||||
|                     .canDelete(permissionRequest.getCanDelete()) | ||||
|                     .isDelete(false) | ||||
|                     .build(); | ||||
|         } | ||||
|     } | ||||
|  | ||||
| } | ||||
		Reference in New Issue
	
	Block a user