Commit 38d217be by Tuomas Riihimäki

Rooliviilausta.. Ei pushata näitä vielä..

1 parent 90f3a3b1
...@@ -7,21 +7,21 @@ import javax.ejb.EJB; ...@@ -7,21 +7,21 @@ import javax.ejb.EJB;
import javax.ejb.Stateless; import javax.ejb.Stateless;
import javax.servlet.ServletOutputStream; import javax.servlet.ServletOutputStream;
import fi.insomnia.bortal.beanutil.AuthorisationBean; import fi.insomnia.bortal.beanutil.AuthorisationBean;
import fi.insomnia.bortal.beanutil.AuthorisationBean.Right; import fi.insomnia.bortal.beanutil.AuthorisationBean.Right;
import fi.insomnia.bortal.beanutil.AuthorisationBean.RightType; import fi.insomnia.bortal.beanutil.AuthorisationBean.RightType;
import fi.insomnia.bortal.beanutil.PdfPrinter; import fi.insomnia.bortal.beanutil.PdfPrinter;
import fi.insomnia.bortal.enums.BeanRole;
import fi.insomnia.bortal.facade.BillFacade; import fi.insomnia.bortal.facade.BillFacade;
import fi.insomnia.bortal.model.Bill; import fi.insomnia.bortal.model.Bill;
import fi.insomnia.bortal.model.Event; import fi.insomnia.bortal.model.Event;
import fi.insomnia.bortal.model.User; import fi.insomnia.bortal.model.User;
/** /**
* Session Bean implementation class BillBean * Session Bean implementation class BillBean
*/ */
@Stateless @Stateless
@DeclareRoles({ "user", "moneyadmin" })
public class BillBean implements BillBeanLocal { public class BillBean implements BillBeanLocal {
@EJB @EJB
......
...@@ -9,7 +9,7 @@ import javax.ejb.Stateless; ...@@ -9,7 +9,7 @@ import javax.ejb.Stateless;
import org.slf4j.Logger; import org.slf4j.Logger;
import org.slf4j.LoggerFactory; import org.slf4j.LoggerFactory;
import fi.insomnia.bortal.enums.Role; import fi.insomnia.bortal.enums.BeanRole;
import fi.insomnia.bortal.facade.UserFacade; import fi.insomnia.bortal.facade.UserFacade;
import fi.insomnia.bortal.model.User; import fi.insomnia.bortal.model.User;
...@@ -19,8 +19,6 @@ import fi.insomnia.bortal.model.User; ...@@ -19,8 +19,6 @@ import fi.insomnia.bortal.model.User;
@Stateless @Stateless
public class JaasBean implements JaasBeanLocal, JaasBeanRemote { public class JaasBean implements JaasBeanLocal, JaasBeanRemote {
public static final String JAAS_SUPERADMINGROUP = "superadmin";
public static final String JAAS_USERGROUP = "user";
private static final Logger logger = LoggerFactory.getLogger(JaasBean.class); private static final Logger logger = LoggerFactory.getLogger(JaasBean.class);
@EJB @EJB
private UserFacade userfacade; private UserFacade userfacade;
...@@ -61,9 +59,9 @@ public class JaasBean implements JaasBeanLocal, JaasBeanRemote { ...@@ -61,9 +59,9 @@ public class JaasBean implements JaasBeanLocal, JaasBeanRemote {
Vector<String> rights = new Vector<String>(); Vector<String> rights = new Vector<String>();
if (usr != null) { if (usr != null) {
rights.add(JAAS_USERGROUP); rights.add(BeanRole.USER_BASE.name());
if (usr.isSuperadmin()) { if (usr.isSuperadmin()) {
rights.add(JAAS_SUPERADMINGROUP); rights.add(BeanRole.SUPERADMIN.name());
} }
} }
......
...@@ -4,6 +4,7 @@ ...@@ -4,6 +4,7 @@
*/ */
package fi.insomnia.bortal.beans; package fi.insomnia.bortal.beans;
import fi.insomnia.bortal.enums.BeanRole;
import fi.insomnia.bortal.facade.RoleFacade; import fi.insomnia.bortal.facade.RoleFacade;
import fi.insomnia.bortal.model.Role; import fi.insomnia.bortal.model.Role;
import java.util.ArrayList; import java.util.ArrayList;
...@@ -16,12 +17,14 @@ import org.slf4j.Logger; ...@@ -16,12 +17,14 @@ import org.slf4j.Logger;
import org.slf4j.LoggerFactory; import org.slf4j.LoggerFactory;
/** /**
* *
* @author tuukka * @author tuukka
*/ */
@Stateless @Stateless
public class RoleBean implements RoleBeanLocal { public class RoleBean implements RoleBeanLocal {
public static final String[] DECLARED_ROLES = { BeanRole.SUPERADMIN.name(), BeanRole.ADMIN_BASE.name(), BeanRole.USER_BASE.name() };
@EJB @EJB
private RoleFacade roleFacade; private RoleFacade roleFacade;
private static final Logger logger = LoggerFactory.getLogger(RoleBean.class); private static final Logger logger = LoggerFactory.getLogger(RoleBean.class);
...@@ -37,7 +40,6 @@ public class RoleBean implements RoleBeanLocal { ...@@ -37,7 +40,6 @@ public class RoleBean implements RoleBeanLocal {
public Role create(Role role) { public Role create(Role role) {
roleFacade.create(role); roleFacade.create(role);
return role; return role;
...@@ -46,7 +48,7 @@ public class RoleBean implements RoleBeanLocal { ...@@ -46,7 +48,7 @@ public class RoleBean implements RoleBeanLocal {
public List<Role> getPossibleParents(Role role) { public List<Role> getPossibleParents(Role role) {
List<Role> roleList = listRoles(); List<Role> roleList = listRoles();
if(role == null) if (role == null)
return roleList; return roleList;
List<Role> children = getAllChilds(role, new HashSet<Role>()); List<Role> children = getAllChilds(role, new HashSet<Role>());
...@@ -60,8 +62,6 @@ public class RoleBean implements RoleBeanLocal { ...@@ -60,8 +62,6 @@ public class RoleBean implements RoleBeanLocal {
return roleList; return roleList;
} }
private static List<Role> getAllChilds(Role role, Set<Role> checkedRoles) { private static List<Role> getAllChilds(Role role, Set<Role> checkedRoles) {
List<Role> returnList = new ArrayList<Role>(); List<Role> returnList = new ArrayList<Role>();
...@@ -80,7 +80,9 @@ public class RoleBean implements RoleBeanLocal { ...@@ -80,7 +80,9 @@ public class RoleBean implements RoleBeanLocal {
return returnList; return returnList;
} }
public static String[] getDeclaredRoles() {
return DECLARED_ROLES;
}
// Add business logic below. (Right-click in editor and choose // Add business logic below. (Right-click in editor and choose
// "Insert Code > Add Business Method") // "Insert Code > Add Business Method")
......
...@@ -19,6 +19,7 @@ import fi.insomnia.bortal.model.User; ...@@ -19,6 +19,7 @@ import fi.insomnia.bortal.model.User;
@Stateless @Stateless
public class SecurityBean implements SecurityBeanLocal { public class SecurityBean implements SecurityBeanLocal {
private final Logger logger = org.slf4j.LoggerFactory.getLogger(SecurityBean.class); private final Logger logger = org.slf4j.LoggerFactory.getLogger(SecurityBean.class);
@EJB @EJB
private LogEntryTypeFacade typeFacade; private LogEntryTypeFacade typeFacade;
......
...@@ -38,7 +38,7 @@ import fi.insomnia.bortal.model.User; ...@@ -38,7 +38,7 @@ import fi.insomnia.bortal.model.User;
* Session Bean implementation class TestDataBean * Session Bean implementation class TestDataBean
*/ */
@Stateless @Stateless
@DeclareRoles(JaasBean.JAAS_SUPERADMINGROUP) // @DeclareRoles(JaasBean.JAAS_SUPERADMINGROUP)
//@RolesAllowed(JaasBean.JAAS_SUPERADMINGROUP) //@RolesAllowed(JaasBean.JAAS_SUPERADMINGROUP)
public class TestDataBean implements TestDataBeanLocal { public class TestDataBean implements TestDataBeanLocal {
......
...@@ -3,7 +3,9 @@ package fi.insomnia.bortal.beans; ...@@ -3,7 +3,9 @@ package fi.insomnia.bortal.beans;
import java.security.Principal; import java.security.Principal;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.HashSet; import java.util.HashSet;
import java.util.Iterator;
import java.util.List; import java.util.List;
import java.util.Map.Entry;
import java.util.Set; import java.util.Set;
import javax.annotation.Resource; import javax.annotation.Resource;
...@@ -11,6 +13,7 @@ import javax.ejb.EJB; ...@@ -11,6 +13,7 @@ import javax.ejb.EJB;
import javax.ejb.LocalBean; import javax.ejb.LocalBean;
import javax.ejb.SessionContext; import javax.ejb.SessionContext;
import javax.ejb.Stateless; import javax.ejb.Stateless;
import javax.xml.rpc.handler.MessageContext;
import org.slf4j.Logger; import org.slf4j.Logger;
import org.slf4j.LoggerFactory; import org.slf4j.LoggerFactory;
...@@ -78,6 +81,7 @@ public class UserBean implements UserBeanLocal { ...@@ -78,6 +81,7 @@ public class UserBean implements UserBeanLocal {
return userFacade.findByLogin(nick); return userFacade.findByLogin(nick);
} }
@Override @Override
public User getCurrentUser(Event event) { public User getCurrentUser(Event event) {
Principal principal = context.getCallerPrincipal(); Principal principal = context.getCallerPrincipal();
......
...@@ -27,4 +27,5 @@ public interface UserBeanLocal { ...@@ -27,4 +27,5 @@ public interface UserBeanLocal {
boolean hasPermission(Permission target, User user, RolePermission permission); boolean hasPermission(Permission target, User user, RolePermission permission);
} }
package fi.insomnia.bortal.enums; package fi.insomnia.bortal.enums;
public enum Role { public enum BeanRole {
USER_BASE(true), // Logged in user USER_BASE(true), // Logged in user
ADMIN_BASE(true), ADMIN_BASE(true),
SUPERADMIN(false) // Admin for this event SUPERADMIN(false) // Admin for this event
...@@ -8,11 +8,13 @@ public enum Role { ...@@ -8,11 +8,13 @@ public enum Role {
private boolean inDatabase; private boolean inDatabase;
Role(boolean inDb) { BeanRole(boolean inDb) {
inDatabase = inDb; inDatabase = inDb;
} }
public boolean isInDatabase() { public boolean isInDatabase() {
return inDatabase; return inDatabase;
} }
} }
...@@ -15,7 +15,7 @@ public enum Permission { ...@@ -15,7 +15,7 @@ public enum Permission {
PERMISSION("Description"), PERMISSION("Description"),
LOGIN("User can see loginbutton. (only defaultuser should have permission to that one)"), LOGIN("User can see loginbutton. (only defaultuser should have permission to that one)"),
userManagement; USER_MANAGEMENT("User has right to manage users.... ");
private static final Logger logger = LoggerFactory.getLogger(Permission.class); private static final Logger logger = LoggerFactory.getLogger(Permission.class);
private String description; private String description;
......
...@@ -3,12 +3,16 @@ ...@@ -3,12 +3,16 @@
<sun-web-app error-url=""> <sun-web-app error-url="">
<context-root>/LanBortalWeb</context-root> <context-root>/LanBortalWeb</context-root>
<security-role-mapping> <security-role-mapping>
<role-name>admin</role-name> <role-name>SUPERADMIN</role-name>
<group-name>admin</group-name> <group-name>SUPERADMIN</group-name>
</security-role-mapping> </security-role-mapping>
<security-role-mapping> <security-role-mapping>
<role-name>user</role-name> <role-name>ADMIN_BASE</role-name>
<group-name>user</group-name> <group-name>ADMIN_BASE</group-name>
</security-role-mapping>
<security-role-mapping>
<role-name>USER_BASE</role-name>
<group-name>USER_BASE</group-name>
</security-role-mapping> </security-role-mapping>
<class-loader delegate="true" /> <class-loader delegate="true" />
<jsp-config> <jsp-config>
......
...@@ -44,10 +44,13 @@ ...@@ -44,10 +44,13 @@
</form-login-config> </form-login-config>
</login-config> </login-config>
<security-role> <security-role>
<role-name>admin</role-name> <role-name>SUPERADMIN</role-name>
</security-role> </security-role>
<security-role> <security-role>
<role-name>user</role-name> <role-name>USER_BASE</role-name>
</security-role>
<security-role>
<role-name>ADMIN_BASE</role-name>
</security-role> </security-role>
<security-constraint> <security-constraint>
<web-resource-collection> <web-resource-collection>
......
...@@ -14,7 +14,8 @@ ...@@ -14,7 +14,8 @@
<br /> <br />
<br /> <br />
<h:commandButton value="print places debug info" action="#{TestDataView.printPlacesInfo}" /> <h:commandButton value="print places debug info" action="#{TestDataView.printPlacesInfo}" />
</h:form> <br />
</h:form>
</h:body> </h:body>
</html> </html>
...@@ -17,7 +17,7 @@ ...@@ -17,7 +17,7 @@
<composite:implementation> <composite:implementation>
<c:choose> <c:choose>
<c:when test='#{sessionHandler.canExecute(target) }'> <c:when test='#{sessionHandler.canExecute(cc.attrs.target) }'>
<composite:insertChildren /> <composite:insertChildren />
</c:when> </c:when>
<c:otherwise> <c:otherwise>
......
...@@ -17,7 +17,7 @@ ...@@ -17,7 +17,7 @@
<composite:implementation> <composite:implementation>
<c:choose> <c:choose>
<c:when test='#{sessionHandler.canWrite(target) }'> <c:when test='#{sessionHandler.canWrite(cc.attrs.target) }'>
<composite:insertChildren /> <composite:insertChildren />
</c:when> </c:when>
<c:otherwise> <c:otherwise>
......
...@@ -16,7 +16,7 @@ ...@@ -16,7 +16,7 @@
<composite:implementation> <composite:implementation>
<tools:canRead target="userManagement" > <tools:canRead target="USER_MANAGEMENT" >
<h:form> <h:form>
<h:dataTable <h:dataTable
border="1" border="1"
...@@ -66,7 +66,7 @@ ...@@ -66,7 +66,7 @@
<h:outputText value="#{user.female}" /> <h:outputText value="#{user.female}" />
</h:column> </h:column>
<tools:canWrite target="userManagement" > <tools:canWrite target="USER_MANAGEMENT" >
<h:column> <h:column>
<f:facet name="header"> <f:facet name="header">
<h:outputText value="Edit" /> <h:outputText value="Edit" />
......
package fi.insomnia.bortal; package fi.insomnia.bortal;
import java.io.IOException; import java.io.IOException;
import javax.servlet.Filter; import javax.servlet.Filter;
import javax.servlet.FilterChain; import javax.servlet.FilterChain;
import javax.servlet.FilterConfig; import javax.servlet.FilterConfig;
...@@ -82,6 +83,5 @@ public class HostnameFilter implements Filter { ...@@ -82,6 +83,5 @@ public class HostnameFilter implements Filter {
} }
return ret; return ret;
} }
} }
...@@ -10,6 +10,7 @@ import javax.faces.bean.ManagedProperty; ...@@ -10,6 +10,7 @@ import javax.faces.bean.ManagedProperty;
import javax.faces.bean.RequestScoped; import javax.faces.bean.RequestScoped;
import fi.insomnia.bortal.beans.TestDataBeanLocal; import fi.insomnia.bortal.beans.TestDataBeanLocal;
import fi.insomnia.bortal.beans.UserBeanLocal;
import fi.insomnia.bortal.handler.SessionHandler; import fi.insomnia.bortal.handler.SessionHandler;
import fi.insomnia.bortal.model.Event; import fi.insomnia.bortal.model.Event;
import fi.insomnia.bortal.model.EventMap; import fi.insomnia.bortal.model.EventMap;
...@@ -25,6 +26,8 @@ public class TestDataView { ...@@ -25,6 +26,8 @@ public class TestDataView {
@EJB @EJB
private TestDataBeanLocal testdatabean; private TestDataBeanLocal testdatabean;
@EJB
private UserBeanLocal userbean;
@ManagedProperty("#{sessionHandler}") @ManagedProperty("#{sessionHandler}")
private SessionHandler sessionhandler; private SessionHandler sessionhandler;
...@@ -57,5 +60,6 @@ public class TestDataView { ...@@ -57,5 +60,6 @@ public class TestDataView {
return null; return null;
} }
} }
...@@ -14,6 +14,7 @@ import org.slf4j.LoggerFactory; ...@@ -14,6 +14,7 @@ import org.slf4j.LoggerFactory;
import fi.insomnia.bortal.beans.SecurityBeanLocal; import fi.insomnia.bortal.beans.SecurityBeanLocal;
import fi.insomnia.bortal.beans.JaasBeanLocal; import fi.insomnia.bortal.beans.JaasBeanLocal;
import fi.insomnia.bortal.beans.UserBeanLocal; import fi.insomnia.bortal.beans.UserBeanLocal;
import fi.insomnia.bortal.enums.Permission;
import fi.insomnia.bortal.exceptions.PermissionDeniedException; import fi.insomnia.bortal.exceptions.PermissionDeniedException;
import fi.insomnia.bortal.handler.SessionHandler; import fi.insomnia.bortal.handler.SessionHandler;
import fi.insomnia.bortal.model.User; import fi.insomnia.bortal.model.User;
...@@ -48,7 +49,7 @@ public class UserView { ...@@ -48,7 +49,7 @@ public class UserView {
} }
public String createUser() { public String createUser() {
if (!getSessionhandler().canWrite("userManagement")) { if (!getSessionhandler().canWrite(Permission.USER_MANAGEMENT.name())) {
// Give message to administration what happened here. // Give message to administration what happened here.
throw new PermissionDeniedException(securitybean, getSessionhandler().getUser(), "User " + getSessionhandler().getUser() + " does not have permission to create user!"); throw new PermissionDeniedException(securitybean, getSessionhandler().getUser(), "User " + getSessionhandler().getUser() + " does not have permission to create user!");
} }
......
Markdown is supported
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!