Commit 1a8695ef by Tuomas Riihimäki

Removed AccessRight entity and changed it to Permission enum.

1 parent 3d951f94
Showing with 106 additions and 364 deletions
...@@ -20,17 +20,11 @@ ...@@ -20,17 +20,11 @@
<arguments> <arguments>
</arguments> </arguments>
</buildCommand> </buildCommand>
<buildCommand>
<name>org.granite.builder.granitebuilder</name>
<arguments>
</arguments>
</buildCommand>
</buildSpec> </buildSpec>
<natures> <natures>
<nature>org.eclipse.jem.workbench.JavaEMFNature</nature> <nature>org.eclipse.jem.workbench.JavaEMFNature</nature>
<nature>org.eclipse.wst.common.modulecore.ModuleCoreNature</nature> <nature>org.eclipse.wst.common.modulecore.ModuleCoreNature</nature>
<nature>org.eclipse.wst.common.project.facet.core.nature</nature> <nature>org.eclipse.wst.common.project.facet.core.nature</nature>
<nature>org.eclipse.jdt.core.javanature</nature> <nature>org.eclipse.jdt.core.javanature</nature>
<nature>org.granite.builder.granitenature</nature>
</natures> </natures>
</projectDescription> </projectDescription>
...@@ -21,11 +21,6 @@ ...@@ -21,11 +21,6 @@
</arguments> </arguments>
</buildCommand> </buildCommand>
<buildCommand> <buildCommand>
<name>org.granite.builder.granitebuilder</name>
<arguments>
</arguments>
</buildCommand>
<buildCommand>
<name>org.axdt.as3.imp.builder</name> <name>org.axdt.as3.imp.builder</name>
<arguments> <arguments>
</arguments> </arguments>
...@@ -36,7 +31,6 @@ ...@@ -36,7 +31,6 @@
<nature>org.eclipse.wst.common.modulecore.ModuleCoreNature</nature> <nature>org.eclipse.wst.common.modulecore.ModuleCoreNature</nature>
<nature>org.eclipse.wst.common.project.facet.core.nature</nature> <nature>org.eclipse.wst.common.project.facet.core.nature</nature>
<nature>org.eclipse.jdt.core.javanature</nature> <nature>org.eclipse.jdt.core.javanature</nature>
<nature>org.granite.builder.granitenature</nature>
<nature>org.axdt.as3.imp.nature</nature> <nature>org.axdt.as3.imp.nature</nature>
</natures> </natures>
</projectDescription> </projectDescription>
...@@ -11,10 +11,10 @@ import fi.insomnia.bortal.beanutil.AuthorisationBeanLocal; ...@@ -11,10 +11,10 @@ import fi.insomnia.bortal.beanutil.AuthorisationBeanLocal;
import fi.insomnia.bortal.beanutil.AuthorisationBeanLocal.Right; import fi.insomnia.bortal.beanutil.AuthorisationBeanLocal.Right;
import fi.insomnia.bortal.beanutil.AuthorisationBeanLocal.RightType; import fi.insomnia.bortal.beanutil.AuthorisationBeanLocal.RightType;
import fi.insomnia.bortal.beanutil.PdfPrinter; import fi.insomnia.bortal.beanutil.PdfPrinter;
import fi.insomnia.bortal.enums.BillFacade;
import fi.insomnia.bortal.enums.Permission; import fi.insomnia.bortal.enums.Permission;
import fi.insomnia.bortal.enums.RolePermission; import fi.insomnia.bortal.enums.RolePermission;
import fi.insomnia.bortal.exceptions.PermissionDeniedException; import fi.insomnia.bortal.exceptions.PermissionDeniedException;
import fi.insomnia.bortal.facade.BillFacade;
import fi.insomnia.bortal.facade.BillLineFacade; import fi.insomnia.bortal.facade.BillLineFacade;
import fi.insomnia.bortal.facade.EventFacade; import fi.insomnia.bortal.facade.EventFacade;
import fi.insomnia.bortal.model.Bill; import fi.insomnia.bortal.model.Bill;
......
...@@ -18,11 +18,9 @@ import org.slf4j.LoggerFactory; ...@@ -18,11 +18,9 @@ import org.slf4j.LoggerFactory;
import fi.insomnia.bortal.enums.BeanRole; import fi.insomnia.bortal.enums.BeanRole;
import fi.insomnia.bortal.enums.Permission; import fi.insomnia.bortal.enums.Permission;
import fi.insomnia.bortal.enums.RolePermission; import fi.insomnia.bortal.enums.RolePermission;
import fi.insomnia.bortal.facade.AccessRightFacade;
import fi.insomnia.bortal.facade.EventChildGenericFacade; import fi.insomnia.bortal.facade.EventChildGenericFacade;
import fi.insomnia.bortal.facade.RoleFacade; import fi.insomnia.bortal.facade.RoleFacade;
import fi.insomnia.bortal.facade.RoleRightFacade; import fi.insomnia.bortal.facade.RoleRightFacade;
import fi.insomnia.bortal.model.AccessRight;
import fi.insomnia.bortal.model.LanEvent; import fi.insomnia.bortal.model.LanEvent;
import fi.insomnia.bortal.model.Role; import fi.insomnia.bortal.model.Role;
import fi.insomnia.bortal.model.RoleRight; import fi.insomnia.bortal.model.RoleRight;
...@@ -46,8 +44,7 @@ public class RoleBean implements RoleBeanLocal { ...@@ -46,8 +44,7 @@ public class RoleBean implements RoleBeanLocal {
@EJB @EJB
private UserBeanLocal userbean; private UserBeanLocal userbean;
@EJB
private AccessRightFacade accessRightFacade;
private static final Logger logger = LoggerFactory.getLogger(RoleBean.class); private static final Logger logger = LoggerFactory.getLogger(RoleBean.class);
...@@ -82,7 +79,7 @@ public class RoleBean implements RoleBeanLocal { ...@@ -82,7 +79,7 @@ public class RoleBean implements RoleBeanLocal {
roleList.remove(unit); roleList.remove(unit);
} }
} }
roleList.remove(role);
return roleList; return roleList;
} }
...@@ -106,10 +103,9 @@ public class RoleBean implements RoleBeanLocal { ...@@ -106,10 +103,9 @@ public class RoleBean implements RoleBeanLocal {
public List<RoleRight> getRoleRights(Role r) { public List<RoleRight> getRoleRights(Role r) {
List<AccessRight> rights = accessRightFacade.findAll(); List<RoleRight> ret = new ArrayList<RoleRight>();
List<RoleRight> ret = new ArrayList<RoleRight>(); for (Permission perm : Permission.values()) {
for (AccessRight ar : rights) { ret.add(findRoleRight(r, perm));
ret.add(findRoleRight(r, ar));
} }
return ret; return ret;
} }
...@@ -121,29 +117,26 @@ public class RoleBean implements RoleBeanLocal { ...@@ -121,29 +117,26 @@ public class RoleBean implements RoleBeanLocal {
return rrfacade.merge(row); return rrfacade.merge(row);
} }
public Role getOrCreatePublicRole() {
Role ret = roleFacade.findByName(PUBLIC_ROLE_NAME); // public Role getOrCreatePublicRole() {
if (ret == null) { //
// Role ret = roleFacade.findByName(PUBLIC_ROLE_NAME);
// if (ret == null) {
//
// ret = roleFacade.createRole(eventBean.getCurrentEvent(), PUBLIC_ROLE_NAME);
// AccessRight perm = accessRightFacade.findByPermission(Permission.LOGIN);
// RoleRight rr = rrfacade.createRoleRight(ret, perm);
// rr.setRead(true);
// }
// return ret;
//
// }
ret = roleFacade.createRole(eventBean.getCurrentEvent(), PUBLIC_ROLE_NAME);
AccessRight perm = accessRightFacade.findByPermission(Permission.LOGIN);
RoleRight rr = rrfacade.createRoleRight(ret, perm);
rr.setRead(true);
}
return ret;
}
public RoleRight findRoleRight(Role role, Permission perm) { public RoleRight findRoleRight(Role role, Permission perm) {
AccessRight acr = accessRightFacade.findByPermission(perm); RoleRight rr = rrfacade.find(perm, role);
return findRoleRight(role, acr);
}
public RoleRight findRoleRight(Role role, AccessRight acr) {
RoleRight rr = rrfacade.find(acr, role);
if (rr == null) { if (rr == null) {
rr = new RoleRight(role, acr, false, false, false); rr = new RoleRight(role, perm, false, false, false);
rrfacade.create(rr); rrfacade.create(rr);
} }
return rr; return rr;
......
...@@ -18,7 +18,7 @@ import javax.persistence.Query; ...@@ -18,7 +18,7 @@ import javax.persistence.Query;
import org.slf4j.LoggerFactory; import org.slf4j.LoggerFactory;
import fi.insomnia.bortal.enums.BillFacade; import fi.insomnia.bortal.facade.BillFacade;
import fi.insomnia.bortal.facade.BillLineFacade; import fi.insomnia.bortal.facade.BillLineFacade;
import fi.insomnia.bortal.facade.CompoEntryFacade; import fi.insomnia.bortal.facade.CompoEntryFacade;
import fi.insomnia.bortal.facade.CompoFacade; import fi.insomnia.bortal.facade.CompoFacade;
......
...@@ -22,11 +22,9 @@ import org.slf4j.LoggerFactory; ...@@ -22,11 +22,9 @@ import org.slf4j.LoggerFactory;
import fi.insomnia.bortal.enums.Permission; import fi.insomnia.bortal.enums.Permission;
import fi.insomnia.bortal.enums.RolePermission; import fi.insomnia.bortal.enums.RolePermission;
import fi.insomnia.bortal.exceptions.PermissionDeniedException; import fi.insomnia.bortal.exceptions.PermissionDeniedException;
import fi.insomnia.bortal.facade.AccessRightFacade;
import fi.insomnia.bortal.facade.RoleFacade; import fi.insomnia.bortal.facade.RoleFacade;
import fi.insomnia.bortal.facade.RoleRightFacade; import fi.insomnia.bortal.facade.RoleRightFacade;
import fi.insomnia.bortal.facade.UserFacade; import fi.insomnia.bortal.facade.UserFacade;
import fi.insomnia.bortal.model.AccessRight;
import fi.insomnia.bortal.model.Role; import fi.insomnia.bortal.model.Role;
import fi.insomnia.bortal.model.RoleRight; import fi.insomnia.bortal.model.RoleRight;
import fi.insomnia.bortal.model.User; import fi.insomnia.bortal.model.User;
...@@ -58,8 +56,6 @@ public class UserBean implements UserBeanLocal { ...@@ -58,8 +56,6 @@ public class UserBean implements UserBeanLocal {
@EJB @EJB
private RoleBeanLocal rolebean; private RoleBeanLocal rolebean;
@EJB
private AccessRightFacade accessRightFacade;
@EJB @EJB
private SecurityBeanLocal secubean; private SecurityBeanLocal secubean;
...@@ -109,7 +105,7 @@ public class UserBean implements UserBeanLocal { ...@@ -109,7 +105,7 @@ public class UserBean implements UserBeanLocal {
} }
public boolean isLoggedIn() { public boolean isLoggedIn() {
return !getAnonUser().equals(getCurrentUser()); return !getAnonUser().equals(getCurrentUser()) || getCurrentUser().isSuperadmin();
} }
@Override @Override
...@@ -134,11 +130,6 @@ public class UserBean implements UserBeanLocal { ...@@ -134,11 +130,6 @@ public class UserBean implements UserBeanLocal {
defaultUser.setLogin(DEFAULT_USER_LOGIN); defaultUser.setLogin(DEFAULT_USER_LOGIN);
userFacade.create(defaultUser); userFacade.create(defaultUser);
defaultUser.setSuperadmin(true); defaultUser.setSuperadmin(true);
ArrayList<Role> userRoles = new ArrayList<Role>();
userRoles.add(rolebean.getOrCreatePublicRole());
defaultUser.setRoles(userRoles);
} }
return defaultUser; return defaultUser;
} }
...@@ -152,23 +143,22 @@ public class UserBean implements UserBeanLocal { ...@@ -152,23 +143,22 @@ public class UserBean implements UserBeanLocal {
Boolean ret = BortalLocalContextHolder.hasPermission(target, permission); Boolean ret = BortalLocalContextHolder.hasPermission(target, permission);
if (ret == null) { if (ret == null) {
ret = false; ret = false;
AccessRight expectedRight = accessRightFacade.findByPermission(target);
Set<Role> checkedRoles = new HashSet<Role>(); Set<Role> checkedRoles = new HashSet<Role>();
List<Role> rolelist = rolefacade.findForUser(user, eventBean.getCurrentEvent()); List<Role> rolelist = rolefacade.findForUser(user, eventBean.getCurrentEvent());
if (getRights(rolelist, expectedRight, permission, checkedRoles)) { if (getRights(rolelist, target, permission, checkedRoles)) {
ret = true; ret = true;
} }
logger.debug("Perm not found from cache. saving to cache"); logger.debug("Perm {} not found from cache. saving to cache: {}", target, ret);
BortalLocalContextHolder.setPermission(target, permission, ret); BortalLocalContextHolder.setPermission(target, permission, ret);
} else { } else {
logger.debug("VALUE from cache: {}", ret); logger.debug("VALUE {} perm {} from cache: {}", new Object[] { target, permission, ret });
} }
if (logger.isDebugEnabled()) { if (logger.isDebugEnabled()) {
long diffMs = Calendar.getInstance().getTimeInMillis() - start.getTimeInMillis(); long diffMs = Calendar.getInstance().getTimeInMillis() - start.getTimeInMillis();
logger.debug("Target {}, permission {} checktime {}ms", new Object[] { target, permission, diffMs }); logger.debug("User {} Target {}, permission {} checktime {}ms result: {}", new Object[] { user.getLogin(), target, permission, diffMs, ret });
} }
// TODO: FIX THIS!! really bad idea.... // TODO: FIX THIS!! really bad idea....
...@@ -178,32 +168,31 @@ public class UserBean implements UserBeanLocal { ...@@ -178,32 +168,31 @@ public class UserBean implements UserBeanLocal {
return ret; return ret;
} }
private boolean getRights(Collection<Role> roles, AccessRight expectedRight, RolePermission permission, Set<Role> checkedRoles) { private boolean getRights(Collection<Role> roles, Permission expectedRight, RolePermission permission, Set<Role> checkedRoles) {
if (roles == null || roles.isEmpty()) { if (roles == null || roles.isEmpty()) {
return false; return false;
} }
for (Role role : roles) for (Role role : roles)
for (RoleRight rr : role.getRoleRights())// rrfacade.find(roles, for (RoleRight rr : role.getRoleRights()) {
// expectedRight))
{
BortalLocalContextHolder.setPermission(rr); BortalLocalContextHolder.setPermission(rr);
switch (permission) { if (rr.getPermission().equals(expectedRight)) {
case READ: switch (permission) {
if (rr.isRead()) { case READ:
return true; if (rr.isRead()) {
return true;
}
break;
case WRITE:
if (rr.isWrite()) {
return true;
}
break;
case EXECUTE:
if (rr.isExecute()) {
return true;
}
} }
break;
case WRITE:
if (rr.isWrite()) {
return true;
}
break;
case EXECUTE:
if (rr.isExecute()) {
return true;
}
} }
} }
checkedRoles.addAll(roles); checkedRoles.addAll(roles);
......
package fi.insomnia.bortal.facade;
import fi.insomnia.bortal.enums.Permission;
import javax.ejb.LocalBean;
import javax.ejb.Stateless;
import javax.persistence.EntityManager;
import javax.persistence.PersistenceContext;
import javax.persistence.TypedQuery;
import sun.reflect.generics.reflectiveObjects.NotImplementedException;
import fi.insomnia.bortal.model.AccessRight;
import fi.insomnia.bortal.model.LanEvent;
import fi.insomnia.bortal.model.Role;
@Stateless
@LocalBean
public class AccessRightFacade extends IntegerPkGenericFacade<AccessRight> {
@PersistenceContext
private EntityManager em;
public AccessRightFacade() {
super(AccessRight.class);
}
protected EntityManager getEm() {
return em;
}
/*
* public AccessRight findOrCreateByName(String target) {
*
* // Fetch access right by name TypedQuery<AccessRight> q =
* em.createQuery("SELECT a FROM AccessRight a WHERE a.name = :name",
* AccessRight.class); q.setParameter("name", target); AccessRight right =
* null; right = this.getSingleNullableResult(q);
*
* // Might not exist yet -> create if (right == null) { right = new
* AccessRight(); right.setName(target); em.persist(right); }
*
* return right; }
*/
public AccessRight findByPermission(Permission target) {
// Fetch access right by name
TypedQuery<AccessRight> q = em.createNamedQuery("AccessRight.findByName", AccessRight.class);
q.setParameter("name", target.name());
AccessRight right = null;
right = this.getSingleNullableResult(q);
if (right == null) {
right = new AccessRight(target.name());
right.setDescription(target.getDescription());
create(right);
}
return right;
}
public void find(LanEvent e, Role r) {
throw new NotImplementedException();
}
}
...@@ -10,15 +10,11 @@ import javax.ejb.LocalBean; ...@@ -10,15 +10,11 @@ import javax.ejb.LocalBean;
import javax.ejb.Stateless; import javax.ejb.Stateless;
import javax.persistence.EntityManager; import javax.persistence.EntityManager;
import javax.persistence.PersistenceContext; import javax.persistence.PersistenceContext;
import javax.persistence.Query;
import javax.persistence.TypedQuery; import javax.persistence.TypedQuery;
import fi.insomnia.bortal.enums.RolePermission; import fi.insomnia.bortal.enums.Permission;
import fi.insomnia.bortal.model.AccessRight;
import fi.insomnia.bortal.model.LanEvent;
import fi.insomnia.bortal.model.Role; import fi.insomnia.bortal.model.Role;
import fi.insomnia.bortal.model.RoleRight; import fi.insomnia.bortal.model.RoleRight;
import fi.insomnia.bortal.model.User;
@Stateless @Stateless
@LocalBean @LocalBean
...@@ -35,21 +31,21 @@ public class RoleRightFacade extends EventChildGenericFacade<RoleRight> { ...@@ -35,21 +31,21 @@ public class RoleRightFacade extends EventChildGenericFacade<RoleRight> {
return em; return em;
} }
public RoleRight find(AccessRight right, Role role) { public RoleRight find(Permission permission, Role role) {
TypedQuery<RoleRight> q = this.getEm().createNamedQuery("RoleRight.findByRightAndRole", RoleRight.class); TypedQuery<RoleRight> q = this.getEm().createNamedQuery("RoleRight.findByRightAndRole", RoleRight.class);
q.setParameter("accessright", right); q.setParameter("permission", permission);
q.setParameter("role", role); q.setParameter("role", role);
return this.getSingleNullableResult(q); return this.getSingleNullableResult(q);
} }
public List<RoleRight> find(Collection<Role> roles, AccessRight accessright) { public List<RoleRight> find(Collection<Role> roles, Permission permission) {
if(roles.size() == 0) if(roles.size() == 0)
{ {
return new ArrayList<RoleRight>(); return new ArrayList<RoleRight>();
} }
TypedQuery<RoleRight> q = getEm().createNamedQuery("RoleRight.findByRolesForAccessRight", RoleRight.class); TypedQuery<RoleRight> q = getEm().createNamedQuery("RoleRight.findByRolesForPermission", RoleRight.class);
Set<Integer> roleids = new HashSet<Integer>(); Set<Integer> roleids = new HashSet<Integer>();
for(Role r: roles) for(Role r: roles)
{ {
roleids.add(r.getId().getId()); roleids.add(r.getId().getId());
...@@ -58,11 +54,11 @@ public class RoleRightFacade extends EventChildGenericFacade<RoleRight> { ...@@ -58,11 +54,11 @@ public class RoleRightFacade extends EventChildGenericFacade<RoleRight> {
q.setParameter("eventId", eventId); q.setParameter("eventId", eventId);
q.setParameter("roleids", roleids); q.setParameter("roleids", roleids);
q.setParameter("accessright", accessright); q.setParameter("permission", permission);
return q.getResultList(); return q.getResultList();
} }
public RoleRight createRoleRight(Role role, AccessRight perm) { public RoleRight createRoleRight(Role role, Permission perm) {
RoleRight ret = new RoleRight(role, perm, false, false, false); RoleRight ret = new RoleRight(role, perm, false, false, false);
create(ret); create(ret);
getEm().flush(); getEm().flush();
......
...@@ -20,17 +20,11 @@ ...@@ -20,17 +20,11 @@
<arguments> <arguments>
</arguments> </arguments>
</buildCommand> </buildCommand>
<buildCommand>
<name>org.granite.builder.granitebuilder</name>
<arguments>
</arguments>
</buildCommand>
</buildSpec> </buildSpec>
<natures> <natures>
<nature>org.eclipse.jem.workbench.JavaEMFNature</nature> <nature>org.eclipse.jem.workbench.JavaEMFNature</nature>
<nature>org.eclipse.wst.common.modulecore.ModuleCoreNature</nature> <nature>org.eclipse.wst.common.modulecore.ModuleCoreNature</nature>
<nature>org.eclipse.wst.common.project.facet.core.nature</nature> <nature>org.eclipse.wst.common.project.facet.core.nature</nature>
<nature>org.eclipse.jdt.core.javanature</nature> <nature>org.eclipse.jdt.core.javanature</nature>
<nature>org.granite.builder.granitenature</nature>
</natures> </natures>
</projectDescription> </projectDescription>
...@@ -9,13 +9,11 @@ import java.util.List; ...@@ -9,13 +9,11 @@ import java.util.List;
import javax.ejb.Local; import javax.ejb.Local;
import fi.insomnia.bortal.model.LanEvent;
import fi.insomnia.bortal.model.Role; import fi.insomnia.bortal.model.Role;
import fi.insomnia.bortal.model.RoleRight; import fi.insomnia.bortal.model.RoleRight;
import fi.insomnia.bortal.model.User;
/** /**
* *
* @author tuukka * @author tuukka
*/ */
@Local @Local
...@@ -27,17 +25,11 @@ public interface RoleBeanLocal { ...@@ -27,17 +25,11 @@ public interface RoleBeanLocal {
public Role create(Role role); public Role create(Role role);
public List<Role> getPossibleParents(Role role);
public List<RoleRight> getRoleRights(Role r);
public RoleRight mergeChanges(RoleRight row); public RoleRight mergeChanges(RoleRight row);
public Role getOrCreatePublicRole(); public List<RoleRight> getRoleRights(Role role);
public List<Role> getPossibleParents(Role role);
// public List<Role> findRoles(User user, LanEvent currentEvent);
} }
...@@ -32,11 +32,6 @@ ...@@ -32,11 +32,6 @@
</arguments> </arguments>
</buildCommand> </buildCommand>
<buildCommand> <buildCommand>
<name>org.granite.builder.granitebuilder</name>
<arguments>
</arguments>
</buildCommand>
<buildCommand>
<name>org.axdt.as3.imp.builder</name> <name>org.axdt.as3.imp.builder</name>
<arguments> <arguments>
</arguments> </arguments>
...@@ -47,7 +42,6 @@ ...@@ -47,7 +42,6 @@
<nature>org.eclipse.wst.common.modulecore.ModuleCoreNature</nature> <nature>org.eclipse.wst.common.modulecore.ModuleCoreNature</nature>
<nature>org.eclipse.wst.common.project.facet.core.nature</nature> <nature>org.eclipse.wst.common.project.facet.core.nature</nature>
<nature>org.eclipse.jdt.core.javanature</nature> <nature>org.eclipse.jdt.core.javanature</nature>
<nature>org.granite.builder.granitenature</nature>
<nature>org.axdt.as3.imp.nature</nature> <nature>org.axdt.as3.imp.nature</nature>
</natures> </natures>
</projectDescription> </projectDescription>
...@@ -10,6 +10,7 @@ package fi.insomnia.bortal.enums; ...@@ -10,6 +10,7 @@ package fi.insomnia.bortal.enums;
*/ */
public enum Permission { public enum Permission {
// NOTE. add conversion Value to RoleRight
// PERMISSION("Description"), // PERMISSION("Description"),
LOGIN("User can see loginbutton(r), create new user(w)"), LOGIN("User can see loginbutton(r), create new user(w)"),
USER_MANAGEMENT("User has right to view all users(r), modify users(w), execute actions for user(x), Eg shop! "), USER_MANAGEMENT("User has right to view all users(r), modify users(w), execute actions for user(x), Eg shop! "),
...@@ -37,6 +38,10 @@ public enum Permission { ...@@ -37,6 +38,10 @@ public enum Permission {
Permission() { Permission() {
} }
public String getName()
{
return name();
}
/** /**
* @return the description * @return the description
*/ */
......
/*
* To change this template, choose Tools | Templates
* and open the template in the editor.
*/
package fi.insomnia.bortal.model;
import java.util.List;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.Lob;
import javax.persistence.NamedQueries;
import javax.persistence.NamedQuery;
import javax.persistence.OneToMany;
import javax.persistence.Table;
import javax.persistence.Version;
/**
* An access privilege such as a privilege to login or to work with compos.
*/
@Entity
@Table(name = "access_rights")
@NamedQueries( {
@NamedQuery(name = "AccessRight.findAll", query = "SELECT a FROM AccessRight a"),
@NamedQuery(name = "AccessRight.findByName", query = "SELECT a FROM AccessRight a WHERE a.name = :name") })
public class AccessRight implements ModelInterface {
/**
*
*/
private static final long serialVersionUID = -3786847490670470716L;
/**
* AccessRight is global entity, and thus does not have a reference to
* Event.
*/
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
@Column(name = "id", nullable = false)
private Integer id;
/**
* Name of the access right. Code finds rights by this name, so this field
* should not be changed under any circumstances.
*/
@Column(name = "right_name", nullable = false, updatable = false, unique=true)
private String name;
/**
* Informative human readable description of the access right.
*/
@Lob
@Column(name = "right_description")
private String description;
/**
* Role rights that have references to this access right object.
*/
@OneToMany(mappedBy = "accessRight")
private List<RoleRight> roleRights;
@Override
public Integer getId() {
return id;
}
@Override
public void setId(Integer id) {
this.id = id;
}
@Version
@Column(nullable = false)
private int jpaVersionField = 0;
public AccessRight() {
}
public AccessRight(String name) {
this.name = name;
}
public String getName() {
return name;
}
public void setName(String accessRight) {
this.name = accessRight;
}
public List<RoleRight> getRoleRightList() {
return roleRights;
}
public void setRoleRightList(List<RoleRight> roleRightList) {
this.roleRights = roleRightList;
}
@Override
public int hashCode() {
int hash = 0;
hash += (id != null ? id.hashCode() : 0);
return hash;
}
@Override
public boolean equals(Object object) {
// TODO: Warning - this method won't work in the case the id fields are
// not set
if (!(object instanceof AccessRight)) {
return false;
}
AccessRight other = (AccessRight) object;
if ((this.id == null && other.id != null)
|| (this.id != null && !this.id.equals(other.id))) {
return false;
}
return true;
}
@Override
public String toString() {
return "fi.insomnia.bortal.model.AccessRight[id=" + id + "]";
}
@Override
public void setJpaVersionField(int jpaVersionField) {
this.jpaVersionField = jpaVersionField;
}
@Override
public int getJpaVersionField() {
return jpaVersionField;
}
public void setDescription(String description) {
this.description = description;
}
public String getDescription() {
return description;
}
}
...@@ -17,6 +17,7 @@ import javax.persistence.UniqueConstraint; ...@@ -17,6 +17,7 @@ import javax.persistence.UniqueConstraint;
import javax.persistence.Version; import javax.persistence.Version;
import org.eclipse.persistence.annotations.ConversionValue; import org.eclipse.persistence.annotations.ConversionValue;
import org.eclipse.persistence.annotations.Convert;
import org.eclipse.persistence.annotations.ObjectTypeConverter; import org.eclipse.persistence.annotations.ObjectTypeConverter;
import fi.insomnia.bortal.enums.Permission; import fi.insomnia.bortal.enums.Permission;
...@@ -26,11 +27,12 @@ import fi.insomnia.bortal.enums.Permission; ...@@ -26,11 +27,12 @@ import fi.insomnia.bortal.enums.Permission;
* @author jkj * @author jkj
*/ */
@Entity @Entity
@Table(name = "role_rights", uniqueConstraints = { @UniqueConstraint(columnNames = { "event_id", "role_id", "access_right_id" }) }) @Table(name = "role_rights", uniqueConstraints = { @UniqueConstraint(columnNames = { "event_id", "role_id", "permission" }) })
@NamedQueries({ @NamedQuery(name = "RoleRight.findAll", query = "SELECT r FROM RoleRight r"), @NamedQueries({ @NamedQuery(name = "RoleRight.findAll", query = "SELECT r FROM RoleRight r"),
@NamedQuery(name = "RoleRight.findByRightAndRole", query = "SELECT r FROM RoleRight r where r.role = :role and r.accessRight = :accessright "), @NamedQuery(name = "RoleRight.findByRightAndRole", query = "SELECT r FROM RoleRight r where r.role = :role and r.permission = :permission "),
@NamedQuery(name = "RoleRight.findByRolesForAccessRight", query = "SELECT rr from RoleRight rr where rr.role.id.eventId = :eventId and rr.role.id.id in :roleids and rr.accessRight = :accessright") }) @NamedQuery(name = "RoleRight.findByRolesForPermission", query = "SELECT rr from RoleRight rr where rr.role.id.eventId = :eventId and rr.role.id.id in :roleids and rr.permission = :permission") })
@ObjectTypeConverter(name = "accessright", objectType = Permission.class, dataType = String.class, conversionValues = {
@ObjectTypeConverter(name = "permissionconverter", objectType = Permission.class, dataType = String.class, conversionValues = {
@ConversionValue(dataValue = "LOGIN", objectValue = "LOGIN"), @ConversionValue(dataValue = "LOGIN", objectValue = "LOGIN"),
@ConversionValue(dataValue = "USER_MANAGEMENT", objectValue = "USER_MANAGEMENT"), @ConversionValue(dataValue = "USER_MANAGEMENT", objectValue = "USER_MANAGEMENT"),
@ConversionValue(dataValue = "TICKET_SALES", objectValue = "TICKET_SALES"), @ConversionValue(dataValue = "TICKET_SALES", objectValue = "TICKET_SALES"),
...@@ -55,6 +57,8 @@ public class RoleRight implements EventChildInterface { ...@@ -55,6 +57,8 @@ public class RoleRight implements EventChildInterface {
// @JoinColumn(name = "access_right_id", referencedColumnName = "id") // @JoinColumn(name = "access_right_id", referencedColumnName = "id")
// @ManyToOne // @ManyToOne
// private AccessRight accessRight; // private AccessRight accessRight;
@Convert("permissionconverter")
@Column(name = "permission", nullable = false)
private Permission permission; private Permission permission;
@JoinColumns({ @JoinColumns({
...@@ -76,9 +80,9 @@ public class RoleRight implements EventChildInterface { ...@@ -76,9 +80,9 @@ public class RoleRight implements EventChildInterface {
this.role = role; this.role = role;
} }
public RoleRight(Role role, AccessRight right, boolean read, boolean write, boolean execute) { public RoleRight(Role role, Permission right, boolean read, boolean write, boolean execute) {
this(role); this(role);
this.accessRight = right; this.setPermission(right);
this.read = read; this.read = read;
this.write = write; this.write = write;
this.execute = execute; this.execute = execute;
...@@ -100,14 +104,6 @@ public class RoleRight implements EventChildInterface { ...@@ -100,14 +104,6 @@ public class RoleRight implements EventChildInterface {
this.write = write; this.write = write;
} }
public AccessRight getAccessRight() {
return accessRight;
}
public void setAccessRight(AccessRight accessRightsId) {
this.accessRight = accessRightsId;
}
public Role getRole() { public Role getRole() {
return role; return role;
} }
...@@ -184,4 +180,12 @@ public class RoleRight implements EventChildInterface { ...@@ -184,4 +180,12 @@ public class RoleRight implements EventChildInterface {
public boolean isExecute() { public boolean isExecute() {
return execute; return execute;
} }
public void setPermission(Permission permission) {
this.permission = permission;
}
public Permission getPermission() {
return permission;
}
} }
...@@ -25,11 +25,6 @@ ...@@ -25,11 +25,6 @@
<arguments> <arguments>
</arguments> </arguments>
</buildCommand> </buildCommand>
<buildCommand>
<name>org.granite.builder.granitebuilder</name>
<arguments>
</arguments>
</buildCommand>
</buildSpec> </buildSpec>
<natures> <natures>
<nature>org.eclipse.jem.workbench.JavaEMFNature</nature> <nature>org.eclipse.jem.workbench.JavaEMFNature</nature>
...@@ -37,6 +32,5 @@ ...@@ -37,6 +32,5 @@
<nature>org.eclipse.wst.common.project.facet.core.nature</nature> <nature>org.eclipse.wst.common.project.facet.core.nature</nature>
<nature>org.eclipse.jdt.core.javanature</nature> <nature>org.eclipse.jdt.core.javanature</nature>
<nature>org.axdt.as3.imp.nature</nature> <nature>org.axdt.as3.imp.nature</nature>
<nature>org.granite.builder.granitenature</nature>
</natures> </natures>
</projectDescription> </projectDescription>
...@@ -72,15 +72,14 @@ public class BortalLocalContextHolder { ...@@ -72,15 +72,14 @@ public class BortalLocalContextHolder {
} }
public static void setPermission( RoleRight rr) { public static void setPermission( RoleRight rr) {
Permission target = Permission.valueOf(rr.getAccessRight().getName());
if (rr.isExecute()) { if (rr.isExecute()) {
setPermission(target, RolePermission.EXECUTE, true); setPermission(rr.getPermission(), RolePermission.EXECUTE, true);
} }
if (rr.isWrite()) { if (rr.isWrite()) {
setPermission(target, RolePermission.WRITE, true); setPermission(rr.getPermission(), RolePermission.WRITE, true);
} }
if (rr.isRead()) { if (rr.isRead()) {
setPermission(target, RolePermission.READ, true); setPermission(rr.getPermission(), RolePermission.READ, true);
} }
} }
......
...@@ -26,11 +26,6 @@ ...@@ -26,11 +26,6 @@
</arguments> </arguments>
</buildCommand> </buildCommand>
<buildCommand> <buildCommand>
<name>org.granite.builder.granitebuilder</name>
<arguments>
</arguments>
</buildCommand>
<buildCommand>
<name>org.axdt.as3.imp.builder</name> <name>org.axdt.as3.imp.builder</name>
<arguments> <arguments>
</arguments> </arguments>
...@@ -43,6 +38,5 @@ ...@@ -43,6 +38,5 @@
<nature>org.eclipse.jdt.core.javanature</nature> <nature>org.eclipse.jdt.core.javanature</nature>
<nature>org.eclipse.wst.jsdt.core.jsNature</nature> <nature>org.eclipse.wst.jsdt.core.jsNature</nature>
<nature>org.axdt.as3.imp.nature</nature> <nature>org.axdt.as3.imp.nature</nature>
<nature>org.granite.builder.granitenature</nature>
</natures> </natures>
</projectDescription> </projectDescription>
...@@ -7,11 +7,13 @@ ...@@ -7,11 +7,13 @@
xmlns:h="http://java.sun.com/jsf/html" xmlns:h="http://java.sun.com/jsf/html"
xmlns:f="http://java.sun.com/jsf/core" xmlns:f="http://java.sun.com/jsf/core"
xmlns:c="http://java.sun.com/jsp/jstl/core" xmlns:c="http://java.sun.com/jsp/jstl/core"
xmlns:products="http://java.sun.com/jsf/composite/tools/products"> xmlns:products="http://java.sun.com/jsf/composite/tools/products"
xmlns:tools="http://java.sun.com/jsf/composite/tools">
<h:body> <h:body>
<ui:composition template="/layout/#{sessionHandler.layout}/template.xhtml"> <ui:composition template="/layout/#{sessionHandler.layout}/template.xhtml">
<ui:param name="thispage" value="page.product.create" /> <ui:param name="thispage" value="page.product.create" />
<ui:define name="content"> <ui:define name="content">
<tools:fatalPermission target="PRODUCT" permission="WRITE" />
<products:create /> <products:create />
</ui:define> </ui:define>
</ui:composition> </ui:composition>
......
...@@ -7,6 +7,7 @@ ...@@ -7,6 +7,7 @@
xmlns:h="http://java.sun.com/jsf/html" xmlns:h="http://java.sun.com/jsf/html"
xmlns:f="http://java.sun.com/jsf/core" xmlns:f="http://java.sun.com/jsf/core"
xmlns:c="http://java.sun.com/jsp/jstl/core" xmlns:c="http://java.sun.com/jsp/jstl/core"
xmlns:tools="http://java.sun.com/jsf/composite/tools"
xmlns:products="http://java.sun.com/jsf/composite/tools/products"> xmlns:products="http://java.sun.com/jsf/composite/tools/products">
<h:head> <h:head>
<title></title> <title></title>
...@@ -15,6 +16,8 @@ ...@@ -15,6 +16,8 @@
<ui:composition template="/layout/#{sessionHandler.layout}/template.xhtml"> <ui:composition template="/layout/#{sessionHandler.layout}/template.xhtml">
<ui:param name="thispage" value="page.product.edit" /> <ui:param name="thispage" value="page.product.edit" />
<ui:define name="content"> <ui:define name="content">
<tools:fatalPermission target="PRODUCT" permission="WRITE" />
<products:edit commitvalue="#{i18n['products.save']}"> <products:edit commitvalue="#{i18n['products.save']}">
<f:actionListener for="commitbutton" binding="#{productView.saveProduct()}" /> <f:actionListener for="commitbutton" binding="#{productView.saveProduct()}" />
</products:edit> </products:edit>
......
...@@ -6,11 +6,13 @@ ...@@ -6,11 +6,13 @@
xmlns:ui="http://java.sun.com/jsf/facelets" xmlns:ui="http://java.sun.com/jsf/facelets"
xmlns:h="http://java.sun.com/jsf/html" xmlns:h="http://java.sun.com/jsf/html"
xmlns:products="http://java.sun.com/jsf/composite/tools/products" xmlns:products="http://java.sun.com/jsf/composite/tools/products"
xmlns:tools="http://java.sun.com/jsf/composite/tools"
xmlns:f="http://java.sun.com/jsf/core"> xmlns:f="http://java.sun.com/jsf/core">
<h:body> <h:body>
<ui:composition template="/layout/#{sessionHandler.layout}/template.xhtml"> <ui:composition template="/layout/#{sessionHandler.layout}/template.xhtml">
<ui:param name="thispage" value="page.product.list" /> <ui:param name="thispage" value="page.product.list" />
<ui:define name="content"> <ui:define name="content">
<tools:fatalPermission target="PRODUCT" permission="READ" />
<products:list /> <products:list />
</ui:define> </ui:define>
</ui:composition> </ui:composition>
......
...@@ -15,7 +15,7 @@ ...@@ -15,7 +15,7 @@
</composite:interface> </composite:interface>
<composite:implementation> <composite:implementation>
<h:outputText rendered="#{sessionHandler.fatalPermission(cc.attrs.target, cc.attrs.permission)}" value=""/> #{sessionHandler.fatalPermission(cc.attrs.target, cc.attrs.permission)}
</composite:implementation> </composite:implementation>
</html> </html>
\ No newline at end of file
...@@ -26,13 +26,13 @@ ...@@ -26,13 +26,13 @@
<f:facet name="header"> <f:facet name="header">
<h:outputText value="#{i18n['role.name']}" /> <h:outputText value="#{i18n['role.name']}" />
</f:facet> </f:facet>
<h:outputText value="#{rr.accessRight.name}" /> <h:outputText value="#{rr.permission.name}" />
</h:column> </h:column>
<h:column> <h:column>
<f:facet name="header"> <f:facet name="header">
<h:outputText value="#{i18n['role.description']}" /> <h:outputText value="#{i18n['role.description']}" />
</f:facet> </f:facet>
<h:outputText value="#{rr.accessRight.description}" /> <h:outputText value="#{rr.permission.description}" />
</h:column> </h:column>
<h:column> <h:column>
<f:facet name="header"> <f:facet name="header">
......
...@@ -6,11 +6,15 @@ ...@@ -6,11 +6,15 @@
xmlns:h="http://java.sun.com/jsf/html" xmlns:h="http://java.sun.com/jsf/html"
xmlns:f="http://java.sun.com/jsf/core" xmlns:f="http://java.sun.com/jsf/core"
xmlns:role="http://java.sun.com/jsf/composite/tools/role" xmlns:role="http://java.sun.com/jsf/composite/tools/role"
xmlns:tools="http://java.sun.com/jsf/composite/tools"
xmlns:c="http://java.sun.com/jsp/jstl/core"> xmlns:c="http://java.sun.com/jsp/jstl/core">
<ui:composition template="/layout/#{sessionHandler.layout}/template.xhtml"> <ui:composition template="/layout/#{sessionHandler.layout}/template.xhtml">
<ui:param name="thispage" value="page.role.create" /> <ui:param name="thispage" value="page.role.create" />
<ui:define name="content"> <ui:define name="content">
<tools:fatalPermission target="ROLE_MANAGEMENT" permission="WRITE" />
<role:create /> <role:create />
</ui:define> </ui:define>
</ui:composition> </ui:composition>
......
...@@ -6,11 +6,13 @@ ...@@ -6,11 +6,13 @@
xmlns:h="http://java.sun.com/jsf/html" xmlns:h="http://java.sun.com/jsf/html"
xmlns:f="http://java.sun.com/jsf/core" xmlns:f="http://java.sun.com/jsf/core"
xmlns:role="http://java.sun.com/jsf/composite/tools/role" xmlns:role="http://java.sun.com/jsf/composite/tools/role"
xmlns:tools="http://java.sun.com/jsf/composite/tools"
xmlns:c="http://java.sun.com/jsp/jstl/core"> xmlns:c="http://java.sun.com/jsp/jstl/core">
<h:body> <h:body>
<ui:composition template="/layout/#{sessionHandler.layout}/template.xhtml"> <ui:composition template="/layout/#{sessionHandler.layout}/template.xhtml">
<ui:param name="thispage" value="page.role.edit" /> <ui:param name="thispage" value="page.role.edit" />
<ui:define name="content"> <ui:define name="content">
<tools:fatalPermission target="ROLE_MANAGEMENT" permission="WRITE" />
<role:edit /> <role:edit />
</ui:define> </ui:define>
</ui:composition> </ui:composition>
......
...@@ -6,11 +6,13 @@ ...@@ -6,11 +6,13 @@
xmlns:h="http://java.sun.com/jsf/html" xmlns:h="http://java.sun.com/jsf/html"
xmlns:f="http://java.sun.com/jsf/core" xmlns:f="http://java.sun.com/jsf/core"
xmlns:role="http://java.sun.com/jsf/composite/tools/role" xmlns:role="http://java.sun.com/jsf/composite/tools/role"
xmlns:tools="http://java.sun.com/jsf/composite/tools"
xmlns:c="http://java.sun.com/jsp/jstl/core"> xmlns:c="http://java.sun.com/jsp/jstl/core">
<h:body> <h:body>
<ui:composition template="/layout/#{sessionHandler.layout}/template.xhtml"> <ui:composition template="/layout/#{sessionHandler.layout}/template.xhtml">
<ui:param name="thispage" value="page.role.list" /> <ui:param name="thispage" value="page.role.list" />
<ui:define name="content"> <ui:define name="content">
<tools:fatalPermission target="ROLE_MANAGEMENT" permission="READ" />
<role:list valuelist="#{roleView.roles}" > <role:list valuelist="#{roleView.roles}" >
</role:list> </role:list>
</ui:define> </ui:define>
......
...@@ -50,7 +50,6 @@ public class ProductShopView { ...@@ -50,7 +50,6 @@ public class ProductShopView {
private User shoppingUser; private User shoppingUser;
public DataModel<Product> getUserShoppableProducts() { public DataModel<Product> getUserShoppableProducts() {
userBean.fatalNotLoggedIn();
ListDataModel<Product> items = new ListDataModel<Product>(productBean.listUserShoppableProducts()); ListDataModel<Product> items = new ListDataModel<Product>(productBean.listUserShoppableProducts());
logger.info("Fetching products. Found {}", items.getRowCount()); logger.info("Fetching products. Found {}", items.getRowCount());
return items; return items;
......
...@@ -60,14 +60,14 @@ public class ProductView { ...@@ -60,14 +60,14 @@ public class ProductView {
} }
public String createProduct() { public void createProduct() {
userBean.fatalPermission(Permission.PRODUCT, RolePermission.WRITE); userBean.fatalPermission(Permission.PRODUCT, RolePermission.WRITE);
setProduct(productBean.createProduct(productname, productprice)); setProduct(productBean.createProduct(productname, productprice));
productprice = BigDecimal.ZERO; productprice = BigDecimal.ZERO;
productname = ""; productname = "";
return "edit"; // return "edit";
} }
public String edit() { public String edit() {
...@@ -76,10 +76,9 @@ public class ProductView { ...@@ -76,10 +76,9 @@ public class ProductView {
return "edit"; return "edit";
} }
public String saveProduct() { public void saveProduct() {
userBean.fatalPermission(Permission.PRODUCT, RolePermission.WRITE); userBean.fatalPermission(Permission.PRODUCT, RolePermission.WRITE);
productBean.mergeChanges(product); productBean.mergeChanges(product);
return "list";
} }
/** /**
......
...@@ -94,7 +94,7 @@ public class RoleView { ...@@ -94,7 +94,7 @@ public class RoleView {
logger.info("Roleright array: {}", rolerights); logger.info("Roleright array: {}", rolerights);
RoleRight row = rolerights.getRowData(); RoleRight row = rolerights.getRowData();
roleBean.mergeChanges(row); roleBean.mergeChanges(row);
logger.info("Saving roleright {}, r {}, w {}, x {}", new String[] { row.getAccessRight().getName(), new Boolean(row.isRead()).toString(), new Boolean(row.isWrite()).toString(), new Boolean(row.isExecute()).toString() }); logger.info("Saving roleright {}, r {}, w {}, x {}", new String[] { row.getPermission().toString(), new Boolean(row.isRead()).toString(), new Boolean(row.isWrite()).toString(), new Boolean(row.isExecute()).toString() });
rolerights = null; rolerights = null;
return "editRoleright"; return "editRoleright";
......
Markdown is supported
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!