diff --git a/web/src/main/java/de/hsadmin/rpc/HSAdminSession.java b/web/src/main/java/de/hsadmin/rpc/HSAdminSession.java index 7323095..372d47c 100644 --- a/web/src/main/java/de/hsadmin/rpc/HSAdminSession.java +++ b/web/src/main/java/de/hsadmin/rpc/HSAdminSession.java @@ -15,4 +15,6 @@ public interface HSAdminSession { public I18N getI18N(); + public String getRole() throws RpcException; + } diff --git a/web/src/main/java/de/hsadmin/web/CustomerPanel.java b/web/src/main/java/de/hsadmin/web/CustomerPanel.java index 5b356a5..0b3e906 100644 --- a/web/src/main/java/de/hsadmin/web/CustomerPanel.java +++ b/web/src/main/java/de/hsadmin/web/CustomerPanel.java @@ -7,6 +7,7 @@ import com.vaadin.ui.TabSheet; import com.vaadin.ui.TabSheet.SelectedTabChangeEvent; import com.vaadin.ui.TabSheet.SelectedTabChangeListener; +import de.hsadmin.login.Role; import de.hsadmin.rpc.HSAdminSession; import de.hsadmin.rpc.RpcException; @@ -30,30 +31,44 @@ public class CustomerPanel extends CustomComponent implements IHSPanel, Selected public TabSheet createTabs(Object itemId) throws RpcException { final I18N i18n = session.getI18N(); + final String role = session.getRole(); + final boolean isHostmasterSession = Role.SYSTEM.name().equals(role); + final TabSheet tabsheet = new TabSheet(); tabsheet.setSizeFull(); tabsheet.addSelectedTabChangeListener(this); tabsheet.addSelectedTabChangeListener(this); tabsheet.addTab(new GenericForm("customer", session, itemId, "name"), i18n.getText("customer")); - final HSTab usersTab = new HSTab("contact", session, "customer", itemId, "email"); - usersTab.fillTable(); - tabsheet.addTab(usersTab, i18n.getText("contact")); + final HSTab contactsTab = new HSTab("contact", session, "customer", itemId, "email"); + contactsTab.fillTable(); + contactsTab.getPanelToolbar().setCreateEnabled(isHostmasterSession); + contactsTab.getPanelToolbar().setUpdateEnabled(false); + contactsTab.getPanelToolbar().setDeleteEnabled(false); + tabsheet.addTab(contactsTab, i18n.getText("contact")); - final HSTab aliasTab = new HSTab("mandat", session, "customer", itemId, "mandatRef"); - tabsheet.addTab(aliasTab, i18n.getText("mandat")); + final HSTab mandatTab = new HSTab("mandat", session, "customer", itemId, "mandatRef"); + mandatTab.getPanelToolbar().setCreateEnabled(isHostmasterSession); + mandatTab.getPanelToolbar().setUpdateEnabled(false); + mandatTab.getPanelToolbar().setDeleteEnabled(false); + tabsheet.addTab(mandatTab, i18n.getText("mandat")); - final HSTab assetsTab = new HSTab("memberShare", session, "customer", itemId, "id"); + final HSTab sharesTab = new HSTab("memberShare", session, "customer", itemId, "id"); + sharesTab.getPanelToolbar().setCreateEnabled(isHostmasterSession); + sharesTab.getPanelToolbar().setUpdateEnabled(false); + sharesTab.getPanelToolbar().setDeleteEnabled(false); + tabsheet.addTab(sharesTab, i18n.getText("memberShare")); + + final HSTab assetsTab = new HSTab("memberAsset", session, "customer", itemId, "id"); + assetsTab.getPanelToolbar().setCreateEnabled(isHostmasterSession); assetsTab.getPanelToolbar().setUpdateEnabled(false); assetsTab.getPanelToolbar().setDeleteEnabled(false); - tabsheet.addTab(assetsTab, i18n.getText("memberShare")); - - final HSTab assetsTab1 = new HSTab("memberAsset", session, "customer", itemId, "id"); - assetsTab1.getPanelToolbar().setUpdateEnabled(false); - assetsTab1.getPanelToolbar().setDeleteEnabled(false); - tabsheet.addTab(assetsTab1, i18n.getText("memberAsset")); + tabsheet.addTab(assetsTab, i18n.getText("memberAsset")); final HSTab pacTab = new HSTab("pac", session, "customer", itemId, "name"); + pacTab.getPanelToolbar().setCreateEnabled(isHostmasterSession); + pacTab.getPanelToolbar().setUpdateEnabled(false); + pacTab.getPanelToolbar().setDeleteEnabled(false); tabsheet.addTab(pacTab, i18n.getText("pac")); return tabsheet; } diff --git a/web/src/main/java/de/hsadmin/web/EntryPointsSelector.java b/web/src/main/java/de/hsadmin/web/EntryPointsSelector.java index c7b6f35..f30693a 100644 --- a/web/src/main/java/de/hsadmin/web/EntryPointsSelector.java +++ b/web/src/main/java/de/hsadmin/web/EntryPointsSelector.java @@ -1,11 +1,5 @@ package de.hsadmin.web; -import java.util.HashMap; -import java.util.List; -import java.util.Map; - -import org.apache.xmlrpc.XmlRpcException; - import com.vaadin.event.ItemClickEvent; import com.vaadin.event.ItemClickEvent.ItemClickListener; import com.vaadin.ui.Accordion; @@ -16,9 +10,6 @@ import com.vaadin.ui.TabSheet.SelectedTabChangeEvent; import com.vaadin.ui.TabSheet.SelectedTabChangeListener; import com.vaadin.ui.Table; -import de.hsadmin.login.Role; -import de.hsadmin.model.IRemote; -import de.hsadmin.model.TicketService; import de.hsadmin.rpc.RpcException; public class EntryPointsSelector extends CustomComponent implements ItemClickListener, SelectedTabChangeListener { @@ -42,7 +33,7 @@ public class EntryPointsSelector extends CustomComponent implements ItemClickLis } private void createTabs() throws RpcException { - final String role = getRole(); + final String role = mainWindow.getRole(); final AbstractEntryPointsFactory entryPointsFactory = FactoryProducer.getEntryPointsFactory(mainWindow, "default"); int tabCount = 0; for(String tabName : entryPointsFactory.getEntryPointNames(role)) { @@ -58,34 +49,6 @@ public class EntryPointsSelector extends CustomComponent implements ItemClickLis } } - public String getRole() throws RpcException { - final IRemote rolesProxy = mainWindow.getModulesManager().proxy("role"); - final String user = mainWindow.getUser(); - final TicketService ticketService = mainWindow.getTicketService(); - final String grantingTicket = mainWindow.getGrantingTicket(); - final String serviceTicket = ticketService.getServiceTicket(grantingTicket); - try { - final List> list = rolesProxy.search(user, serviceTicket, new HashMap()); - final String remoteRole = (String) list.get(0).get("role"); - return fixRole(remoteRole); - } catch (XmlRpcException e) { - throw new RpcException(e); - } - } - - private String fixRole(String remoteRole) { - if ("HOSTMASTER".equals(remoteRole)) { - return Role.SYSTEM.name(); - } - if ("PAC_ADMIN_DW".equals(remoteRole)) { - return Role.PACKET.name(); - } - if ("DOM_ADMIN".equals(remoteRole)) { - return Role.DOMAIN.name(); - } - return remoteRole; - } - @Override public void itemClick(ItemClickEvent event) { Table table = (Table) event.getSource(); diff --git a/web/src/main/java/de/hsadmin/web/MainWindow.java b/web/src/main/java/de/hsadmin/web/MainWindow.java index c7a0fa7..620f03a 100644 --- a/web/src/main/java/de/hsadmin/web/MainWindow.java +++ b/web/src/main/java/de/hsadmin/web/MainWindow.java @@ -17,6 +17,8 @@ import com.vaadin.ui.VerticalLayout; import de.hsadmin.common.config.Config; import de.hsadmin.common.error.TechnicalException; +import de.hsadmin.login.Role; +import de.hsadmin.model.IRemote; import de.hsadmin.model.TicketService; import de.hsadmin.rpc.HSAdminSession; import de.hsadmin.rpc.ModulesManager; @@ -134,4 +136,35 @@ public class MainWindow extends CustomComponent implements HSAdminSession { public I18N getI18N() { return i18n; } + + @Override + public String getRole() throws RpcException { + final IRemote rolesProxy = getModulesManager().proxy("role"); + final String user = getUser(); + final TicketService ticketService = getTicketService(); + final String grantingTicket = getGrantingTicket(); + final String serviceTicket = ticketService.getServiceTicket(grantingTicket); + try { + final List> list = rolesProxy.search(user, serviceTicket, new HashMap()); + final String remoteRole = (String) list.get(0).get("role"); + return fixRole(remoteRole); + } catch (XmlRpcException e) { + throw new RpcException(e); + } + } + + private String fixRole(String remoteRole) { + if ("HOSTMASTER".equals(remoteRole)) { + return Role.SYSTEM.name(); + } + if ("PAC_ADMIN_DW".equals(remoteRole)) { + return Role.PACKET.name(); + } + if ("DOM_ADMIN".equals(remoteRole)) { + return Role.DOMAIN.name(); + } + return remoteRole; + } + + } diff --git a/web/src/main/java/de/hsadmin/web/PanelToolbar.java b/web/src/main/java/de/hsadmin/web/PanelToolbar.java index 77e2fb4..a379a60 100644 --- a/web/src/main/java/de/hsadmin/web/PanelToolbar.java +++ b/web/src/main/java/de/hsadmin/web/PanelToolbar.java @@ -126,6 +126,10 @@ public class PanelToolbar extends HorizontalLayout implements ClickListener { } } + public void setCreateEnabled(boolean createEnabled) { + newBtn.setEnabled(createEnabled); + } + public void setUpdateEnabled(boolean updateEnabled) { editBtn.setEnabled(updateEnabled); }