Commit 002a3bbc by Juho Salli

CompoPermission ja compoview juttui

1 parent ca494e1c
package fi.insomnia.bortal.beans; package fi.insomnia.bortal.beans;
import java.security.Principal; import java.security.Principal;
import javax.annotation.Resource; import javax.annotation.Resource;
import javax.annotation.security.DeclareRoles; import javax.annotation.security.DeclareRoles;
import javax.ejb.EJB; import javax.ejb.EJB;
import javax.ejb.SessionContext; import javax.ejb.SessionContext;
import javax.ejb.Stateless; import javax.ejb.Stateless;
import javax.resource.spi.IllegalStateException; import javax.resource.spi.IllegalStateException;
import org.slf4j.Logger; import org.slf4j.Logger;
import org.slf4j.LoggerFactory; import org.slf4j.LoggerFactory;
import fi.insomnia.bortal.enums.apps.BillPermission; import fi.insomnia.bortal.enums.apps.BillPermission;
import fi.insomnia.bortal.enums.apps.ContentPermission; import fi.insomnia.bortal.enums.apps.CompoPermission;
import fi.insomnia.bortal.enums.apps.IAppPermission; import fi.insomnia.bortal.enums.apps.ContentPermission;
import fi.insomnia.bortal.enums.apps.LayoutPermission; import fi.insomnia.bortal.enums.apps.IAppPermission;
import fi.insomnia.bortal.enums.apps.MapPermission; import fi.insomnia.bortal.enums.apps.LayoutPermission;
import fi.insomnia.bortal.enums.apps.PollPermission; import fi.insomnia.bortal.enums.apps.MapPermission;
import fi.insomnia.bortal.enums.apps.ShopPermission; import fi.insomnia.bortal.enums.apps.PollPermission;
import fi.insomnia.bortal.enums.apps.SpecialPermission; import fi.insomnia.bortal.enums.apps.ShopPermission;
import fi.insomnia.bortal.enums.apps.TerminalPermission; import fi.insomnia.bortal.enums.apps.SpecialPermission;
import fi.insomnia.bortal.enums.apps.UserPermission; import fi.insomnia.bortal.enums.apps.TerminalPermission;
import fi.insomnia.bortal.facade.UserFacade; import fi.insomnia.bortal.enums.apps.UserPermission;
import fi.insomnia.bortal.model.User; import fi.insomnia.bortal.facade.UserFacade;
import fi.insomnia.bortal.model.User;
@Stateless
@DeclareRoles({ @Stateless
UserPermission.S_CREATE_NEW, @DeclareRoles({
UserPermission.S_LOGIN, UserPermission.S_CREATE_NEW,
UserPermission.S_LOGOUT, UserPermission.S_LOGIN,
UserPermission.S_MODIFY, UserPermission.S_LOGOUT,
UserPermission.S_MODIFY_ACCOUNTEVENTS, UserPermission.S_MODIFY,
UserPermission.S_VIEW_ACCOUNTEVENTS, UserPermission.S_MODIFY_ACCOUNTEVENTS,
UserPermission.S_VIEW_ALL, UserPermission.S_VIEW_ACCOUNTEVENTS,
UserPermission.S_VIEW_SELF, UserPermission.S_VIEW_ALL,
UserPermission.S_WRITE_ROLES, UserPermission.S_VIEW_SELF,
UserPermission.S_READ_ROLES, UserPermission.S_WRITE_ROLES,
UserPermission.S_ANYUSER, UserPermission.S_READ_ROLES,
UserPermission.S_MANAGE_HTTP_SESSION, UserPermission.S_ANYUSER,
UserPermission.S_INVITE_USERS, UserPermission.S_MANAGE_HTTP_SESSION,
UserPermission.S_INVITE_USERS,
MapPermission.S_VIEW,
MapPermission.S_MANAGE_MAPS, MapPermission.S_VIEW,
MapPermission.S_MANAGE_OTHERS, MapPermission.S_MANAGE_MAPS,
MapPermission.S_BUY_PLACES, MapPermission.S_MANAGE_OTHERS,
MapPermission.S_BUY_PLACES,
ShopPermission.S_LIST_ALL_PRODUCTS,
ShopPermission.S_LIST_USERPRODUCTS, ShopPermission.S_LIST_ALL_PRODUCTS,
ShopPermission.S_SHOP_TO_OTHERS, ShopPermission.S_LIST_USERPRODUCTS,
ShopPermission.S_MANAGE_PRODUCTS, ShopPermission.S_SHOP_TO_OTHERS,
ShopPermission.S_SHOP_PRODUCTS, ShopPermission.S_MANAGE_PRODUCTS,
ShopPermission.S_SHOP_PRODUCTS,
BillPermission.S_CREATE_BILL,
BillPermission.S_READ_ALL, BillPermission.S_CREATE_BILL,
BillPermission.S_WRITE_ALL, BillPermission.S_READ_ALL,
BillPermission.S_VIEW_OWN, BillPermission.S_WRITE_ALL,
BillPermission.S_VIEW_OWN,
ContentPermission.S_MANAGE_NEWS,
ContentPermission.S_MANAGE_PAGES, ContentPermission.S_MANAGE_NEWS,
ContentPermission.S_MANAGE_ACTIONLOG, ContentPermission.S_MANAGE_PAGES,
ContentPermission.S_MANAGE_ACTIONLOG,
PollPermission.S_ANSWER,
PollPermission.S_VIEW_RESULTS, PollPermission.S_ANSWER,
PollPermission.S_CREATE, PollPermission.S_VIEW_RESULTS,
PollPermission.S_CREATE,
SpecialPermission.S_SUPERADMIN,
SpecialPermission.S_USER, SpecialPermission.S_SUPERADMIN,
SpecialPermission.S_ANONYMOUS, SpecialPermission.S_USER,
SpecialPermission.S_ANONYMOUS,
TerminalPermission.S_TERMINAL,
TerminalPermission.S_CASHIER_TERMINAL, TerminalPermission.S_TERMINAL,
TerminalPermission.S_CUSTOMER_TERMINAL, TerminalPermission.S_CASHIER_TERMINAL,
TerminalPermission.S_SELFHELP_TERMINAL, TerminalPermission.S_CUSTOMER_TERMINAL,
TerminalPermission.S_SELFHELP_TERMINAL,
LayoutPermission.S_MANAGE_MENU,
LayoutPermission.S_MANAGE_MENU,
})
public class PermissionBean implements PermissionBeanLocal { CompoPermission.S_MANAGE,
CompoPermission.S_VOTE,
private static final Logger logger = LoggerFactory.getLogger(PermissionBean.class); CompoPermission.S_SUBMIT_ENTRY,
CompoPermission.S_VIEW_COMPOS,
@Resource
private SessionContext context; })
public class PermissionBean implements PermissionBeanLocal {
@EJB
private LoggingBeanLocal loggingbean; private static final Logger logger = LoggerFactory.getLogger(PermissionBean.class);
@EJB @Resource
private UserFacade userfacade; private SessionContext context;
// @EJB
// @Override private LoggingBeanLocal loggingbean;
// public boolean hasPermission(String perm) {
// return context.isCallerInRole(perm); @EJB
// } private UserFacade userfacade;
@Override //
public boolean hasPermission(IAppPermission perm) { // @Override
// public boolean hasPermission(String perm) {
if (perm == null) // return context.isCallerInRole(perm);
{ // }
return false;
} @Override
return context.isCallerInRole(perm.getFullName()); public boolean hasPermission(IAppPermission perm) {
} if (perm == null)
{
// @Override return false;
// public boolean fatalPermission(IAppPermission permission, Object... }
// failmessage) { return context.isCallerInRole(perm.getFullName());
// boolean ret = hasPermission(permission);
// if (!ret) { }
// StringBuilder message = new
// StringBuilder().append(" permission: ").append(permission); // @Override
// if (failmessage == null || failmessage.length == 0) { // public boolean fatalPermission(IAppPermission permission, Object...
// message.append(" MSG: SessionHandler mbean permission exception: Permission: ") // failmessage) {
// .append(permission); // boolean ret = hasPermission(permission);
// } else { // if (!ret) {
// for (Object part : failmessage) { // StringBuilder message = new
// message.append(part == null ? "NULL" : part.toString()); // StringBuilder().append(" permission: ").append(permission);
// } // if (failmessage == null || failmessage.length == 0) {
// } // message.append(" MSG: SessionHandler mbean permission exception: Permission: ")
// // throw new SecurityException("Foobar"); // .append(permission);
// // } else {
// throw new PermissionDeniedException(loggingbean, getCurrentUser(), // for (Object part : failmessage) {
// message.toString()); // message.append(part == null ? "NULL" : part.toString());
// } // }
// return true; // }
// } // // throw new SecurityException("Foobar");
// //
// @Override // throw new PermissionDeniedException(loggingbean, getCurrentUser(),
// public void fatalNotLoggedIn() throws PermissionDeniedException { // message.toString());
// if (!isLoggedIn()) { // }
// throw new PermissionDeniedException(loggingbean, getCurrentUser(), // return true;
// "User is not logged in!"); // }
// } //
// } // @Override
// public void fatalNotLoggedIn() throws PermissionDeniedException {
@Override // if (!isLoggedIn()) {
public boolean isCurrentUser(User user) { // throw new PermissionDeniedException(loggingbean, getCurrentUser(),
return (context.getCallerPrincipal() == null || user == null) ? false : context.getCallerPrincipal().getName().equals(user.getLogin()); // "User is not logged in!");
} // }
// }
@Override
public boolean isLoggedIn() { @Override
public boolean isCurrentUser(User user) {
return !getAnonUser().equals(getCurrentUser()) || getCurrentUser().isSuperadmin(); return (context.getCallerPrincipal() == null || user == null) ? false : context.getCallerPrincipal().getName().equals(user.getLogin());
} }
@Override @Override
public User getCurrentUser() { public boolean isLoggedIn() {
Principal principal = context.getCallerPrincipal();
return !getAnonUser().equals(getCurrentUser()) || getCurrentUser().isSuperadmin();
User ret = userfacade.findByLogin(principal.getName()); }
if (ret == null) {
ret = getAnonUser(); @Override
} public User getCurrentUser() {
return ret; Principal principal = context.getCallerPrincipal();
}
User ret = userfacade.findByLogin(principal.getName());
/** if (ret == null) {
* Makes sure default user and public role exist and the user is member of ret = getAnonUser();
* the role. }
*/ return ret;
@Override }
public User getAnonUser() {
User defaultUser = userfacade.findByLogin(User.ANONYMOUS_LOGINNAME); /**
if (defaultUser == null) { * Makes sure default user and public role exist and the user is member of
defaultUser = new User(); * the role.
defaultUser.setLogin(User.ANONYMOUS_LOGINNAME); */
defaultUser.setNick(User.ANONYMOUS_LOGINNAME); @Override
userfacade.create(defaultUser); public User getAnonUser() {
User defaultUser = userfacade.findByLogin(User.ANONYMOUS_LOGINNAME);
// defaultUser.setSuperadmin(true); if (defaultUser == null) {
} defaultUser = new User();
return defaultUser; defaultUser.setLogin(User.ANONYMOUS_LOGINNAME);
} defaultUser.setNick(User.ANONYMOUS_LOGINNAME);
userfacade.create(defaultUser);
public String getPrincipal() {
// defaultUser.setSuperadmin(true);
Principal principal = context.getCallerPrincipal(); }
logger.debug("Principal: {}", principal); return defaultUser;
}
String principalName = principal.getName();
logger.debug("Principal is {}", principalName); public String getPrincipal() {
return principalName; Principal principal = context.getCallerPrincipal();
} logger.debug("Principal: {}", principal);
@Override String principalName = principal.getName();
public String getCommonName() throws IllegalStateException { logger.debug("Principal is {}", principalName);
String dn = context.getCallerPrincipal().getName(); return principalName;
String[] parts = dn.split(","); }
for (String part : parts) { @Override
if (part.trim().toUpperCase().startsWith("CN=")) { public String getCommonName() throws IllegalStateException {
String cn = part.substring("CN=".length());
return cn; String dn = context.getCallerPrincipal().getName();
} String[] parts = dn.split(",");
}
for (String part : parts) {
throw new IllegalStateException("Current security principal has no CN"); if (part.trim().toUpperCase().startsWith("CN=")) {
} String cn = part.substring("CN=".length());
} return cn;
}
}
throw new IllegalStateException("Current security principal has no CN");
}
}
package fi.insomnia.bortal.enums; package fi.insomnia.bortal.enums;
import fi.insomnia.bortal.enums.apps.BillPermission; import fi.insomnia.bortal.enums.apps.BillPermission;
import fi.insomnia.bortal.enums.apps.CompoPermission;
import fi.insomnia.bortal.enums.apps.ContentPermission; import fi.insomnia.bortal.enums.apps.ContentPermission;
import fi.insomnia.bortal.enums.apps.IAppPermission; import fi.insomnia.bortal.enums.apps.IAppPermission;
import fi.insomnia.bortal.enums.apps.LayoutPermission; import fi.insomnia.bortal.enums.apps.LayoutPermission;
...@@ -21,6 +22,7 @@ public enum BortalApplication { ...@@ -21,6 +22,7 @@ public enum BortalApplication {
TERMINAL("Sales and self help terminal roles", TerminalPermission.class), TERMINAL("Sales and self help terminal roles", TerminalPermission.class),
LAYOUT("Layoutstuff", LayoutPermission.class), LAYOUT("Layoutstuff", LayoutPermission.class),
SALESPOINT("Managing salespoints", SalespointPermission.class), SALESPOINT("Managing salespoints", SalespointPermission.class),
COMPO("Managing compos", CompoPermission.class),
; ;
......
package fi.insomnia.bortal.enums.apps;
import fi.insomnia.bortal.enums.BortalApplication;
public enum CompoPermission implements IAppPermission {
MANAGE("Manage compos"),
VOTE("Vote"),
SUBMIT_ENTRY("Submit entry"),
VIEW_COMPOS("View compos"),
;
public static final String S_MANAGE = "COMPO/MANAGE";
public static final String S_VOTE = "COMPO/VOTE";
public static final String S_SUBMIT_ENTRY = "COMPO/SUBMIT_ENTRY";
public static final String S_VIEW_COMPOS = "COMPO/VIEW_COMPOS";
private final String description;
private final String fullName;
private CompoPermission(String desc) {
description = desc;
fullName = new StringBuilder().append(getParent().toString()).append(DELIMITER).append(toString()).toString();
}
@Override
public BortalApplication getParent() {
return BortalApplication.COMPO;
}
@Override
public String getDescription() {
return this.description;
}
@Override
public String getFullName() {
return fullName;
}
}
...@@ -24,7 +24,9 @@ public class VotingCompoListView extends GenericCDIView { ...@@ -24,7 +24,9 @@ public class VotingCompoListView extends GenericCDIView {
@EJB @EJB
private VotingBeanLocal votbean; private VotingBeanLocal votbean;
boolean curEntries = false;
boolean maxParts = false;
public List<Compo> getCompos() { public List<Compo> getCompos() {
return votbean.getCompoList(); return votbean.getCompoList();
......
Markdown is supported
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!