package org.yamcs.security; import java.util.Date; import java.util.Set; /** * Created by msc on 05/05/15. */ public class User { AuthenticationToken authenticationToken; long lastUpdated; boolean authenticated = false; boolean rolesAndPriviledgesLoaded = false; Set<String> roles; Set<String> tmParaPrivileges; Set<String> tmParaSetPrivileges; Set<String> tmPacketPrivileges; Set<String> tcPrivileges; Set<String> systemPrivileges; public Set<String> getTmParaPrivileges() { return tmParaPrivileges; } public Set<String> getTmParaSetPrivileges() { return tmParaSetPrivileges; } public Set<String> getTmPacketPrivileges() { return tmPacketPrivileges; } public Set<String> getTcPrivileges() { return tcPrivileges; } public Set<String> getSystemPrivileges() { return systemPrivileges; } /** * Constructor * @param authenticationToken */ public User(AuthenticationToken authenticationToken) { this.authenticationToken = authenticationToken; } /** * Getters * @return */ public AuthenticationToken getAuthenticationToken() { return authenticationToken; } public String getPrincipalName() { Object principal = authenticationToken.getPrincipal(); return principal != null? principal.toString() : null; } /** * * @return the roles of the calling user */ public String[] getRoles() { if(roles == null) return new String[0]; return roles.toArray(new String[roles.size()]); } public boolean hasRole(String role ) { if(this.roles==null) return false; return (this.roles.contains( role ) ); } public boolean hasPrivilege(Privilege.Type type, String privilege) { Set<String> priv = null; if(privilege == null) return true; switch (type) { case TM_PARAMETER: priv = this.tmParaPrivileges; break; case TM_PARAMETER_SET: priv = this.tmParaSetPrivileges; break; case TC: priv = this.tcPrivileges; break; case TM_PACKET: priv = this.tmPacketPrivileges; break; case SYSTEM: priv = this.systemPrivileges; } if (priv == null) return false; for (String p : priv) { if (privilege.matches(p)) return true; } return false; } @Override public String toString() { return "User:" + authenticationToken.getPrincipal().toString() + "\n authenticated: " + authenticated + "\n roles: " + roles + "\n tm parameter privileges:" + tmParaPrivileges + "\n tm parameter set privileges:" + tmParaSetPrivileges + "\n tm packet privileges:" + tmPacketPrivileges + "\n tc privileges:" + tcPrivileges + "\n system privileges:" + systemPrivileges + "\n lastUpdated:" + new Date(lastUpdated); } public boolean isAuthenticated() { return authenticated; } public void setAuthenticated(boolean authenticated) { this.authenticated = authenticated; } }