Přípraveny práva pro agendu "Požadavky". Upraven PermissionEvaluator-
kontrola práv na agendách přemístěna do privátní metody. Opravena notifikace změny property ableToDelete. refs #100
This commit is contained in:
@@ -102,6 +102,12 @@ public class AppInitListener implements ServletContextListener {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
for (Permission p : Constants.SPECIAL_PERMISSIONS) {
|
||||||
|
if (permService.getPermissionByModule(p.getModule(), p.getAuthority()) == null) {
|
||||||
|
permService.add(p);
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private void checkAllAdminRights()
|
private void checkAllAdminRights()
|
||||||
|
|||||||
@@ -1,6 +1,7 @@
|
|||||||
package info.bukova.isspst;
|
package info.bukova.isspst;
|
||||||
|
|
||||||
import info.bukova.isspst.data.Permission;
|
import info.bukova.isspst.data.Permission;
|
||||||
|
import info.bukova.isspst.data.PermissionType;
|
||||||
import info.bukova.isspst.data.Role;
|
import info.bukova.isspst.data.Role;
|
||||||
import info.bukova.isspst.reporting.Report;
|
import info.bukova.isspst.reporting.Report;
|
||||||
import info.bukova.isspst.reporting.ReportMapping;
|
import info.bukova.isspst.reporting.ReportMapping;
|
||||||
@@ -55,6 +56,7 @@ public class Constants {
|
|||||||
public final static String MOD_MUNITS = "MUNITS";
|
public final static String MOD_MUNITS = "MUNITS";
|
||||||
public final static String MOD_MATERIAL = "MATERIAL";
|
public final static String MOD_MATERIAL = "MATERIAL";
|
||||||
public final static String MOD_WORKGROUPS = "WORKGROUPS";
|
public final static String MOD_WORKGROUPS = "WORKGROUPS";
|
||||||
|
public final static String MOD_REQUIREMENTS = "REQUIREMENTS";
|
||||||
public final static Module MODULES[] = {
|
public final static Module MODULES[] = {
|
||||||
new Module(MOD_USERS, "Uživatelé", UserService.class),
|
new Module(MOD_USERS, "Uživatelé", UserService.class),
|
||||||
new Module(MOD_PERMISSIONS, "Práva", RoleService.class),
|
new Module(MOD_PERMISSIONS, "Práva", RoleService.class),
|
||||||
@@ -62,7 +64,26 @@ public class Constants {
|
|||||||
new Module(MOD_BUILDINGS, "Budovy", BuildingService.class),
|
new Module(MOD_BUILDINGS, "Budovy", BuildingService.class),
|
||||||
new Module(MOD_MUNITS, "Měrné jednotky", MUnitService.class),
|
new Module(MOD_MUNITS, "Měrné jednotky", MUnitService.class),
|
||||||
new Module(MOD_MATERIAL, "Materiál", MaterialService.class),
|
new Module(MOD_MATERIAL, "Materiál", MaterialService.class),
|
||||||
new Module(MOD_WORKGROUPS, "Pracovní skupiny", WorkgroupService.class)
|
new Module(MOD_WORKGROUPS, "Pracovní skupiny", WorkgroupService.class),
|
||||||
|
new Module(MOD_REQUIREMENTS, "Požadavky", null)
|
||||||
|
};
|
||||||
|
|
||||||
|
public final static String PERM_APPROVE_WORKGROUP = "PERM_APPROVE_WORKGROUP";
|
||||||
|
public final static String PERM_APPROVE_CENTRE = "PERM_APPROVE_CENTRE";
|
||||||
|
public final static String PERM_APPROVE_LIMIT = "PERM_APPROVE_LIMIT";
|
||||||
|
public final static String PERM_APPROVE_FINAL = "PERM_APPROVE_FINAL";
|
||||||
|
public final static String PERM_SHOW_WORKGROUP_REQ = "PERM_SHOW_WORKGROUP_REQ";
|
||||||
|
public final static String PERM_SHOW_CENTRE_REQ = "PERM_SHOW_CENTRE_REQ";
|
||||||
|
public final static String PERM_SHOW_ALL_REQ = "PERM_SHOW_ALL_REQ";
|
||||||
|
|
||||||
|
public final static Permission SPECIAL_PERMISSIONS[] = {
|
||||||
|
new Permission(PERM_SHOW_WORKGROUP_REQ, "Zobrazení požadavků komise", MOD_REQUIREMENTS, PermissionType.WORKGROUP),
|
||||||
|
new Permission(PERM_SHOW_CENTRE_REQ, "Zobrazení požadavků střediska", MOD_REQUIREMENTS, PermissionType.CENTRE),
|
||||||
|
new Permission(PERM_SHOW_ALL_REQ, "Zobrazení všech požadavků", MOD_REQUIREMENTS, PermissionType.GLOBAL),
|
||||||
|
new Permission(PERM_APPROVE_WORKGROUP, "Schválení v komisi", MOD_REQUIREMENTS, PermissionType.WORKGROUP),
|
||||||
|
new Permission(PERM_APPROVE_CENTRE, "Schválení ve středisku", MOD_REQUIREMENTS, PermissionType.CENTRE),
|
||||||
|
new Permission(PERM_APPROVE_LIMIT, "Schválení nadlimitních", MOD_REQUIREMENTS, PermissionType.GLOBAL),
|
||||||
|
new Permission(PERM_APPROVE_FINAL, "Konečné schválení", MOD_REQUIREMENTS, PermissionType.CENTRE),
|
||||||
};
|
};
|
||||||
|
|
||||||
public final static String DYNAMIC_REPORT_NAME = "Tabulková sestava";
|
public final static String DYNAMIC_REPORT_NAME = "Tabulková sestava";
|
||||||
|
|||||||
@@ -18,7 +18,6 @@ public class IsspstPermissionEvaluator implements PermissionEvaluator {
|
|||||||
public boolean hasPermission(Authentication authentication,
|
public boolean hasPermission(Authentication authentication,
|
||||||
Object targetDomainObject, Object permission) {
|
Object targetDomainObject, Object permission) {
|
||||||
List<Role> perms = (List<Role>) authentication.getAuthorities();
|
List<Role> perms = (List<Role>) authentication.getAuthorities();
|
||||||
String moduleId = "";
|
|
||||||
String perm = "";
|
String perm = "";
|
||||||
|
|
||||||
if (permission instanceof String) {
|
if (permission instanceof String) {
|
||||||
@@ -27,8 +26,25 @@ public class IsspstPermissionEvaluator implements PermissionEvaluator {
|
|||||||
|
|
||||||
if (targetDomainObject instanceof Service<?>)
|
if (targetDomainObject instanceof Service<?>)
|
||||||
{
|
{
|
||||||
|
return evaluateGlobal((Service<?>) targetDomainObject, perm, perms);
|
||||||
|
}
|
||||||
|
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public boolean hasPermission(Authentication authentication,
|
||||||
|
Serializable targetId, String targetType, Object permission) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
private boolean evaluateGlobal(Service<?> service, String permission, List<Role> perms) {
|
||||||
|
|
||||||
|
String moduleId = "";
|
||||||
|
String perm = "";
|
||||||
|
|
||||||
for (Module m : Constants.MODULES) {
|
for (Module m : Constants.MODULES) {
|
||||||
if (m.getServiceClass().isAssignableFrom(targetDomainObject.getClass())) {
|
if (m.getServiceClass() != null && m.getServiceClass().isAssignableFrom(service.getClass())) {
|
||||||
moduleId = m.getId();
|
moduleId = m.getId();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -46,15 +62,8 @@ public class IsspstPermissionEvaluator implements PermissionEvaluator {
|
|||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
|
||||||
|
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
|
||||||
public boolean hasPermission(Authentication authentication,
|
|
||||||
Serializable targetId, String targetType, Object permission) {
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -206,7 +206,7 @@ public class ListViewModel<T extends DataModel> {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@GlobalCommand
|
@GlobalCommand
|
||||||
@NotifyChange({ "dataList", "dataBean" })
|
@NotifyChange({ "dataList", "dataBean", "ableToDelete" })
|
||||||
public void refresh() {
|
public void refresh() {
|
||||||
if (editBean != null && !editBean.isValid()) {
|
if (editBean != null && !editBean.isValid()) {
|
||||||
return;
|
return;
|
||||||
|
|||||||
@@ -8,6 +8,7 @@ import java.util.Map;
|
|||||||
import info.bukova.isspst.data.Role;
|
import info.bukova.isspst.data.Role;
|
||||||
import info.bukova.isspst.data.User;
|
import info.bukova.isspst.data.User;
|
||||||
import info.bukova.isspst.data.Workgroup;
|
import info.bukova.isspst.data.Workgroup;
|
||||||
|
import info.bukova.isspst.services.users.UserService;
|
||||||
import info.bukova.isspst.services.workgroups.WorkgroupService;
|
import info.bukova.isspst.services.workgroups.WorkgroupService;
|
||||||
|
|
||||||
import org.springframework.security.core.context.SecurityContextHolder;
|
import org.springframework.security.core.context.SecurityContextHolder;
|
||||||
@@ -18,12 +19,19 @@ public class DashBoardVM {
|
|||||||
|
|
||||||
@WireVariable
|
@WireVariable
|
||||||
private WorkgroupService workgroupService;
|
private WorkgroupService workgroupService;
|
||||||
|
@WireVariable
|
||||||
|
private UserService userService;
|
||||||
private User user;
|
private User user;
|
||||||
private Map<Workgroup, List<Role>> groupRoles;
|
private Map<Workgroup, List<Role>> groupRoles;
|
||||||
|
|
||||||
@Init
|
@Init
|
||||||
public void init() {
|
public void init() {
|
||||||
user = User.class.cast(SecurityContextHolder.getContext().getAuthentication().getPrincipal());
|
user = User.class.cast(SecurityContextHolder.getContext().getAuthentication().getPrincipal());
|
||||||
|
|
||||||
|
if (user.getParents() == null) { // try reload from DB
|
||||||
|
user = userService.getCurrent();
|
||||||
|
}
|
||||||
|
|
||||||
groupRoles = new HashMap<Workgroup, List<Role>>();
|
groupRoles = new HashMap<Workgroup, List<Role>>();
|
||||||
|
|
||||||
List<Workgroup> wg = new ArrayList<Workgroup>();
|
List<Workgroup> wg = new ArrayList<Workgroup>();
|
||||||
|
|||||||
@@ -36,14 +36,14 @@ public class UsersList extends ListViewModel<User> {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@NotifyChange({"permissions", "dataBean"})
|
@NotifyChange({"permissions", "dataBean", "ableToDelete"})
|
||||||
public void setDataBean(User user) {
|
public void setDataBean(User user) {
|
||||||
super.setDataBean(user);
|
super.setDataBean(user);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@GlobalCommand
|
@GlobalCommand
|
||||||
@NotifyChange({"dataList", "dataBean", "permissions"})
|
@NotifyChange({"dataList", "dataBean", "permissions", "ableToDelete"})
|
||||||
public void refresh() {
|
public void refresh() {
|
||||||
super.refresh();
|
super.refresh();
|
||||||
}
|
}
|
||||||
@@ -80,7 +80,7 @@ public class UsersList extends ListViewModel<User> {
|
|||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (getDataBean().getUsername() == "admin")
|
if (getDataBean().getUsername().equals(Constants.DEF_ADMIN))
|
||||||
{
|
{
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -40,14 +40,14 @@ public class WorkgroupList extends ListViewModel<Workgroup> {
|
|||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
@NotifyChange({"dataBean", "workgroupTreeModel"})
|
@NotifyChange({"dataBean", "workgroupTreeModel", "ableToDelete"})
|
||||||
public void setDataBean(Workgroup data) {
|
public void setDataBean(Workgroup data) {
|
||||||
super.setDataBean(data);
|
super.setDataBean(data);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@GlobalCommand
|
@GlobalCommand
|
||||||
@NotifyChange({ "dataList", "dataBean", "workgroupTreeModel" })
|
@NotifyChange({ "dataList", "dataBean", "workgroupTreeModel", "ableToDelete" })
|
||||||
public void refresh() {
|
public void refresh() {
|
||||||
super.refresh();
|
super.refresh();
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
<?page title="${labels.RightsFormTitle}" contentType="text/html;charset=UTF-8"?>
|
<?page title="${labels.RightsFormTitle}" contentType="text/html;charset=UTF-8"?>
|
||||||
<zk>
|
<zk>
|
||||||
<window id="editWin" border="normal" closable="true" width="550px" apply="org.zkoss.bind.BindComposer"
|
<window id="editWin" border="normal" closable="true" width="750px" apply="org.zkoss.bind.BindComposer"
|
||||||
viewModel="@id('vm') @init('info.bukova.isspst.ui.users.PermissionForm')">
|
viewModel="@id('vm') @init('info.bukova.isspst.ui.users.PermissionForm')">
|
||||||
<caption zclass="form-caption" label="${labels.AgendaRights}" />
|
<caption zclass="form-caption" label="${labels.AgendaRights}" />
|
||||||
<label value="@load(vm.dataBean.description)" style="font-weight: bold;"/>
|
<label value="@load(vm.dataBean.description)" style="font-weight: bold;"/>
|
||||||
@@ -9,9 +9,9 @@
|
|||||||
<checkbox label="Práva středisek" checked="@bind(vm.dataBean.centre)"/>
|
<checkbox label="Práva středisek" checked="@bind(vm.dataBean.centre)"/>
|
||||||
</hbox>
|
</hbox>
|
||||||
|
|
||||||
<vbox children="@load(vm.modules)" width="530px">
|
<vbox children="@load(vm.modules)" width="730px">
|
||||||
<template name="children" var="module">
|
<template name="children" var="module">
|
||||||
<groupbox closable="false" mold="3d" width="530px">
|
<groupbox closable="false" mold="3d" width="730px">
|
||||||
<caption label="@load(module.name)"/>
|
<caption label="@load(module.name)"/>
|
||||||
<hbox children="@load(vm.rolePerms.permissionChecks)">
|
<hbox children="@load(vm.rolePerms.permissionChecks)">
|
||||||
<template name="children" var="perm">
|
<template name="children" var="perm">
|
||||||
|
|||||||
Reference in New Issue
Block a user