/** * ロール削除. <br> * * @param roleId ロールID * @return */ @Auth(right = Right.DELETE_SYS_ROLE) public void deleteRole(Long roleId) { // 引数のロールIDと紐づくvhutUserRoleMapをセレクトする。 Role role = jdbcManager .from(Role.class) .leftOuterJoin(Names.role().vhutUserRoleMapList()) .id(roleId) .getSingleResult(); if (role == null) { throw new InputRuntimeException("roleId", String.format("Role(id=%d) was not found", roleId)); } if (role.sysLock) { throw new InputRuntimeException( "remoteRole", String.format("Role(id=%d) is managed by system", role.id)); } if (role.vhutUserRoleMapList.size() > 0) { for (VhutUserRoleMap vhutUserRoleMap : role.vhutUserRoleMapList) { vhutUserRoleMap.roleId = serviceConfig.getGuestRoleId(); } jdbcManager .updateBatch(role.vhutUserRoleMapList) .includes(vhutUserRoleMap().roleId()) .execute(); } if (role.isDefault) { setDefaultToGuestRole(); } // 引数のロールIDをRoleテーブルから削除する。 jdbcManager.delete(role).execute(); }
/** ゲストロールにデフォルトマークを設定します. */ private void setDefaultToGuestRole() { Role guestRole = jdbcManager.from(Role.class).id(serviceConfig.getGuestRoleId()).getSingleResult(); guestRole.isDefault = true; jdbcManager.update(guestRole).execute(); }