MenuBean.java 11.3 KB
package fi.insomnia.bortal.beans;

import java.util.List;

import javax.annotation.security.DeclareRoles;
import javax.annotation.security.RolesAllowed;
import javax.ejb.EJB;
import javax.ejb.LocalBean;
import javax.ejb.Stateless;

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

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.MapPermission;
import fi.insomnia.bortal.enums.apps.PollPermission;
import fi.insomnia.bortal.enums.apps.ShopPermission;
import fi.insomnia.bortal.enums.apps.SpecialPermission;
import fi.insomnia.bortal.enums.apps.UserPermission;
import fi.insomnia.bortal.facade.MenuNavigationFacade;
import fi.insomnia.bortal.facade.MenuitemFacade;
import fi.insomnia.bortal.model.LanEvent;
import fi.insomnia.bortal.model.MenuNavigation;

/**
 * Session Bean implementation class Menubean
 */
@Stateless
@LocalBean
@DeclareRoles(SpecialPermission.S_SUPERADMIN)
public class MenuBean implements MenuBeanLocal {

	public MenuBean() {
	}

	@EJB
	private MenuNavigationFacade navifacade;

	@EJB
	private MenuitemFacade menuitemfacade;

	@EJB
	private EventBean eventbean;

	@EJB
	private PermissionBeanLocal permbean;

	@SuppressWarnings("unused")
	private static final Logger logger = LoggerFactory.getLogger(MenuBean.class);

	@RolesAllowed(SpecialPermission.S_SUPERADMIN)
	@Override
	public void flushDefaultmenu()
	{
		navifacade.deleteAllDefaults();
		initializeMenu();
	}

