Portálová navigace v aplikaci.

multitenant
Josef Rokos 11 years ago
parent 33309a109b
commit 8939b24ff1

@ -33,7 +33,6 @@ public abstract class BaseDaoJPA<T> implements BaseDao<T> {
@SuppressWarnings("unchecked")
@Override
public T getById(int id) {
sessionFactory.getCurrentSession().enableFetchProfile("fetch-all");
Query q = sessionFactory.getCurrentSession().createQuery("from " + getEntityName() + " e where ID = :id");
q.setInteger("id", id);
return (T) q.uniqueResult();

@ -0,0 +1,41 @@
package info.bukova.isspst.ui;
import org.zkoss.bind.annotation.Init;
import org.zkoss.zk.ui.Executions;
public class NavigationVM {
private String contextPath;
private String moduleUrl;
@Init
public void init() {
contextPath = Executions.getCurrent().getContextPath();
moduleUrl = Executions.getCurrent().getDesktop().getRequestPath();
}
public String getContextPath() {
return contextPath;
}
public String getModuleUrl() {
return moduleUrl;
}
public boolean isOrders() {
return moduleUrl.contains("orders");
}
public boolean isSettings() {
return moduleUrl.contains("settings");
}
public boolean isAdmin() {
return moduleUrl.contains("admin");
}
public boolean isUser() {
return moduleUrl.contains("passwd");
}
}

@ -0,0 +1,45 @@
package info.bukova.isspst.ui;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collection;
import java.util.Collections;
import org.springframework.security.core.Authentication;
import org.springframework.security.core.GrantedAuthority;
import org.springframework.security.core.context.SecurityContextHolder;
public class SecurityHelper {
public static boolean isAllGranted(String authorities) {
if (null == authorities || "".equals(authorities)) {
return false;
}
final Collection<String> granted = getPrincipalAuthorities();
boolean isAllGranted = granted.containsAll(parseAuthorities(authorities));
return isAllGranted;
}
private static Collection<String> parseAuthorities(String authorities) {
String[] auth = authorities.split(",");
return Arrays.asList(auth);
}
private static Collection<String> getPrincipalAuthorities() {
Authentication currentUser = SecurityContextHolder.getContext().getAuthentication();
if (null == currentUser) {
return Collections.emptyList();
}
if ((null == currentUser.getAuthorities()) || (currentUser.getAuthorities().isEmpty())) {
return Collections.emptyList();
}
Collection<String> granted = new ArrayList<String>();
for (GrantedAuthority a : currentUser.getAuthorities()) {
granted.add(a.getAuthority());
}
return granted;
}
}

@ -1,18 +0,0 @@
package info.bukova.isspst.ui;
import org.zkoss.bind.annotation.Command;
import org.zkoss.zk.ui.select.annotation.WireVariable;
import info.bukova.isspst.services.UserService;
public class TestVM {
@WireVariable
private UserService userService;
@Command
public void test() {
userService.test();
}
}

@ -0,0 +1,16 @@
<taglib>
<uri>http://www.zkoss.org/demo/integration/security</uri>
<description>
Methods and actions for ZK + Spring Security
</description>
<function>
<name>isAllGranted</name>
<function-class>info.bukova.isspst.ui.SecurityHelper</function-class>
<function-signature> boolean isAllGranted(java.lang.String authorities)
</function-signature>
<description>
Return true if the authenticated principal is granted authorities of ALL the specified roles.
</description>
</function>
</taglib>

@ -1,10 +0,0 @@
<?page title="Okno" contentType="text/html;charset=UTF-8"?>
<zk>
<?variable-resolver class="org.zkoss.zkplus.spring.DelegatingVariableResolver"?>
<window title="Okno" border="normal" apply="org.zkoss.bind.BindComposer"
viewModel="@id('vm') @init('info.bukova.isspst.ui.TestVM')">
<label value="Pokus pokus"/>
<button label="metoda" onClick="@command('test')"/>
</window>
<include src="../app/testApp.zul"/>
</zk>

@ -0,0 +1,10 @@
<?page title="Uživatelé" contentType="text/html;charset=UTF-8"?>
<zk>
<zscript>
String gridZul = "users.zul";
</zscript>
<include src="../../app/template.zhtml"/>
</zk>

@ -1,11 +0,0 @@
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<title>Objednávky</title>
</head>
<body>
aplikace
</body>
</html>

@ -0,0 +1,10 @@
<?page title="Informace" contentType="text/html;charset=UTF-8"?>
<zk>
<zscript>
String gridZul = "info.zul";
</zscript>
<include src="template.zhtml"/>
</zk>

@ -0,0 +1,6 @@
<?page title="Informace" contentType="text/html;charset=UTF-8"?>
<zk>
<window title="Informace" border="normal">
New Content Here!
</window>
</zk>

@ -0,0 +1,45 @@
<?page title="menu" contentType="text/html;charset=UTF-8"?>
<zk xmlns:n="native">
<?variable-resolver class="org.zkoss.zkplus.spring.DelegatingVariableResolver"?>
<?taglib uri="/WEB-INF/security.tld" prefix="sec"?>
<tabbox mold="accordion" apply="org.zkoss.bind.BindComposer"
viewModel="@id('vm') @init('info.bukova.isspst.ui.NavigationVM')">
<tabs>
<tab id="orders" label="Objednávky" selected="@load(vm.orders)"/>
<tab id="settings" label="Nastavení" selected="@load(vm.settings)"/>
<tab id="admin" label="Administrace" selected="@load(vm.admin)"/>
<tab id="user" label="Uživatel" selected="@load(vm.user)"/>
</tabs>
<tabpanels hflex="1">
<tabpanel>
<menubar orient="vertical">
<menuitem label="Moje" href="/orders/my" width="120px"/>
<menuitem label="Ke schválení" href="/orders/approve"/>
</menubar>
</tabpanel>
<tabpanel>
<menubar orient="vertical">
<menuitem label="E-maily" width="120px"/>
<menuitem label="Další"/>
<menuitem label="Položka"/>
</menubar>
</tabpanel>
<tabpanel>
<menubar orient="vertical">
<menuitem label="Uživatelé" href="/admin/users" width="120px"/>
<menuitem label="Střediska" href="/admin/users" disabled="${not sec:isAllGranted('ROLE_ADMIN')}"/>
<menuitem label="Budovy" href="/admin/users"/>
<menuitem label="Místnosti" href="/admin/users"/>
</menubar>
</tabpanel>
<tabpanel>
<menubar orient="vertical">
<menuitem label="Změnit heslo" width="120px"/>
<menuitem label="Odhlásit" href="/j_spring_security_logout"/>
</menubar>
</tabpanel>
</tabpanels>
</tabbox>
</zk>

@ -0,0 +1,50 @@
body {
font-family: sans-serif;
}
#header{
width: auto;
height:70px;
border: 1px solid #ccc;
padding:10px;
}
#leftcolumn{
width:140px;
/* margin: 20px 20px 20px 0px;*/
padding:10px;
float: left;
/* border: 1px solid #ccc;*/
}
#navbar{
border: 1px solid #ccc;
}
#maincolumn{
padding:10px;
margin: 0px 0px 0px 160px;
border: 1px solid #ccc;
}
#footer{
clear:both;
width:auto;
border: 1px solid #ccc;
}
/*
a:link,a:visited {
font-size: 12px;
color: #0000A0;
background-color: #FFFFFF;
text-decoration: none;
target-new: none;
}
a:hover {
font-size: 12px;
color: #0000A0;
background-color: #a3d3f8;
text-decoration: none;
target-new: none;
}*/

@ -0,0 +1,21 @@
<?xml version="1.0" encoding="UTF-8" ?>
<html xmlns="native" xmlns:u="zul" xmlns:zk="zk">
<u:style src="/app/page.css"/>
<div id="header">
hlavicka
</div>
<div id="leftcolumn">
<u:include src="/app/navigation.zul"/>
</div>
<div id="maincolumn">
<u:include src="${gridZul}"/>
</div>
<div id="footer">Footer
</div>
</html>

@ -1,6 +0,0 @@
<?page title="Test" contentType="text/html;charset=UTF-8"?>
<zk>
<window title="Test" border="normal">
New Content Here!
</window>
</zk>

@ -0,0 +1,8 @@
<?page title="index" contentType="text/html;charset=UTF-8"?>
<zk>
<zscript>
Executions.getCurrent().sendRedirect("app");
</zscript>
</zk>
Loading…
Cancel
Save