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 org.springframework.stereotype.Repository;
|
||||||
|
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
import java.util.Optional;
|
||||||
|
|
||||||
@Repository
|
@Repository
|
||||||
public interface MenusRepository extends JpaRepository<Menus, Long> {
|
public interface MenusRepository extends JpaRepository<Menus, Long> {
|
||||||
|
|
||||||
List<Menus> findByIsDeleteFalse();
|
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 org.springframework.stereotype.Repository;
|
||||||
|
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
import java.util.Optional;
|
||||||
|
|
||||||
@Repository
|
@Repository
|
||||||
public interface PermissionRepository extends JpaRepository<Permission, Long> {
|
public interface PermissionRepository extends JpaRepository<Permission, Long> {
|
||||||
@ -25,4 +26,6 @@ public interface PermissionRepository extends JpaRepository<Permission, Long> {
|
|||||||
"AND m.isDelete = false " +
|
"AND m.isDelete = false " +
|
||||||
"AND p.roleId = :roleId")
|
"AND p.roleId = :roleId")
|
||||||
List<PermissionView> getAllPermissionsByRoleId(Long 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