//////////////////////////////////////////////////////////////////////// // // Copyright (c) 2009-2013 Denim Group, Ltd. // // The contents of this file are subject to the Mozilla Public License // Version 2.0 (the "License"); you may not use this file except in // compliance with the License. You may obtain a copy of the License at // http://www.mozilla.org/MPL/ // // Software distributed under the License is distributed on an "AS IS" // basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See the // License for the specific language governing rights and limitations // under the License. // // The Original Code is ThreadFix. // // The Initial Developer of the Original Code is Denim Group, Ltd. // Portions created by Denim Group, Ltd. are Copyright (C) // Denim Group, Ltd. All Rights Reserved. // // Contributor(s): Denim Group, Ltd. // //////////////////////////////////////////////////////////////////////// package com.denimgroup.threadfix.data.entities; import java.util.HashSet; import java.util.Set; import javax.persistence.Column; import javax.persistence.Entity; import javax.persistence.Table; import javax.persistence.Transient; import javax.validation.constraints.Size; import org.hibernate.validator.constraints.NotEmpty; @Entity @Table(name = "Role") public class Role extends AuditableEntity { public static final String USER = "ROLE_USER"; public static final int NAME_LENGTH = 25; public static final int DISPLAY_NAME_LENGTH = 25; private static final long serialVersionUID = -1609499610449048270L; private Boolean canGenerateReports, canGenerateWafRules, canManageApiKeys, canManageApplications, canManageDefectTrackers, canManageRemoteProviders, canManageRoles, canManageTeams, canManageUsers, canManageWafs, canModifyVulnerabilities, canSubmitDefects, canUploadScans, canViewErrorLogs, canViewJobStatuses; public static final String[] PROTECTED_PERMISSIONS = new String[]{ "canManageRoles", "canManageUsers" }; public static final String[] ALL_PERMISSIONS = new String[] { "canManageUsers", "canManageRoles", "canManageTeams", "canManageDefectTrackers", "canModifyVulnerabilities", "canUploadScans", "canViewErrorLogs", "canSubmitDefects", "canManageWafs", "canGenerateWafRules", "canManageApiKeys", "canManageRemoteProviders", "canGenerateReports", "canViewJobStatuses", "canManageApplications" }; @NotEmpty(message = "{errors.required}") @Size(max = DISPLAY_NAME_LENGTH, message = "{errors.maxlength}" + DISPLAY_NAME_LENGTH) private String displayName; @Column(length = DISPLAY_NAME_LENGTH, nullable = false) public String getDisplayName() { return displayName; } public void setDisplayName(String displayName) { this.displayName = displayName; } @Column public Boolean getCanGenerateReports() { return canGenerateReports != null && canGenerateReports; } public void setCanGenerateReports(Boolean canGenerateReports) { this.canGenerateReports = canGenerateReports; } @Column public Boolean getCanGenerateWafRules() { return canGenerateWafRules != null && canGenerateWafRules; } public void setCanGenerateWafRules(Boolean canGenerateWafRules) { this.canGenerateWafRules = canGenerateWafRules; } @Column public Boolean getCanManageApiKeys() { return canManageApiKeys != null && canManageApiKeys; } public void setCanManageApiKeys(Boolean canManageApiKeys) { this.canManageApiKeys = canManageApiKeys; } @Column public Boolean getCanManageApplications() { return canManageApplications != null && canManageApplications; } public void setCanManageApplications(Boolean canManageApplications) { this.canManageApplications = canManageApplications; } @Column public Boolean getCanManageDefectTrackers() { return canManageDefectTrackers != null && canManageDefectTrackers; } public void setCanManageDefectTrackers(Boolean canManageDefectTrackers) { this.canManageDefectTrackers = canManageDefectTrackers; } @Column public Boolean getCanManageRemoteProviders() { return canManageRemoteProviders != null && canManageRemoteProviders; } public void setCanManageRemoteProviders(Boolean canManageRemoteProviders) { this.canManageRemoteProviders = canManageRemoteProviders; } @Column public Boolean getCanManageRoles() { return canManageRoles != null && canManageRoles; } public void setCanManageRoles(Boolean canManageRoles) { this.canManageRoles = canManageRoles; } @Column public Boolean getCanManageTeams() { return canManageTeams != null && canManageTeams; } public void setCanManageTeams(Boolean canManageTeams) { this.canManageTeams = canManageTeams; } @Column public Boolean getCanManageUsers() { return canManageUsers != null && canManageUsers; } public void setCanManageUsers(Boolean canManageUsers) { this.canManageUsers = canManageUsers; } @Column public Boolean getCanManageWafs() { return canManageWafs != null && canManageWafs; } public void setCanManageWafs(Boolean canManageWafs) { this.canManageWafs = canManageWafs; } @Column public Boolean getCanModifyVulnerabilities() { return canModifyVulnerabilities != null && canModifyVulnerabilities; } public void setCanModifyVulnerabilities(Boolean canModifyVulnerabilities) { this.canModifyVulnerabilities = canModifyVulnerabilities; } @Column public Boolean getCanSubmitDefects() { return canSubmitDefects != null && canSubmitDefects; } public void setCanSubmitDefects(Boolean canSubmitDefects) { this.canSubmitDefects = canSubmitDefects; } @Column public Boolean getCanUploadScans() { return canUploadScans != null && canUploadScans; } public void setCanUploadScans(Boolean canUploadScans) { this.canUploadScans = canUploadScans; } @Column public Boolean getCanViewErrorLogs() { return canViewErrorLogs != null && canViewErrorLogs; } public void setCanViewErrorLogs(Boolean canViewErrorLogs) { this.canViewErrorLogs = canViewErrorLogs; } @Column public Boolean getCanViewJobStatuses() { return canViewJobStatuses != null && canViewJobStatuses; } public void setCanViewJobStatuses(Boolean canViewJobStatuses) { this.canViewJobStatuses = canViewJobStatuses; } @Transient public Set<Permission> getPermissions() { Set<Permission> permissions = new HashSet<Permission>(); if (getCanGenerateReports()) permissions.add(Permission.CAN_GENERATE_REPORTS); if (getCanGenerateWafRules()) permissions.add(Permission.CAN_GENERATE_WAF_RULES); if (getCanManageApiKeys()) permissions.add(Permission.CAN_MANAGE_API_KEYS); if (getCanManageApplications()) permissions.add(Permission.CAN_MANAGE_APPLICATIONS); if (getCanManageDefectTrackers()) permissions.add(Permission.CAN_MANAGE_DEFECT_TRACKERS); if (getCanManageRemoteProviders()) permissions.add(Permission.CAN_MANAGE_REMOTE_PROVIDERS); if (getCanManageRoles()) permissions.add(Permission.CAN_MANAGE_ROLES); if (getCanManageTeams()) permissions.add(Permission.CAN_MANAGE_TEAMS); if (getCanManageUsers()) permissions.add(Permission.CAN_MANAGE_USERS); if (getCanManageWafs()) permissions.add(Permission.CAN_MANAGE_WAFS); if (getCanModifyVulnerabilities()) permissions.add(Permission.CAN_MODIFY_VULNERABILITIES); if (getCanSubmitDefects()) permissions.add(Permission.CAN_SUBMIT_DEFECTS); if (getCanUploadScans()) permissions.add(Permission.CAN_UPLOAD_SCANS); if (getCanViewErrorLogs()) permissions.add(Permission.CAN_VIEW_ERROR_LOGS); if (getCanViewJobStatuses()) permissions.add(Permission.CAN_VIEW_JOB_STATUSES); return permissions; } boolean canDelete = false; @Transient public boolean isCanDelete() { return canDelete; } public void setCanDelete(boolean canDelete) { this.canDelete = canDelete; } }