/* * Copyright 2012 LinkedIn Corp. * * Licensed under the Apache 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.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the * License for the specific language governing permissions and limitations under * the License. */ package azkaban.user; import java.util.ArrayList; import java.util.HashMap; import java.util.HashSet; import java.util.List; import java.util.Set; public class User { private final String userid; private String email = ""; private Set<String> roles = new HashSet<String>(); private Set<String> groups = new HashSet<String>(); private UserPermissions userPermissions; private HashMap<String, String> properties = new HashMap<String, String>(); public User(String userid) { this.userid = userid; } public String getUserId() { return userid; } public void setEmail(String email) { this.email = email; } public String getEmail() { return email; } public void setPermissions(UserPermissions checker) { this.userPermissions = checker; } public UserPermissions getPermissions() { return userPermissions; } public boolean hasPermission(String permission) { if (userPermissions == null) { return false; } return this.userPermissions.hasPermission(permission); } public List<String> getGroups() { return new ArrayList<String>(groups); } public void clearGroup() { groups.clear(); } public void addGroup(String name) { groups.add(name); } public boolean isInGroup(String group) { return this.groups.contains(group); } public List<String> getRoles() { return new ArrayList<String>(roles); } public void addRole(String role) { this.roles.add(role); } public boolean hasRole(String role) { return roles.contains(role); } public String getProperty(String name) { return properties.get(name); } @Override public String toString() { String groupStr = "["; for (String group : groups) { groupStr += group + ","; } groupStr += "]"; return userid + ": " + groupStr; } @Override public int hashCode() { final int prime = 31; int result = 1; result = prime * result + ((userid == null) ? 0 : userid.hashCode()); return result; } @Override public boolean equals(Object obj) { if (this == obj) return true; if (obj == null) return false; if (getClass() != obj.getClass()) return false; User other = (User) obj; if (userid == null) { if (other.userid != null) return false; } else if (!userid.equals(other.userid)) return false; return true; } public static interface UserPermissions { public boolean hasPermission(String permission); public void addPermission(String permission); } public static class DefaultUserPermission implements UserPermissions { Set<String> permissions; public DefaultUserPermission() { this(new HashSet<String>()); } public DefaultUserPermission(Set<String> permissions) { this.permissions = permissions; } @Override public boolean hasPermission(String permission) { return permissions.contains(permission); } @Override public void addPermission(String permission) { permissions.add(permission); } } }