package org.bonitasoft.console.client;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import org.bonitasoft.console.client.admin.bpm.cases.view.ArchivedCaseMoreDetailsAdminPage;
import org.bonitasoft.console.client.admin.bpm.cases.view.ArchivedCaseQuickDetailsAdminPage;
import org.bonitasoft.console.client.admin.bpm.cases.view.CaseMoreDetailsAdminPage;
import org.bonitasoft.console.client.admin.bpm.cases.view.CaseQuickDetailsAdminPage;
import org.bonitasoft.console.client.admin.bpm.task.view.SelectUserAndAssignTaskPage;
import org.bonitasoft.console.client.admin.bpm.task.view.TaskListingAdminPage;
import org.bonitasoft.console.client.admin.bpm.task.view.TaskMoreDetailsAdminPage;
import org.bonitasoft.console.client.admin.bpm.task.view.TaskQuickDetailsAdminPage;
import org.bonitasoft.console.client.admin.organization.OrganizationImportAndExportPage;
import org.bonitasoft.console.client.admin.organization.group.AddGroupPage;
import org.bonitasoft.console.client.admin.organization.group.GroupListingAdminPage;
import org.bonitasoft.console.client.admin.organization.group.GroupQuickDetailsAdminPage;
import org.bonitasoft.console.client.admin.organization.group.UpdateGroupPage;
import org.bonitasoft.console.client.admin.organization.role.AddRolePage;
import org.bonitasoft.console.client.admin.organization.role.RoleListingPage;
import org.bonitasoft.console.client.admin.organization.role.RoleQuickDetailsPage;
import org.bonitasoft.console.client.admin.organization.role.UpdateRolePage;
import org.bonitasoft.console.client.admin.organization.users.view.AddMembershipPage;
import org.bonitasoft.console.client.admin.organization.users.view.DeactivateUserWarningPopUp;
import org.bonitasoft.console.client.admin.organization.users.view.DeleteMembershipPage;
import org.bonitasoft.console.client.admin.organization.users.view.ListMembershipPage;
import org.bonitasoft.console.client.admin.organization.users.view.PopupAddUserPage;
import org.bonitasoft.console.client.admin.organization.users.view.UpdateUserPage;
import org.bonitasoft.console.client.admin.organization.users.view.UserListingAdminPage;
import org.bonitasoft.console.client.admin.organization.users.view.UserMoreDetailsAdminPage;
import org.bonitasoft.console.client.admin.organization.users.view.UserQuickDetailsAdminPage;
import org.bonitasoft.console.client.admin.organization.users.view.UserQuickDetailsPage;
import org.bonitasoft.console.client.admin.page.view.AddCustomPage;
import org.bonitasoft.console.client.admin.page.view.CustomPagePermissionsValidationPopupPage;
import org.bonitasoft.console.client.admin.page.view.EditCustomPage;
import org.bonitasoft.console.client.admin.page.view.PageListingPage;
import org.bonitasoft.console.client.admin.page.view.PageQuickDetailsPage;
import org.bonitasoft.console.client.admin.process.view.ProcessListingAdminPage;
import org.bonitasoft.console.client.admin.process.view.ProcessMoreDetailsAdminPage;
import org.bonitasoft.console.client.admin.process.view.ProcessQuickDetailsAdminPage;
import org.bonitasoft.console.client.admin.process.view.UploadProcessPage;
import org.bonitasoft.console.client.admin.process.view.section.category.AddProcessCategoryPage;
import org.bonitasoft.console.client.admin.process.view.section.category.CreateCategoryAndAddToProcessPage;
import org.bonitasoft.console.client.admin.process.view.section.entitymapping.DeleteActorMemberPage;
import org.bonitasoft.console.client.admin.process.view.section.entitymapping.ListProcessActorGroupPage;
import org.bonitasoft.console.client.admin.process.view.section.entitymapping.ListProcessActorMembershipPage;
import org.bonitasoft.console.client.admin.process.view.section.entitymapping.ListProcessActorRolePage;
import org.bonitasoft.console.client.admin.process.view.section.entitymapping.ListProcessActorUserPage;
import org.bonitasoft.console.client.admin.process.view.section.entitymapping.SelectGroupForActorPage;
import org.bonitasoft.console.client.admin.process.view.section.entitymapping.SelectMembershipForActorPage;
import org.bonitasoft.console.client.admin.process.view.section.entitymapping.SelectRoleForActorPage;
import org.bonitasoft.console.client.admin.process.view.section.entitymapping.SelectUserForActorPage;
import org.bonitasoft.console.client.admin.profile.view.AddGroupToProfileMemberPage;
import org.bonitasoft.console.client.admin.profile.view.AddMembershipToProfileMemberPage;
import org.bonitasoft.console.client.admin.profile.view.AddRoleToProfileMemberPage;
import org.bonitasoft.console.client.admin.profile.view.AddUserToProfileMemberPage;
import org.bonitasoft.console.client.admin.profile.view.DeleteProfileMemberPage;
import org.bonitasoft.console.client.admin.profile.view.ProfileListingPage;
import org.bonitasoft.console.client.admin.profile.view.ProfileMoreDetailsPage;
import org.bonitasoft.console.client.admin.profile.view.ProfileQuickDetailsPage;
import org.bonitasoft.console.client.admin.tenant.view.TenantMaintenancePage;
import org.bonitasoft.console.client.angular.AngularIFrameView;
import org.bonitasoft.console.client.common.system.view.PopupAboutPage;
import org.bonitasoft.console.client.common.view.CustomPageWithFrame;
import org.bonitasoft.console.client.menu.view.TechnicalUserServicePausedView;
import org.bonitasoft.console.client.menu.view.TechnicalUserWarningView;
import org.bonitasoft.console.client.technicaluser.businessdata.BDMImportPage;
import org.bonitasoft.console.client.technicaluser.businessdata.BDMImportWarningPopUp;
import org.bonitasoft.console.client.user.cases.view.ArchivedCaseMoreDetailsPage;
import org.bonitasoft.console.client.user.cases.view.ArchivedCaseQuickDetailsPage;
import org.bonitasoft.console.client.user.cases.view.CaseMoreDetailsPage;
import org.bonitasoft.console.client.user.cases.view.CaseQuickDetailsPage;
import org.bonitasoft.console.client.user.cases.view.DisplayCaseFormPage;
import org.bonitasoft.console.client.user.process.view.ProcessListingPage;
import org.bonitasoft.console.client.user.process.view.ProcessQuickDetailsPage;
import org.bonitasoft.console.client.user.process.view.StartProcessFormPage;
import org.bonitasoft.console.client.user.task.view.ArchivedHumanTaskQuickDetailsPage;
import org.bonitasoft.console.client.user.task.view.HumanTaskQuickDetailsPage;
import org.bonitasoft.console.client.user.task.view.PerformTaskPage;
import org.bonitasoft.console.client.user.task.view.TasksListingPage;
import org.bonitasoft.console.client.user.task.view.more.ArchivedHumanTaskMoreDetailsPage;
import org.bonitasoft.console.client.user.task.view.more.HumanTaskMoreDetailsPage;
import org.bonitasoft.web.toolkit.client.ApplicationFactoryClient;
import org.bonitasoft.web.toolkit.client.AvailableTokens;
import org.bonitasoft.web.toolkit.client.SHA1;
import org.bonitasoft.web.toolkit.client.Session;
import org.bonitasoft.web.toolkit.client.ui.RawView;
import org.bonitasoft.web.toolkit.client.ui.action.Action;
import org.bonitasoft.web.toolkit.client.ui.action.CheckValidSessionBeforeAction;
import org.bonitasoft.web.toolkit.client.ui.component.form.view.BlankPage;
import org.bonitasoft.web.toolkit.client.ui.page.ChangeLangPage;
import org.bonitasoft.web.toolkit.client.ui.page.ItemNotFoundPopup;
import com.google.gwt.core.shared.GWT;
/**
* console client page
*
* @author Yongtao Guo, Haojie Yuan, Zhiheng Yang
*/
public class ConsoleFactoryClient extends ApplicationFactoryClient {
protected AngularIFrameView angularFrame = new AngularIFrameView();
private List<String> currentUserAccessRights = null;
/**
* Default Constructor.
*/
public ConsoleFactoryClient() {
AngularIFrameView.addTokenSupport(AngularIFrameView.CASE_LISTING_TOKEN, "/user/cases/list");
AngularIFrameView.addTokenSupport(AngularIFrameView.CASE_LISTING_ADMIN_TOKEN, "/admin/cases/list");
AngularIFrameView.addTokenSupport(AngularIFrameView.APPLICATION_LISTING_PAGE, "/admin/applications");
AngularIFrameView.addTokenSupport(AngularIFrameView.PROCESS_MORE_DETAILS_ADMIN_TOKEN, "/admin/processes/details");
AngularIFrameView.addTokenSupport(AngularIFrameView.TASK_LISTING_TOKEN, "/user/tasks/list");
}
protected List<String> getCurrentUserAccessRights() {
if (currentUserAccessRights == null) {
currentUserAccessRights = new ArrayList<String>(AvailableTokens.tokens);
GWT.log("Current log user as access to (with SP pages) :" + listAUthorizedTokens(AvailableTokens.tokens));
}
return currentUserAccessRights;
}
private static final Action emptyAction = new Action() {
@Override
public void execute() {
}
};
/**
* @param token
* @return
*/
public RawView prepareAngularPage(final String token) {
new CheckValidSessionBeforeAction(emptyAction).execute();
final AngularIFrameView ngView = angularFrame;
ngView.setUrl("#" + AngularIFrameView.getRoute(token), token);
return ngView;
}
@Override
public RawView defineViewTokens(final String token) {
if (ItemNotFoundPopup.TOKEN.equals(token)) {
return new ItemNotFoundPopup();
} else if (DeactivateUserWarningPopUp.TOKEN.equals(token)) {
return new DeactivateUserWarningPopUp();
// Manage Cases pages
} else if (CaseQuickDetailsAdminPage.TOKEN.equals(token) && isUserAuthorized(CaseQuickDetailsAdminPage.PRIVILEGES, getCurrentUserAccessRights())) {
return new CaseQuickDetailsAdminPage();
} else if (CaseMoreDetailsAdminPage.TOKEN.equals(token) && isUserAuthorized(CaseMoreDetailsAdminPage.PRIVILEGES, getCurrentUserAccessRights())) {
return new CaseMoreDetailsAdminPage();
} else if (ArchivedCaseQuickDetailsAdminPage.TOKEN.equals(token)
&& isUserAuthorized(ArchivedCaseQuickDetailsAdminPage.PRIVILEGES, getCurrentUserAccessRights())) {
return new ArchivedCaseQuickDetailsAdminPage();
} else if (ArchivedCaseMoreDetailsAdminPage.TOKEN.equals(token)
&& isUserAuthorized(ArchivedCaseMoreDetailsAdminPage.PRIVILEGES, getCurrentUserAccessRights())) {
return new ArchivedCaseMoreDetailsAdminPage();
// } else if (ListGroupPage.TOKEN.equals(token)) {
// return new ListGroupPage();
} else if (DisplayCaseFormPage.TOKEN.equals(token) && isUserAuthorized(DisplayCaseFormPage.PRIVILEGES, getCurrentUserAccessRights())) {
return new DisplayCaseFormPage();
// Import export organization page
} else if (OrganizationImportAndExportPage.TOKEN.equals(token)
&& isUserAuthorized(OrganizationImportAndExportPage.PRIVILEGES, getCurrentUserAccessRights())) {
return new OrganizationImportAndExportPage();
// Manage Users pages
} else if (UserListingAdminPage.TOKEN.equals(token) && isUserAuthorized(UserListingAdminPage.PRIVILEGES, getCurrentUserAccessRights())) {
return new UserListingAdminPage();
} else if (UserQuickDetailsAdminPage.TOKEN.equals(token) && isUserAuthorized(UserQuickDetailsAdminPage.PRIVILEGES, getCurrentUserAccessRights())) {
return new UserQuickDetailsAdminPage();
} else if (UserQuickDetailsPage.TOKEN.equals(token) && isUserAuthorized(UserQuickDetailsPage.PRIVILEGES, getCurrentUserAccessRights())) {
return new UserQuickDetailsPage();
} else if (UserMoreDetailsAdminPage.TOKEN.equals(token) && isUserAuthorized(UserMoreDetailsAdminPage.PRIVILEGES, getCurrentUserAccessRights())) {
return new UserMoreDetailsAdminPage();
} else if (PopupAddUserPage.TOKEN.equals(token) && isUserAuthorized(PopupAddUserPage.PRIVILEGES, getCurrentUserAccessRights())) {
return new PopupAddUserPage();
} else if (AddMembershipPage.TOKEN.equals(token) && isUserAuthorized(AddMembershipPage.PRIVILEGES, getCurrentUserAccessRights())) {
return new AddMembershipPage();
} else if (DeleteMembershipPage.TOKEN.equals(token) && isUserAuthorized(DeleteMembershipPage.PRIVILEGES, getCurrentUserAccessRights())) {
return new DeleteMembershipPage();
} else if (ListMembershipPage.TOKEN.equals(token) && isUserAuthorized(ListMembershipPage.PRIVILEGES, getCurrentUserAccessRights())) {
return new ListMembershipPage();
} else if (UpdateUserPage.TOKEN.equals(token) && isUserAuthorized(UpdateUserPage.PRIVILEGES, getCurrentUserAccessRights())) {
return new UpdateUserPage();
// Manage processes pages For Admin
} else if (ProcessListingAdminPage.TOKEN.equals(token) && isUserAuthorized(ProcessListingAdminPage.PRIVILEGES, getCurrentUserAccessRights())) {
return new ProcessListingAdminPage();
} else if (ProcessQuickDetailsAdminPage.TOKEN.equals(token) && isUserAuthorized(ProcessQuickDetailsAdminPage.PRIVILEGES, getCurrentUserAccessRights())) {
return new ProcessQuickDetailsAdminPage();
} else if (ProcessMoreDetailsAdminPage.TOKEN.equals(token) && isUserAuthorized(ProcessMoreDetailsAdminPage.PRIVILEGES,
getCurrentUserAccessRights())) {
// No action is necessary as an unauthorized request will result in a page reload.
return new ProcessMoreDetailsAdminPage();
} else if (AngularIFrameView.PROCESS_MORE_DETAILS_ADMIN_TOKEN.equals(token) && isUserAuthorized(ProcessMoreDetailsAdminPage.PRIVILEGES,
getCurrentUserAccessRights())) {
return prepareAngularPage(token);
} else if (UploadProcessPage.TOKEN.equals(token) && isUserAuthorized(UploadProcessPage.PRIVILEGES, getCurrentUserAccessRights())) {
return new UploadProcessPage();
} else if (CreateCategoryAndAddToProcessPage.TOKEN.equals(token)
&& isUserAuthorized(CreateCategoryAndAddToProcessPage.PRIVILEGES, getCurrentUserAccessRights())) {
return new CreateCategoryAndAddToProcessPage();
} else if (AddProcessCategoryPage.TOKEN.equals(token) && isUserAuthorized(AddProcessCategoryPage.PRIVILEGES, getCurrentUserAccessRights())) {
return new AddProcessCategoryPage();
} else if (ListProcessActorUserPage.TOKEN.equals(token) && isUserAuthorized(ListProcessActorUserPage.PRIVILEGES, getCurrentUserAccessRights())) {
return new ListProcessActorUserPage();
} else if (ListProcessActorGroupPage.TOKEN.equals(token) && isUserAuthorized(ListProcessActorGroupPage.PRIVILEGES, getCurrentUserAccessRights())) {
return new ListProcessActorGroupPage();
} else if (ListProcessActorRolePage.TOKEN.equals(token) && isUserAuthorized(ListProcessActorRolePage.PRIVILEGES, getCurrentUserAccessRights())) {
return new ListProcessActorRolePage();
} else if (ListProcessActorMembershipPage.TOKEN.equals(token)
&& isUserAuthorized(ListProcessActorMembershipPage.PRIVILEGES, getCurrentUserAccessRights())) {
return new ListProcessActorMembershipPage();
} else if (SelectMembershipForActorPage.TOKEN.equals(token) && isUserAuthorized(SelectMembershipForActorPage.PRIVILEGES, getCurrentUserAccessRights())) {
return new SelectMembershipForActorPage();
} else if (SelectUserForActorPage.TOKEN.equals(token) && isUserAuthorized(SelectUserForActorPage.PRIVILEGES, getCurrentUserAccessRights())) {
return new SelectUserForActorPage();
} else if (SelectGroupForActorPage.TOKEN.equals(token) && isUserAuthorized(SelectGroupForActorPage.PRIVILEGES, getCurrentUserAccessRights())) {
return new SelectGroupForActorPage();
} else if (SelectRoleForActorPage.TOKEN.equals(token) && isUserAuthorized(SelectRoleForActorPage.PRIVILEGES, getCurrentUserAccessRights())) {
return new SelectRoleForActorPage();
// Manage Roles pages
} else if (RoleListingPage.TOKEN.equals(token) && isUserAuthorized(RoleListingPage.PRIVILEGES, getCurrentUserAccessRights())) {
return new RoleListingPage();
} else if (RoleQuickDetailsPage.TOKEN.equals(token) && isUserAuthorized(RoleQuickDetailsPage.PRIVILEGES, getCurrentUserAccessRights())) {
return new RoleQuickDetailsPage();
} else if (AddRolePage.TOKEN.equals(token) && isUserAuthorized(AddRolePage.PRIVILEGES, getCurrentUserAccessRights())) {
return new AddRolePage();
} else if (UpdateRolePage.TOKEN.equals(token) && isUserAuthorized(UpdateRolePage.PRIVILEGES, getCurrentUserAccessRights())) {
return new UpdateRolePage();
// Manage Groups pages
} else if (GroupListingAdminPage.TOKEN.equals(token) && isUserAuthorized(GroupListingAdminPage.PRIVILEGES, getCurrentUserAccessRights())) {
return new GroupListingAdminPage();
} else if (GroupQuickDetailsAdminPage.TOKEN.equals(token) && isUserAuthorized(GroupQuickDetailsAdminPage.PRIVILEGES, getCurrentUserAccessRights())) {
return new GroupQuickDetailsAdminPage();
} else if (AddGroupPage.TOKEN.equals(token) && isUserAuthorized(AddGroupPage.PRIVILEGES, getCurrentUserAccessRights())) {
return new AddGroupPage();
} else if (UpdateGroupPage.TOKEN.equals(token) && isUserAuthorized(UpdateGroupPage.PRIVILEGES, getCurrentUserAccessRights())) {
return new UpdateGroupPage();
// User Privileges settings pages
} else if (ProfileListingPage.TOKEN.equals(token) && isUserAuthorized(ProfileListingPage.PRIVILEGES, getCurrentUserAccessRights())) {
return new ProfileListingPage();
} else if (ProfileMoreDetailsPage.TOKEN.equals(token) && isUserAuthorized(ProfileMoreDetailsPage.PRIVILEGES, getCurrentUserAccessRights())) {
return new ProfileMoreDetailsPage();
} else if (ProfileQuickDetailsPage.TOKEN.equals(token) && isUserAuthorized(ProfileQuickDetailsPage.PRIVILEGES, getCurrentUserAccessRights())) {
return new ProfileQuickDetailsPage();
} else if (AddGroupToProfileMemberPage.TOKEN.equals(token) && isUserAuthorized(AddGroupToProfileMemberPage.PRIVILEGES, getCurrentUserAccessRights())) {
return new AddGroupToProfileMemberPage();
} else if (AddRoleToProfileMemberPage.TOKEN.equals(token) && isUserAuthorized(AddRoleToProfileMemberPage.PRIVILEGES, getCurrentUserAccessRights())) {
return new AddRoleToProfileMemberPage();
} else if (AddUserToProfileMemberPage.TOKEN.equals(token) && isUserAuthorized(AddUserToProfileMemberPage.PRIVILEGES, getCurrentUserAccessRights())) {
return new AddUserToProfileMemberPage();
} else if (AddMembershipToProfileMemberPage.TOKEN.equals(token)
&& isUserAuthorized(AddMembershipToProfileMemberPage.PRIVILEGES, getCurrentUserAccessRights())) {
return new AddMembershipToProfileMemberPage();
} else if (DeleteProfileMemberPage.TOKEN.equals(token) && isUserAuthorized(DeleteProfileMemberPage.PRIVILEGES, getCurrentUserAccessRights())) {
return new DeleteProfileMemberPage();
} else if (DeleteActorMemberPage.TOKEN.equals(token)) {
return new DeleteActorMemberPage();
// Manage Tasks pages
} else if (TaskListingAdminPage.TOKEN.equals(token) && isUserAuthorized(TaskListingAdminPage.PRIVILEGES, getCurrentUserAccessRights())) {
return new TaskListingAdminPage();
} else if (SelectUserAndAssignTaskPage.TOKEN.equals(token) && isUserAuthorized(SelectUserAndAssignTaskPage.PRIVILEGES, getCurrentUserAccessRights())) {
return new SelectUserAndAssignTaskPage();
} else if (TaskQuickDetailsAdminPage.TOKEN.equals(token) && isUserAuthorized(TaskQuickDetailsAdminPage.PRIVILEGES, getCurrentUserAccessRights())) {
return new TaskQuickDetailsAdminPage();
} else if (TaskMoreDetailsAdminPage.TOKEN.equals(token) && isUserAuthorized(TaskMoreDetailsAdminPage.PRIVILEGES, getCurrentUserAccessRights())) {
return new TaskMoreDetailsAdminPage();
/*
* THEME pages
* } else if (ListThemePage.TOKEN.equals(token)) {
* return new ListThemePage();
* } else if (UploadThemePage.TOKEN.equals(token)) {
* return new UploadThemePage();
* } else if (EditThemePage.TOKEN.equals(token)) {
* return new EditThemePage();
*/
// Visualize & do tasks
} else if (AngularIFrameView.TASK_LISTING_TOKEN.equals(token) && isUserAuthorized(TasksListingPage.PRIVILEGES, getCurrentUserAccessRights())) {
return prepareAngularPage(token);
} else if (HumanTaskQuickDetailsPage.TOKEN.equals(token) && isUserAuthorized(HumanTaskQuickDetailsPage.PRIVILEGES, getCurrentUserAccessRights())) {
return new HumanTaskQuickDetailsPage();
} else if (HumanTaskMoreDetailsPage.TOKEN.equals(token) && isUserAuthorized(HumanTaskMoreDetailsPage.PRIVILEGES, getCurrentUserAccessRights())) {
return new HumanTaskMoreDetailsPage();
} else if (ArchivedHumanTaskQuickDetailsPage.TOKEN.equals(token)
&& isUserAuthorized(ArchivedHumanTaskQuickDetailsPage.PRIVILEGES, getCurrentUserAccessRights())) {
return new ArchivedHumanTaskQuickDetailsPage();
} else if (ArchivedHumanTaskMoreDetailsPage.TOKEN.equals(token)
&& isUserAuthorized(ArchivedHumanTaskMoreDetailsPage.PRIVILEGES, getCurrentUserAccessRights())) {
return new ArchivedHumanTaskMoreDetailsPage();
} else if (PerformTaskPage.TOKEN.equals(token) && isUserAuthorized(PerformTaskPage.PRIVILEGES, getCurrentUserAccessRights())) {
return new PerformTaskPage();
// Visualize & Start processes
} else if (ProcessListingPage.TOKEN.equals(token) && isUserAuthorized(ProcessListingPage.PRIVILEGES, getCurrentUserAccessRights())) {
return new ProcessListingPage();
} else if (ProcessQuickDetailsPage.TOKEN.equals(token) && isUserAuthorized(ProcessQuickDetailsPage.PRIVILEGES, getCurrentUserAccessRights())) {
return new ProcessQuickDetailsPage();
} else if (StartProcessFormPage.TOKEN.equals(token) && isUserAuthorized(StartProcessFormPage.PRIVILEGES, getCurrentUserAccessRights())) {
return new StartProcessFormPage();
// Visualize Cases
} else if (CaseQuickDetailsPage.TOKEN.equals(token) && isUserAuthorized(CaseQuickDetailsPage.PRIVILEGES, getCurrentUserAccessRights())) {
return new CaseQuickDetailsPage();
} else if (ArchivedCaseQuickDetailsPage.TOKEN.equals(token) && isUserAuthorized(ArchivedCaseQuickDetailsPage.PRIVILEGES, getCurrentUserAccessRights())) {
return new ArchivedCaseQuickDetailsPage();
} else if (ArchivedCaseMoreDetailsPage.TOKEN.equals(token) && isUserAuthorized(ArchivedCaseMoreDetailsPage.PRIVILEGES, getCurrentUserAccessRights())) {
return new ArchivedCaseMoreDetailsPage();
} else if (CaseMoreDetailsPage.TOKEN.equals(token) && isUserAuthorized(CaseMoreDetailsPage.PRIVILEGES, getCurrentUserAccessRights())) {
return new CaseMoreDetailsPage();
} else if (TechnicalUserWarningView.TOKEN.equals(token)) {
return new TechnicalUserWarningView();
// System
} else if (PopupAboutPage.TOKEN.equals(token)) {
return new PopupAboutPage();
} else if (TechnicalUserServicePausedView.TOKEN.equals(token)) {
return new TechnicalUserServicePausedView();
} else if (ChangeLangPage.TOKEN.equals(token)) {
return new ChangeLangPage();
} else if (TenantMaintenancePage.TOKEN.equals(token) && isUserAuthorized(TenantMaintenancePage.PRIVILEGES, getCurrentUserAccessRights())) {
return new TenantMaintenancePage();
// Custom pages
} else if (PageListingPage.TOKEN.equals(token) && isUserAuthorized(PageListingPage.PRIVILEGES, getCurrentUserAccessRights())) {
return new PageListingPage();
} else if (AddCustomPage.TOKEN.equals(token) && isUserAuthorized(AddCustomPage.PRIVILEGES, getCurrentUserAccessRights())) {
return new AddCustomPage();
} else if (EditCustomPage.TOKEN.equals(token) && isUserAuthorized(EditCustomPage.PRIVILEGES, getCurrentUserAccessRights())) {
return new EditCustomPage();
} else if (PageQuickDetailsPage.TOKEN.equals(token) && isUserAuthorized(PageListingPage.PRIVILEGES, getCurrentUserAccessRights())) {
return new PageQuickDetailsPage();
} else if (CustomPagePermissionsValidationPopupPage.TOKEN.equals(token) && isUserAuthorized(PageListingPage.PRIVILEGES, getCurrentUserAccessRights())) {
return new CustomPagePermissionsValidationPopupPage();
// Custom pages
} else if (token != null && token.startsWith(CustomPageWithFrame.TOKEN)) {
if (isUserAuthorized(token, getCurrentUserAccessRights())) {
return new CustomPageWithFrame(token);
} else {
return new BlankPage();
}
// BDM
} else if (BDMImportPage.TOKEN.equals(token) && isUserAuthorized(BDMImportPage.PRIVILEGES, getCurrentUserAccessRights())) {
return new BDMImportPage();
} else if (BDMImportWarningPopUp.TOKEN.equals(token) && isUserAuthorized(BDMImportPage.PRIVILEGES, getCurrentUserAccessRights())) {
return new BDMImportWarningPopUp();
} else if (AngularIFrameView.supportsToken(token) && isUserAuthorized(Arrays.asList(token), getCurrentUserAccessRights())) {
// No action is necessary as an unauthorized request will result in a page reload.
return prepareAngularPage(token);
} else {
return new BlankPage();
}
}
public native void print(String content) /*-{
console.log(content);
}-*/;
protected String listAUthorizedTokens(final List<String> currentUserAccessRights) {
String result = "";
final Map<String, List<String>> pagePrivileges = buildApplicationPagesPrivileges();
for (final Map.Entry<String, List<String>> entry : pagePrivileges.entrySet()) {
result = isUserAuthorized(entry.getValue(), currentUserAccessRights) ? result + entry.getKey() + ", " : result;
}
return result;
}
protected boolean isUserAuthorized(final String token, final List<String> accessRights) {
final String sessionId = new String(Session.getParameter("session_id"));
final String calcSHA1 = SHA1.calcSHA1(token.concat(sessionId));
if (accessRights.contains(calcSHA1.toUpperCase())) {
return true;
}
return false;
}
protected Map<String, List<String>> buildApplicationPagesPrivileges() {
final Map<String, List<String>> pagePrivileges = new HashMap<String, List<String>>();
pagePrivileges.put(CaseQuickDetailsAdminPage.TOKEN, CaseQuickDetailsAdminPage.PRIVILEGES);
pagePrivileges.put(CaseMoreDetailsAdminPage.TOKEN, CaseMoreDetailsAdminPage.PRIVILEGES);
pagePrivileges.put(ArchivedCaseQuickDetailsAdminPage.TOKEN, ArchivedCaseQuickDetailsAdminPage.PRIVILEGES);
pagePrivileges.put(ArchivedCaseMoreDetailsAdminPage.TOKEN, ArchivedCaseMoreDetailsAdminPage.PRIVILEGES);
pagePrivileges.put(DisplayCaseFormPage.TOKEN, DisplayCaseFormPage.PRIVILEGES);
pagePrivileges.put(OrganizationImportAndExportPage.TOKEN, OrganizationImportAndExportPage.PRIVILEGES);
pagePrivileges.put(UserListingAdminPage.TOKEN, UserListingAdminPage.PRIVILEGES);
pagePrivileges.put(UserQuickDetailsAdminPage.TOKEN, UserQuickDetailsAdminPage.PRIVILEGES);
pagePrivileges.put(UserQuickDetailsPage.TOKEN, UserQuickDetailsPage.PRIVILEGES);
pagePrivileges.put(UserMoreDetailsAdminPage.TOKEN, UserMoreDetailsAdminPage.PRIVILEGES);
pagePrivileges.put(PopupAddUserPage.TOKEN, PopupAddUserPage.PRIVILEGES);
pagePrivileges.put(AddMembershipPage.TOKEN, AddMembershipPage.PRIVILEGES);
pagePrivileges.put(DeleteMembershipPage.TOKEN, DeleteMembershipPage.PRIVILEGES);
pagePrivileges.put(ListMembershipPage.TOKEN, ListMembershipPage.PRIVILEGES);
pagePrivileges.put(UpdateUserPage.TOKEN, UpdateUserPage.PRIVILEGES);
pagePrivileges.put(ProcessListingAdminPage.TOKEN, ProcessListingAdminPage.PRIVILEGES);
pagePrivileges.put(ProcessQuickDetailsAdminPage.TOKEN, ProcessQuickDetailsAdminPage.PRIVILEGES);
pagePrivileges.put(ProcessMoreDetailsAdminPage.TOKEN, ProcessMoreDetailsAdminPage.PRIVILEGES);
pagePrivileges.put(AngularIFrameView.PROCESS_MORE_DETAILS_ADMIN_TOKEN, ProcessMoreDetailsAdminPage.PRIVILEGES);
pagePrivileges.put(UploadProcessPage.TOKEN, UploadProcessPage.PRIVILEGES);
pagePrivileges.put(CreateCategoryAndAddToProcessPage.TOKEN, CreateCategoryAndAddToProcessPage.PRIVILEGES);
pagePrivileges.put(AddProcessCategoryPage.TOKEN, AddProcessCategoryPage.PRIVILEGES);
pagePrivileges.put(ListProcessActorUserPage.TOKEN, ListProcessActorUserPage.PRIVILEGES);
pagePrivileges.put(ListProcessActorGroupPage.TOKEN, ListProcessActorGroupPage.PRIVILEGES);
pagePrivileges.put(ListProcessActorRolePage.TOKEN, ListProcessActorRolePage.PRIVILEGES);
pagePrivileges.put(ListProcessActorMembershipPage.TOKEN, ListProcessActorMembershipPage.PRIVILEGES);
pagePrivileges.put(SelectMembershipForActorPage.TOKEN, SelectMembershipForActorPage.PRIVILEGES);
pagePrivileges.put(SelectUserForActorPage.TOKEN, SelectUserForActorPage.PRIVILEGES);
pagePrivileges.put(SelectGroupForActorPage.TOKEN, SelectGroupForActorPage.PRIVILEGES);
pagePrivileges.put(SelectRoleForActorPage.TOKEN, SelectRoleForActorPage.PRIVILEGES);
pagePrivileges.put(RoleListingPage.TOKEN, RoleListingPage.PRIVILEGES);
pagePrivileges.put(RoleQuickDetailsPage.TOKEN, RoleQuickDetailsPage.PRIVILEGES);
pagePrivileges.put(AddRolePage.TOKEN, AddRolePage.PRIVILEGES);
pagePrivileges.put(UpdateRolePage.TOKEN, UpdateRolePage.PRIVILEGES);
pagePrivileges.put(GroupListingAdminPage.TOKEN, GroupListingAdminPage.PRIVILEGES);
pagePrivileges.put(GroupQuickDetailsAdminPage.TOKEN, GroupQuickDetailsAdminPage.PRIVILEGES);
pagePrivileges.put(AddGroupPage.TOKEN, AddGroupPage.PRIVILEGES);
pagePrivileges.put(UpdateGroupPage.TOKEN, UpdateGroupPage.PRIVILEGES);
pagePrivileges.put(ProfileListingPage.TOKEN, ProfileListingPage.PRIVILEGES);
pagePrivileges.put(ProfileMoreDetailsPage.TOKEN, ProfileMoreDetailsPage.PRIVILEGES);
pagePrivileges.put(ProfileQuickDetailsPage.TOKEN, ProfileQuickDetailsPage.PRIVILEGES);
pagePrivileges.put(AddGroupToProfileMemberPage.TOKEN, AddGroupToProfileMemberPage.PRIVILEGES);
pagePrivileges.put(AddRoleToProfileMemberPage.TOKEN, AddRoleToProfileMemberPage.PRIVILEGES);
pagePrivileges.put(AddUserToProfileMemberPage.TOKEN, AddUserToProfileMemberPage.PRIVILEGES);
pagePrivileges.put(AddMembershipToProfileMemberPage.TOKEN, AddMembershipToProfileMemberPage.PRIVILEGES);
pagePrivileges.put(DeleteProfileMemberPage.TOKEN, DeleteProfileMemberPage.PRIVILEGES);
pagePrivileges.put(TaskListingAdminPage.TOKEN, TaskListingAdminPage.PRIVILEGES);
pagePrivileges.put(SelectUserAndAssignTaskPage.TOKEN, SelectUserAndAssignTaskPage.PRIVILEGES);
pagePrivileges.put(TaskQuickDetailsAdminPage.TOKEN, TaskQuickDetailsAdminPage.PRIVILEGES);
pagePrivileges.put(TaskMoreDetailsAdminPage.TOKEN, TaskMoreDetailsAdminPage.PRIVILEGES);
pagePrivileges.put(TasksListingPage.TOKEN, TasksListingPage.PRIVILEGES);
pagePrivileges.put(AngularIFrameView.TASK_LISTING_TOKEN, TasksListingPage.PRIVILEGES);
pagePrivileges.put(HumanTaskQuickDetailsPage.TOKEN, HumanTaskQuickDetailsPage.PRIVILEGES);
pagePrivileges.put(HumanTaskMoreDetailsPage.TOKEN, HumanTaskMoreDetailsPage.PRIVILEGES);
pagePrivileges.put(ArchivedHumanTaskQuickDetailsPage.TOKEN, ArchivedHumanTaskQuickDetailsPage.PRIVILEGES);
pagePrivileges.put(ArchivedHumanTaskMoreDetailsPage.TOKEN, ArchivedHumanTaskMoreDetailsPage.PRIVILEGES);
pagePrivileges.put(PerformTaskPage.TOKEN, PerformTaskPage.PRIVILEGES);
pagePrivileges.put(ProcessListingPage.TOKEN, ProcessListingPage.PRIVILEGES);
pagePrivileges.put(ProcessQuickDetailsPage.TOKEN, ProcessQuickDetailsPage.PRIVILEGES);
pagePrivileges.put(StartProcessFormPage.TOKEN, StartProcessFormPage.PRIVILEGES);
pagePrivileges.put(CaseQuickDetailsPage.TOKEN, CaseQuickDetailsPage.PRIVILEGES);
pagePrivileges.put(ArchivedCaseQuickDetailsPage.TOKEN, ArchivedCaseQuickDetailsPage.PRIVILEGES);
pagePrivileges.put(ArchivedCaseMoreDetailsPage.TOKEN, ArchivedCaseMoreDetailsPage.PRIVILEGES);
pagePrivileges.put(CaseMoreDetailsPage.TOKEN, CaseMoreDetailsPage.PRIVILEGES);
return pagePrivileges;
}
protected boolean isUserAuthorized(final List<String> privileges, final List<String> accessRights) {
final String sessionId = new String(Session.getParameter("session_id"));
for (final String privilege : privileges) {
final String calcSHA1 = SHA1.calcSHA1(privilege.concat(sessionId));
if (accessRights.contains(calcSHA1.toUpperCase())) {
GWT.log("User is granted access to targeted page thanks to : " + privilege);
return true;
}
}
return false;
}
}