package com.constellio.app.ui.pages.management.permissions;
import static com.constellio.app.ui.i18n.i18n.$;
import java.util.ArrayList;
import java.util.List;
import com.constellio.app.ui.entities.RoleVO;
import com.constellio.app.ui.pages.base.BasePresenter;
import com.constellio.model.entities.CorePermissions;
import com.constellio.model.entities.records.wrappers.User;
import com.constellio.model.entities.security.Role;
import com.constellio.model.services.extensions.ConstellioModulesManager;
import com.constellio.model.services.security.roles.RolesManager;
public class PermissionsManagementPresenter extends BasePresenter<PermissionsManagementView> {
public PermissionsManagementPresenter(PermissionsManagementView view) {
super(view);
}
@Override
protected boolean hasPageAccess(String params, User user) {
return user.has(CorePermissions.MANAGE_SECURITY).globally();
}
public List<String> getPermissionGroups() {
return moduleManager().getPermissionGroups(view.getCollection());
}
public List<String> getPermissionsInGroup(String group) {
return moduleManager().getPermissionsInGroup(view.getCollection(), group);
}
public List<RoleVO> getRoles() {
List<RoleVO> result = new ArrayList<>();
for (Role role : roleManager().getAllRoles(view.getCollection())) {
result.add(new RoleVO(role.getCode(), role.getTitle(), role.getOperationPermissions()));
}
return result;
}
public void roleCreationRequested(RoleVO roleVO) {
Role role = new Role(view.getCollection(), roleVO.getCode(), roleVO.getTitle(), roleVO.getPermissions());
roleManager().addRole(role);
view.addRole(roleVO);
}
public void saveRequested(List<RoleVO> modifiedRoles) {
for (RoleVO roleVO : modifiedRoles) {
Role role = roleManager().getRole(view.getCollection(), roleVO.getCode())
.withPermissions(roleVO.getPermissions());
roleManager().updateRole(role);
roleVO.markClean();
}
view.setSaveAndRevertButtonStatus(false);
view.refreshView();
view.showMessage($("PermissionsManagementView.rolesSaved"));
}
public void revertRequested() {
view.setSaveAndRevertButtonStatus(false);
view.refreshView();
}
public void permissionsChanged(boolean dirty) {
view.setSaveAndRevertButtonStatus(dirty);
}
private ConstellioModulesManager moduleManager() {
return appLayerFactory.getModulesManager();
}
private RolesManager roleManager() {
return modelLayerFactory.getRolesManager();
}
}