	private synchronized void initializeMenu() {

		LanEvent ev = eventbean.getCurrentEvent();

		MenuNavigation usernavi = new MenuNavigation(ev, "supernavi.user");

		navifacade.create(usernavi);

		MenuNavigation frontTopnavi = usernavi.addPage(null, null);
		frontTopnavi.setKey("topnavi.frontpage");
		frontTopnavi.addPage(menuitemfacade.findOrCreate("/index"), UserPermission.ANYUSER);
		frontTopnavi.addPage(menuitemfacade.findOrCreate("/user/create"), UserPermission.CREATE_NEW);
		frontTopnavi.addPage(menuitemfacade.findOrCreate("/auth/sendResetMail"), UserPermission.LOGIN);
		frontTopnavi.addPage(menuitemfacade.findOrCreate("/user/invite"), UserPermission.INVITE_USERS);
		frontTopnavi.addPage(menuitemfacade.findOrCreate("/permissionDenied"), null).setVisible(false);
		frontTopnavi.addPage(menuitemfacade.findOrCreate("/auth/login"), null).setVisible(false);
		frontTopnavi.addPage(menuitemfacade.findOrCreate("/auth/loginError"), null).setVisible(false);
		frontTopnavi.addPage(menuitemfacade.findOrCreate("/auth/logout"), null).setVisible(false);
		frontTopnavi.addPage(menuitemfacade.findOrCreate("/auth/logoutResponse"), null).setVisible(false);
		frontTopnavi.addPage(menuitemfacade.findOrCreate("/auth/resetPassword"), null).setVisible(false);
		frontTopnavi.addPage(menuitemfacade.findOrCreate("/auth/resetmailSent"), null).setVisible(false);
		frontTopnavi.addPage(menuitemfacade.findOrCreate("/auth/passwordChanged"), null).setVisible(false);
		frontTopnavi.addPage(menuitemfacade.findOrCreate("/auth/notauthorized"), null).setVisible(false);

		MenuNavigation userTopnavi = usernavi.addPage(null, null);
		userTopnavi.setKey("topnavi.user");
		userTopnavi.addPage(menuitemfacade.findOrCreate("/user/edit"), UserPermission.VIEW_SELF).setHeader("submenu.user.userlinks");
		userTopnavi.addPage(menuitemfacade.findOrCreate("/user/changePassword"), UserPermission.VIEW_SELF);
		userTopnavi.addPage(menuitemfacade.findOrCreate("/user/accountEvents"), UserPermission.VIEW_SELF);
		userTopnavi.addPage(menuitemfacade.findOrCreate("/place/myGroups"), UserPermission.VIEW_SELF);
		userTopnavi.addPage(menuitemfacade.findOrCreate("/user/sendPicture"), UserPermission.VIEW_SELF);

		MenuNavigation placemapTopmenu = usernavi.addPage(null, null);
		placemapTopmenu.setKey("topnavi.placemap");
		placemapTopmenu.addPage(menuitemfacade.findOrCreate("/place/placemap"), MapPermission.VIEW);

		// MenuNavigation actionlogTopmenu = usernavi.addPage(null, null);
		// actionlogTopmenu.setKey("topnavi.actionlog");
		// actionlogTopmenu.addPage(menuitemfacade.findOrCreate("/actionlog/messagelist"),
		// ContentPermission.MANAGE_ACTIONLOG);

		MenuNavigation shopTopmenu = usernavi.addPage(null, null);
		shopTopmenu.setKey("topnavi.shop");
		shopTopmenu.addPage(menuitemfacade.findOrCreate("/shop/createBill"), BillPermission.CREATE_BILL);
		shopTopmenu.addPage(menuitemfacade.findOrCreate("/bill/list"), BillPermission.VIEW_OWN);
		shopTopmenu.addPage(menuitemfacade.findOrCreate("/bill/edit"), null).setVisible(false);
		shopTopmenu.addPage(menuitemfacade.findOrCreate("/bill/showBill"), null).setVisible(false);
		shopTopmenu.addPage(menuitemfacade.findOrCreate("/svm/failure"), null).setVisible(false);
		shopTopmenu.addPage(menuitemfacade.findOrCreate("/svm/notification"), null).setVisible(false);
		shopTopmenu.addPage(menuitemfacade.findOrCreate("/svm/pending"), null).setVisible(false);
		shopTopmenu.addPage(menuitemfacade.findOrCreate("/svm/success"), null).setVisible(false);
		shopTopmenu.addPage(menuitemfacade.findOrCreate("/checkout/cancel"), null).setVisible(false);
		shopTopmenu.addPage(menuitemfacade.findOrCreate("/checkout/delayed"), null).setVisible(false);
		shopTopmenu.addPage(menuitemfacade.findOrCreate("/checkout/reject"), null).setVisible(false);
		shopTopmenu.addPage(menuitemfacade.findOrCreate("/checkout/return"), null).setVisible(false);

		MenuNavigation foodwaveTopmenu = usernavi.addPage(null, null);
		foodwaveTopmenu.setKey("topnavi.foodwave");
		foodwaveTopmenu.addPage(menuitemfacade.findOrCreate("/foodwave/list"), ShopPermission.SHOP_FOODWAVE);

		MenuNavigation pollTopmenu = usernavi.addPage(null, null);
		pollTopmenu.setKey("topnavi.poll");
		pollTopmenu.addPage(menuitemfacade.findOrCreate("/poll/index"), PollPermission.ANSWER);

		MenuNavigation compoMenu = usernavi.addPage(null, null);
		compoMenu.setKey("topnavi.compos");
		compoMenu.addPage(menuitemfacade.findOrCreate("/voting/compolist"), CompoPermission.VIEW_COMPOS);
		compoMenu.addPage(menuitemfacade.findOrCreate("/voting/myEntries"), CompoPermission.VIEW_COMPOS);
		compoMenu.addPage(menuitemfacade.findOrCreate("/voting/create"), CompoPermission.MANAGE);
		compoMenu.addPage(menuitemfacade.findOrCreate("/voting/submitEntry"), null).setVisible(false);
		compoMenu.addPage(menuitemfacade.findOrCreate("/voting/details"), null).setVisible(false);

		MenuNavigation adminnavi = new MenuNavigation(ev, "supernavi.admin");
		navifacade.create(adminnavi);

		MenuNavigation adminuser = adminnavi.addPage(null, null);
		adminuser.setKey("topnavi.usermgmt");
		adminuser.addPage(menuitemfacade.findOrCreate("/useradmin/list"), UserPermission.VIEW_ALL).setHeader("submenu.user.manageuserlinks");
		adminuser.addPage(menuitemfacade.findOrCreate("/useradmin/create"), UserPermission.VIEW_ALL);
		adminuser.addPage(menuitemfacade.findOrCreate("/role/list"), UserPermission.READ_ROLES).setHeader("submenu.user.rolelinks");
		adminuser.addPage(menuitemfacade.findOrCreate("/role/create"), UserPermission.WRITE_ROLES);
		adminuser.addPage(menuitemfacade.findOrCreate("/role/edit"), null).setVisible(false);
		adminuser.addPage(menuitemfacade.findOrCreate("/orgrole/list"), UserPermission.READ_ORGROLES);
		adminuser.addPage(menuitemfacade.findOrCreate("/orgrole/create"), UserPermission.WRITE_ORGROLES);
		adminuser.addPage(menuitemfacade.findOrCreate("/useradmin/listCardTemplates"), UserPermission.READ_ROLES);
		adminuser.addPage(menuitemfacade.findOrCreate("/useradmin/createCardTemplate"), UserPermission.WRITE_ROLES);
		adminuser.addPage(menuitemfacade.findOrCreate("/useradmin/editCardTemplate"), null).setVisible(false);
		adminuser.addPage(menuitemfacade.findOrCreate("/shop/shopToUser"), null).setVisible(false);
		adminuser.addPage(menuitemfacade.findOrCreate("/shop/assocToUser"), null).setVisible(false);

		adminuser.addPage(menuitemfacade.findOrCreate("/useradmin/edit"), UserPermission.VIEW_ALL).setVisible(false);
		adminuser.addPage(menuitemfacade.findOrCreate("/useradmin/changePassword"), UserPermission.VIEW_ALL).setVisible(false);
		adminuser.addPage(menuitemfacade.findOrCreate("/useradmin/accountEvents"), UserPermission.VIEW_ALL).setVisible(false);
		adminuser.addPage(menuitemfacade.findOrCreate("/place/adminGroups"), UserPermission.VIEW_ALL).setVisible(false);
		adminuser.addPage(menuitemfacade.findOrCreate("/place/adminInsertToken"), UserPermission.VIEW_ALL).setVisible(false);
		adminuser.addPage(menuitemfacade.findOrCreate("/useradmin/sendPicture"), UserPermission.VIEW_ALL).setVisible(false);
		adminuser.addPage(menuitemfacade.findOrCreate("/useradmin/showTakePicture"), UserPermission.VIEW_ALL).setHeader("submenu.user.other");

		// MenuNavigation initUser = adminnavi.addPage(null, null);
		// initUser.setKey("topnavi.userinit");
		adminuser.addPage(menuitemfacade.findOrCreate("/useradmin/validateUser"), UserPermission.VIEW_ALL);

		MenuNavigation usershop = adminnavi.addPage(null, null);
		usershop.setKey("topnavi.adminshop");
		usershop.addPage(menuitemfacade.findOrCreate("/shop/showReaderEvents"), ShopPermission.SHOP_TO_OTHERS);
		usershop.addPage(menuitemfacade.findOrCreate("/shop/listReaders"), ShopPermission.SHOP_TO_OTHERS);
		usershop.addPage(menuitemfacade.findOrCreate("/shop/editReader"), ShopPermission.SHOP_TO_OTHERS).setVisible(false);

		MenuNavigation billnavi = adminnavi.addPage(null, null);
		billnavi.setKey("topnavi.billing");
		billnavi.addPage(menuitemfacade.findOrCreate("/bill/billSummary"), BillPermission.READ_ALL);
		billnavi.addPage(menuitemfacade.findOrCreate("/bill/listAll"), BillPermission.WRITE_ALL);

		MenuNavigation mapnavi = adminnavi.addPage(null, null);
		mapnavi.setKey("topnavi.maps");
		mapnavi.addPage(menuitemfacade.findOrCreate("/map/list"), MapPermission.MANAGE_MAPS);
		mapnavi.addPage(menuitemfacade.findOrCreate("/map/create"), MapPermission.MANAGE_MAPS);
		mapnavi.addPage(menuitemfacade.findOrCreate("/map/edit"), null).setVisible(false);

		MenuNavigation prodnavi = adminnavi.addPage(null, null);
		prodnavi.setKey("topnavi.products");
		prodnavi.addPage(menuitemfacade.findOrCreate("/product/list"), ShopPermission.LIST_ALL_PRODUCTS);
		prodnavi.addPage(menuitemfacade.findOrCreate("/product/create"), ShopPermission.MANAGE_PRODUCTS);
		prodnavi.addPage(menuitemfacade.findOrCreate("/product/createDiscount"), null).setVisible(false);
		prodnavi.addPage(menuitemfacade.findOrCreate("/product/edit"), null).setVisible(false);

		MenuNavigation contentnavi = adminnavi.addPage(null, null);
		contentnavi.setKey("topnavi.contents");
		contentnavi.addPage(menuitemfacade.findOrCreate("/pages/list"), ContentPermission.MANAGE_PAGES);
		contentnavi.addPage(menuitemfacade.findOrCreate("/pages/create"), ContentPermission.MANAGE_PAGES);
		contentnavi.addPage(menuitemfacade.findOrCreate("/pages/edit"), null).setVisible(false);

		MenuNavigation lognavi = adminnavi.addPage(null, null);
		lognavi.setKey("topnavi.log");
		lognavi.addPage(menuitemfacade.findOrCreate("/actionlog/messagelist"), UserPermission.VIEW_ALL);
		lognavi.addPage(menuitemfacade.findOrCreate("/actionlog/taskview"), UserPermission.VIEW_ALL).setVisible(false);

	}

	@Override
	public MenuNavigation findNavigation(String pagename) {

		return navifacade.find(pagename);

	}

	@Override
	public List<MenuNavigation> getTopmenus() {
		List<MenuNavigation> ret = navifacade.findToplevels();
		if (ret == null || ret.isEmpty())
		{
			initializeMenu();
			navifacade.flush();
			ret = navifacade.findToplevels();
		}
		return ret;

	}

}