package com.constellio.app.ui.pages.user; import java.util.ArrayList; import java.util.HashMap; import java.util.List; import java.util.Map; import com.constellio.app.ui.application.NavigatorConfigurationService; import com.constellio.app.ui.entities.UserCredentialVO; import com.constellio.app.ui.framework.builders.UserCredentialToVOBuilder; import com.constellio.app.ui.framework.data.UserCredentialVODataProvider; import com.constellio.app.ui.pages.base.BasePresenter; import com.constellio.app.ui.params.ParamUtils; import com.constellio.model.entities.CorePermissions; import com.constellio.model.entities.records.wrappers.User; import com.constellio.model.entities.security.global.UserCredential; import com.constellio.model.services.users.UserServices; public class ListUserCredentialsPresenter extends BasePresenter<ListUsersCredentialsView> { private transient UserServices userServices; public static final String ACTIVE = "active"; public static final String PENDING = "pending"; public static final String SUSPENDED = "suspended"; public static final String DELETED = "deleted"; public ListUserCredentialsPresenter(ListUsersCredentialsView view) { super(view); init(); } private void init() { userServices = modelLayerFactory.newUserServices(); } public UserCredentialVODataProvider getDataProvider() { UserCredentialToVOBuilder voBuilder = new UserCredentialToVOBuilder(); return new UserCredentialVODataProvider(voBuilder, modelLayerFactory, null); } public void addButtonClicked() { String params = ParamUtils.addParams(NavigatorConfigurationService.USER_LIST, null); view.navigate().to().addUserCredential(params); } public void editButtonClicked(UserCredentialVO entity) { String parameters = getParameters(entity); view.navigate().to().editUserCredential(parameters); } public void displayButtonClicked(UserCredentialVO entity) { String parameters = getParameters(entity); view.navigate().to().displayUserCredential(parameters); } public void backButtonClicked() { view.navigate().to().adminModule(); } private String getParameters(UserCredentialVO entity) { Map<String, Object> params = new HashMap<>(); params.put("username", entity.getUsername()); return ParamUtils.addParams(NavigatorConfigurationService.USER_LIST, params); } public boolean canAddOrModify() { return userServices.canAddOrModifyUserAndGroup(); } public boolean canModifyPassword(String usernameInEdition) { UserCredential userInEdition = userServices.getUserCredential(usernameInEdition); UserCredential currentUser = userServices.getUserCredential(view.getSessionContext().getCurrentUser().getUsername()); return userServices.canModifyPassword(userInEdition, currentUser); } @Override protected boolean hasPageAccess(String params, User user) { return userServices.has(user).globalPermissionInAnyCollection(CorePermissions.MANAGE_SYSTEM_USERS); } public List<String> getTabs() { List<String> tabs = new ArrayList<>(); tabs.add(ACTIVE); tabs.add(PENDING); tabs.add(SUSPENDED); tabs.add(DELETED); return tabs; } public String getTabCaption(String tabId) { switch (tabId){ case ACTIVE: return "Actif"; case PENDING: return "Instance d'approbation"; case SUSPENDED: return "Suspendu"; case DELETED: return "Supprimé"; default: return null; } } }