package org.jbpm.formbuilder.client; import java.util.ArrayList; import java.util.List; import org.jbpm.formapi.client.CommonGlobals; import org.jbpm.formapi.client.FormBuilderException; import org.jbpm.formapi.client.bus.ui.NotificationEvent; import org.jbpm.formapi.client.bus.ui.NotificationEvent.Level; import org.jbpm.formbuilder.client.messages.I18NConstants; import com.google.gwt.event.shared.EventBus; public class RoleUtils { private final I18NConstants i18n = FormBuilderGlobals.getInstance().getI18n(); private final EventBus bus = CommonGlobals.getInstance().getEventBus(); private final List<String> roles = new ArrayList<String>(); private static final RoleUtils INSTANCE = new RoleUtils(); public static RoleUtils getInstance() { return INSTANCE; } private RoleUtils() { reload(); } public void reload() { try { roles.clear(); FormBuilderService server = FormBuilderGlobals.getInstance().getService(); if (server != null) { server.getCurrentRoles(new FormBuilderService.RolesResponseHandler() { @Override public void onResponse(List<String> responseRoles) { roles.addAll(responseRoles); } }); } } catch (FormBuilderException e) { bus.fireEvent(new NotificationEvent(Level.ERROR, i18n.RolesNotRead(), e)); } } public boolean hasDesignPrivileges() { return roles.contains("admin") || roles.contains("webdesigner"); } public boolean hasOnlyUserPrivileges() { return roles.contains("functionalanalyst") && !hasDesignPrivileges(); } }