Commit c0697f82 by Juho Juopperi

merge

2 parents ae4c90df 70e525c6
......@@ -2,3 +2,4 @@
*.class
.DS_Store
/code/LanBortal/EarContent/lib/LanBortalDatabase.jar
*~
package fi.insomnia.bortal.beans;
import java.util.HashSet;
import java.util.List;
import java.util.Set;
import javax.ejb.EJB;
import javax.ejb.Stateless;
......@@ -16,10 +20,11 @@ import fi.insomnia.bortal.model.User;
@Stateless
public class SessionHandlerBean implements SessionHandlerBeanLocal {
@EJB
@EJB
private UserFacade userfacade;
/**
* Default constructor.
* Default constructor.
*/
public SessionHandlerBean() {
// TODO Auto-generated constructor stub
......@@ -28,16 +33,53 @@ public class SessionHandlerBean implements SessionHandlerBeanLocal {
@Override
public boolean hasPermission(String target, User user, RolePermission permission) {
User dbusr = userfacade.find(user.getId());
for(Role r : dbusr.getRoles())
Set<Role> checkedRoles = new HashSet<Role>();
for (Role r : dbusr.getRoles()) {
if (getRights(r, target, permission, checkedRoles)) {
return true;
}
}
return false;
}
private static boolean getRights(Role role,String target,RolePermission permission, Set<Role> checkedRoles) {
if(checkedRoles.contains(role))
{
for(RoleRight rr : r.getRoleRights())
return false;
}
for (RoleRight rr : role.getRoleRights()) {
if (rr.getAccessRight().getAccessRight().equals(target)) {
switch (permission) {
case READ:
if (rr.getRead()) {
return true;
}
break;
case WRITE:
if (rr.getWrite()) {
return true;
}
break;
case EXECUTE:
if (rr.isExecute()) {
return true;
}
}
}
}
checkedRoles.add(role);
for (Role r : role.getParents()) {
if(getRights(r,target,permission,checkedRoles))
{
if(rr.get)
return true;
}
}
return false;
}
}
package fi.insomnia.bortal;
public enum RolePermission {
READ, WRITE, EXECUTE
}
package fi.insomnia.bortal;
import javax.ejb.Local;
import fi.insomnia.bortal.beans.RolePermission;
import fi.insomnia.bortal.model.User;
@Local
......
......@@ -10,28 +10,42 @@ import javax.ejb.EJB;
import javax.enterprise.context.SessionScoped;
import javax.faces.bean.ManagedBean;
import fi.insomnia.bortal.RolePermission;
import fi.insomnia.bortal.SessionHandlerBeanLocal;
import fi.insomnia.bortal.model.User;
/**
*
*
* @author tuukka
*/
@ManagedBean(name="SessionHandler")
@ManagedBean(name = "SessionHandler")
@SessionScoped
public class SessionHandler {
@EJB
private SessionHandlerBeanLocal handlerbean;
private User user;
/** Creates a new instance of SessionHandler */
public SessionHandler() {
}
public boolean hasPermission(String target) {
handlerbean.hasPermission(target, getUser());
throw new UnsupportedOperationException("Not yet implemented");
public boolean hasPermission(String target, String permission) {
RolePermission perm = RolePermission.READ;
if (permission.equals("write")) {
perm = RolePermission.WRITE;
} else if (permission.equals("execute")) {
perm = RolePermission.EXECUTE;
}
return hasPermission(target, perm);
}
public boolean hasPermission(String target, RolePermission permission) {
return handlerbean.hasPermission(target, getUser(), permission);
}
public void setUser(User user) {
......
Markdown is supported
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!