/**
*
*/
package org.minnal.security.auth;
import java.util.ArrayList;
import java.util.List;
import com.google.common.collect.Lists;
/**
* @author ganeshs
*
*/
public class SimpleAuthorizer implements Authorizer {
private RolePermissionMapper permissionMapper = new SimpleRolePermissionMapper();
private UserRoleMapper roleMapper = new SimpleUserRoleMapper();
/**
* @param permissionMapper
* @param roleMapper
*/
public SimpleAuthorizer(RolePermissionMapper permissionMapper,
UserRoleMapper roleMapper) {
this.permissionMapper = permissionMapper;
this.roleMapper = roleMapper;
}
public SimpleAuthorizer() {
}
@Override
public boolean authorize(User user, List<String> permissions) {
if (user.getRoles() == null || user.getRoles().isEmpty()) {
List<String> roles = roleMapper.getRoles(user);
if (roles != null) {
user.setRoles(roles);
}
}
if (user.getPermissions() == null || user.getPermissions().isEmpty()) {
List<String> perms = new ArrayList<String>();
if (user.getRoles() != null) {
for (String role : user.getRoles()) {
List<String> rolePerms = permissionMapper.getPermissions(role);
if (rolePerms != null) {
perms.addAll(rolePerms);
}
}
}
user.setPermissions(perms);
}
return user.hasPermissions(permissions);
}
/**
* @return the permissionMapper
*/
public RolePermissionMapper getPermissionMapper() {
return permissionMapper;
}
/**
* @param permissionMapper the permissionMapper to set
*/
public void setPermissionMapper(RolePermissionMapper permissionMapper) {
this.permissionMapper = permissionMapper;
}
/**
* @return the roleMapper
*/
public UserRoleMapper getRoleMapper() {
return roleMapper;
}
/**
* @param roleMapper the roleMapper to set
*/
public void setRoleMapper(UserRoleMapper roleMapper) {
this.roleMapper = roleMapper;
}
@Override
public boolean authorize(User user, String permission) {
return authorize(user, Lists.newArrayList(permission));
}
}