HSAdmin Backend Domains, E-Mail, Datenbanken
Peter Hormanns
2012-10-30 05b105028c9ca83870f4623c0bd93de0d8415dc7
runAs Feature
11 files modified
124 ■■■■ changed files
hsarweb/conf/WEB-INF/web.xml 11 ●●●● patch | view | raw | blame | history
hsarweb/src/de/hsadmin/web/AbstractModule.java 57 ●●●●● patch | view | raw | blame | history
hsarweb/src/de/hsadmin/web/DatabaseModule.java 2 ●●● patch | view | raw | blame | history
hsarweb/src/de/hsadmin/web/DatabaseUserModule.java 2 ●●● patch | view | raw | blame | history
hsarweb/src/de/hsadmin/web/DomainModule.java 2 ●●● patch | view | raw | blame | history
hsarweb/src/de/hsadmin/web/EMailAddressModule.java 2 ●●● patch | view | raw | blame | history
hsarweb/src/de/hsadmin/web/EMailAliasModule.java 2 ●●● patch | view | raw | blame | history
hsarweb/src/de/hsadmin/web/HomeModule.java 2 ●●● patch | view | raw | blame | history
hsarweb/src/de/hsadmin/web/MainApplication.java 38 ●●●● patch | view | raw | blame | history
hsarweb/src/de/hsadmin/web/Remote.java 4 ●●●● patch | view | raw | blame | history
hsarweb/src/de/hsadmin/web/UnixUserModule.java 2 ●●● patch | view | raw | blame | history
hsarweb/conf/WEB-INF/web.xml
@@ -57,6 +57,7 @@
        </init-param>
    </filter>
    
    <filter-mapping>
        <filter-name>CAS Validation Filter</filter-name>
        <url-pattern>/*</url-pattern>
@@ -66,7 +67,7 @@
        <filter-name>CAS Authentication Filter</filter-name>
        <url-pattern>/*</url-pattern>
    </filter-mapping>
    <servlet>
        <servlet-name>Logout Servlet</servlet-name>
        <servlet-class>de.hsadmin.logout.LogoutServlet</servlet-class>
@@ -93,11 +94,15 @@
    
    <servlet-mapping>
        <servlet-name>HSAdmin Web</servlet-name>
        <url-pattern>/*</url-pattern>
        <url-pattern>/MainApplication/*</url-pattern>
    </servlet-mapping>
    <servlet-mapping>
        <servlet-name>HSAdmin Web</servlet-name>
        <url-pattern>/VAADIN/*</url-pattern>
    </servlet-mapping>
    
    <welcome-file-list>
        <welcome-file>index.html</welcome-file>
        <welcome-file>index.jsp</welcome-file>
    </welcome-file-list>
</web-app>
hsarweb/src/de/hsadmin/web/AbstractModule.java
@@ -4,12 +4,15 @@
import java.util.HashMap;
import java.util.Map;
import com.vaadin.data.Property;
import com.vaadin.data.Property.ValueChangeEvent;
import com.vaadin.terminal.Sizeable;
import com.vaadin.terminal.ThemeResource;
import com.vaadin.ui.Button;
import com.vaadin.ui.Component;
import com.vaadin.ui.Form;
import com.vaadin.ui.HorizontalLayout;
import com.vaadin.ui.Select;
import com.vaadin.ui.VerticalLayout;
import com.vaadin.ui.Window;
import com.vaadin.ui.Button.ClickEvent;
@@ -28,23 +31,73 @@
    private VerticalLayout layout;
    private Component component;
    private ComponentFactory componentFactory;
    private Select selRunAs;
    public Component getComponent() {
        return layout;
    }
    public void reload() throws HsarwebException {
        if (selRunAs != null) {
            selRunAs.select(application.getRunAs());
            selRunAs.setScrollToSelectedItem(true);
        }
        componentFactory.loadData();
    }
    private void initLayout() {
    private void initLayout()  throws HsarwebException {
        layout = new VerticalLayout();
        layout.setSizeFull();
        final Module thisModule = this;
        final ModuleConfig moduleConfig = getModuleConfig();
        final LocaleConfig localeConfig = application.getLocaleConfig();
        if (this instanceof SearchAble || this instanceof InsertAble) {
        if (this instanceof SearchAble || this instanceof InsertAble ||
                !("USER".equals(application.getLoginUserRole()) || "NONE".equals(application.getLoginUserRole()))) {
            HorizontalLayout toolbar = new HorizontalLayout();
            if (!("USER".equals(application.getLoginUserRole()) || "NONE".equals(application.getLoginUserRole()))) {
                selRunAs = new Select();
                selRunAs.setWidth(100.0f, Sizeable.UNITS_PIXELS);
                selRunAs.setImmediate(true);
                selRunAs.setNewItemsAllowed(false);
                selRunAs.setNullSelectionAllowed(false);
                if (!application.getLoginUserRole().startsWith("PAC")) {
//                    if (application.getLoginUserRole().startsWith("PAC")) {
//
//                    }
                    selRunAs.addItem(application.getLogin());
                    Object custListObj = application.getRemote().callSearch("member", new HashMap<String, String>());
                    if (custListObj instanceof Object[]) {
                        Object[] custList = (Object[]) custListObj;
                        for (Object custObj : custList) {
                            if (custObj instanceof Map<?, ?>) {
                                Map<?, ?> custHash = (Map<?, ?>)custObj;
                                selRunAs.addItem(custHash.get("membercode"));
                            }
                        }
                    }
                }
                Object pacListObj = application.getRemote().callSearch("pac", new HashMap<String, String>());
                if (pacListObj instanceof Object[]) {
                    Object[] pacList = (Object[]) pacListObj;
                    for (Object pacObj : pacList) {
                        if (pacObj instanceof Map<?, ?>) {
                            Map<?, ?> pacHash = (Map<?, ?>)pacObj;
                            selRunAs.addItem(pacHash.get("name"));
                        }
                    }
                }
                selRunAs.select(application.getRunAs());
                selRunAs.setScrollToSelectedItem(true);
                selRunAs.addListener(new Property.ValueChangeListener() {
                    private static final long serialVersionUID = 1L;
                    @Override
                    public void valueChange(ValueChangeEvent event) {
                        Property property = event.getProperty();
                        application.setRunAs(property.getValue().toString());
                    }
                });
                toolbar.addComponent(selRunAs);
            }
            if (this instanceof InsertAble) {
                Button btNew = new Button(moduleConfig.getLabel("new"));
                ThemeResource icon = new ThemeResource("../runo/icons/16/document-add.png");
hsarweb/src/de/hsadmin/web/DatabaseModule.java
@@ -29,7 +29,7 @@
    protected void initModule() {
        MainApplication application = getApplication();
        moduleConfig = new ModuleConfig(getModuleIdent(), application.getLocale());
        String login = application.getLogin();
        String login = application.getRunAs();
        final String pac = login.length() >= 5 ? login.substring(0, 5) : "";
        PropertyConfig idProp = new PropertyConfig(moduleConfig, "id", Long.class, PropertyTableColumn.INTERNAL_KEY);
        idProp.setReadOnly(true);
hsarweb/src/de/hsadmin/web/DatabaseUserModule.java
@@ -24,7 +24,7 @@
    protected void initModule() {
        MainApplication application = getApplication();
        moduleConfig = new ModuleConfig(getModuleIdent(), application.getLocale());
        String login = application.getLogin();
        String login = application.getRunAs();
        final String pac = login.length() >= 5 ? login.substring(0, 5) : "";
        PropertyConfig idProp = new PropertyConfig(moduleConfig, "id", Long.class, PropertyTableColumn.INTERNAL_KEY);
        idProp.setReadOnly(true);
hsarweb/src/de/hsadmin/web/DomainModule.java
@@ -23,7 +23,7 @@
    protected void initModule() {
        MainApplication application = getApplication();
        moduleConfig = new ModuleConfig("domain", application.getLocale());
        String login = application.getLogin();
        String login = application.getRunAs();
        final String pac = login.length() >= 5 ? login.substring(0, 5) : "";
        PropertyConfig idProp = new PropertyConfig(moduleConfig, "id", Long.class, PropertyTableColumn.INTERNAL_KEY);
        idProp.setReadOnly(true);
hsarweb/src/de/hsadmin/web/EMailAddressModule.java
@@ -22,7 +22,7 @@
    protected void initModule() {
        MainApplication application = getApplication();
        moduleConfig = new ModuleConfig("emailaddress", application.getLocale());
        String login = application.getLogin();
        String login = application.getRunAs();
        final String pac = login.length() >= 5 ? login.substring(0, 5) : "";
        PropertyConfig idProp = new PropertyConfig(moduleConfig, "id", Long.class, PropertyTableColumn.INTERNAL_KEY);
        idProp.setReadOnly(true);
hsarweb/src/de/hsadmin/web/EMailAliasModule.java
@@ -22,7 +22,7 @@
    protected void initModule() {
        MainApplication application = getApplication();
        moduleConfig = new ModuleConfig("emailalias", application.getLocale());
        String login = application.getLogin();
        String login = application.getRunAs();
        final String pac = login.length() >= 5 ? login.substring(0, 5) : "";
        PropertyConfig idProp = new PropertyConfig(moduleConfig, "id", Long.class, PropertyTableColumn.INTERNAL_KEY);
        idProp.setReadOnly(true);
hsarweb/src/de/hsadmin/web/HomeModule.java
@@ -95,7 +95,7 @@
        ThemeResource icon = new ThemeResource(moduleConfig.getLabel("change_password_icon"));
        button.setIcon(icon);
        Map<String, String> whereHash = new HashMap<String, String>();
        whereHash.put("name", application.getLogin());
        whereHash.put("name", application.getRunAs());
        Long key = -1L;
        try {
            Object object = application.getRemote().callSearch(moduleConfig.getRemoteName(), whereHash);
hsarweb/src/de/hsadmin/web/MainApplication.java
@@ -46,6 +46,9 @@
    private Remote remote;
    private Map<String, Module> modules;
    private Locale requestLocale;
    private String role = "NONE";
    private String runAs = null;
    private TabSheet tabSheet;
    @Override
@@ -56,7 +59,6 @@
        }
        localeConfig = new LocaleConfig(locale, "main");
        remote = new Remote(this);
        String role = "NONE";
        try {
            Object rolesArrayObj = remote.callSearch("role", null);
            if (rolesArrayObj != null && rolesArrayObj instanceof Object[]) {
@@ -69,8 +71,8 @@
            showSystemException(e);
        }
        Window mainWindow = new Window(localeConfig.getText("applicationtitle"));
        TabSheet tabs = new TabSheet();
        tabs.setSizeFull();
        tabSheet = new TabSheet();
        tabSheet.setSizeFull();
        String modulesParamString = localeConfig.getText("modules." + role);
        modules = new HashMap<String, Module>();
        Module firstModule = null;
@@ -84,13 +86,13 @@
                ModuleConfig moduleConfig = module.getModuleConfig();
                String label = moduleConfig.getLabel("moduletitle");
                modules.put(label, module);
                tabs.addTab((Component) module.getComponent(), label, new ThemeResource(moduleConfig.getLabel("moduleicon")));
                tabSheet.addTab((Component) module.getComponent(), label, new ThemeResource(moduleConfig.getLabel("moduleicon")));
            } catch (Exception e) {
                showSystemException(e);
            }
        }
        tabs.addListener(this);
        mainWindow.setContent(tabs);
        tabSheet.addListener(this);
        mainWindow.setContent(tabSheet);
        setMainWindow(mainWindow);
        setErrorHandler(new Terminal.ErrorListener() {
            private static final long serialVersionUID = 1L;
@@ -104,6 +106,10 @@
        } catch (HsarwebException e) {
            showSystemException(e);
        }
    }
    public String getLoginUserRole() {
        return role;
    }
    public String getProxyTicket() {
@@ -186,4 +192,24 @@
        getMainWindow().showNotification("System-Fehler", "<br />Bitte informieren Sie den Support<br/ >" + e.getMessage(), Notification.TYPE_ERROR_MESSAGE);            
    }
    public String getRunAs() {
        if (runAs == null) {
            return getLogin();
        }
        return runAs;
    }
    public void setRunAs(String runAs) {
        this.runAs = runAs;
        Component selectedTab = tabSheet.getSelectedTab();
        Tab tab = tabSheet.getTab(selectedTab);
        Module module = modules.get(tab.getCaption());
        try {
            module.reload();
        } catch (HsarwebException e) {
            e.printStackTrace();
            showSystemException(e);
        }
    }
}
hsarweb/src/de/hsadmin/web/Remote.java
@@ -36,7 +36,7 @@
    private Object xmlrpcCall(String module, String operation, Map<String, String> param1) throws HsarwebException {
        Object[] params = new Object[3];
        params[0] = app.getLogin();
        params[0] = app.getRunAs();
        params[1] = app.getProxyTicket();
        params[2] = param1 != null ? param1 : new HashMap<String, String>();
        return xmlrpcCall(module + "." + operation, params);
@@ -44,7 +44,7 @@
    private Object xmlrpcCall(String module, String operation, Map<String, String> param1, Map<String, String> param2) throws HsarwebException {
        Object[] params = new Object[4];
        params[0] = app.getLogin();
        params[0] = app.getRunAs();
        params[1] = app.getProxyTicket();
        params[2] = param1 != null ? param1 : new HashMap<String, String>();
        params[3] = param2 != null ? param2 : new HashMap<String, String>();
hsarweb/src/de/hsadmin/web/UnixUserModule.java
@@ -22,7 +22,7 @@
    protected void initModule() {
        MainApplication application = getApplication();
        moduleConfig = new ModuleConfig("user", application.getLocale());
        String login = application.getLogin();
        String login = application.getRunAs();
        final String pac = login.length() >= 5 ? login.substring(0, 5) : "";
        PropertyConfig pacProp = new PropertyConfig(moduleConfig, "pac", String.class, PropertyTableColumn.HIDDEN, new SelectPropertyFieldFactory());
        pacProp.setSelectValues(new PropertySelectValues() {