/*
* Copyright (c) 2015 EMC Corporation
* All Rights Reserved
*/
package models.datatable;
import java.net.URI;
import models.RoleAssignmentType;
import org.apache.commons.lang.StringUtils;
import play.mvc.With;
import util.RoleAssignmentUtils;
import util.datatable.DataTable;
import com.emc.storageos.model.auth.RoleAssignmentEntry;
import controllers.Common;
import controllers.deadbolt.Restrict;
import controllers.deadbolt.Restrictions;
import controllers.security.Security;
import controllers.tenant.Tenants.TenantRoleAssignmentForm;
@With(Common.class)
@Restrictions({ @Restrict("SECURITY_ADMIN"), @Restrict("TENANT_ADMIN") })
public class TenantRoleAssignmentDataTable extends DataTable {
public TenantRoleAssignmentDataTable(URI tenantId) {
addColumn("name").setRenderFunction("renderLink");
addColumn("type").hidden().setSearchable(false);
addColumn("localizedType");
if (Security.isTenantAdmin() || Security.isSecurityAdmin()) {
addColumn("tenantRoles");
}
sortAll();
setDefaultSortField("name");
}
public static class RoleInfo {
public String id;
public String name;
public RoleAssignmentType type;
public String localizedType;
public String tenantRoles;
public String tenantId;
public RoleInfo(RoleAssignmentEntry roleAssignment, String tenantId) {
this.tenantId = tenantId;
if (StringUtils.isNotBlank(roleAssignment.getSubjectId())) {
name = roleAssignment.getSubjectId();
type = RoleAssignmentType.USER;
localizedType = RoleAssignmentType.USER.getDisplayName();
}
else {
name = roleAssignment.getGroup();
type = RoleAssignmentType.GROUP;
localizedType = RoleAssignmentType.GROUP.getDisplayName();
}
id = TenantRoleAssignmentForm.createId(tenantId, name, type);
tenantRoles = "";
if (roleAssignment.getRoles() != null) {
for (String role : roleAssignment.getRoles()) {
tenantRoles = addRole(role, tenantRoles);
}
}
}
private String addRole(String role, String value) {
if (value.length() > 0) {
value += ", ";
}
value += RoleAssignmentUtils.getRoleDisplayName(role);
return value;
}
}
}