/**
* Copyright (C) 2013 - present by OpenGamma Inc. and the OpenGamma group of companies
*
* Please see distribution for license.
*/
package com.opengamma.engine.view.client;
import static com.opengamma.engine.view.permission.PortfolioPermission.ALLOW;
import static com.opengamma.engine.view.permission.PortfolioPermission.DENY;
import java.util.Map;
import com.opengamma.core.position.PortfolioNode;
import com.opengamma.engine.view.permission.PortfolioPermission;
import com.opengamma.livedata.UserPrincipal;
/**
* Permissions checker for portfolio node based on user access rules.
*/
public class UserPermissionNodeChecker implements NodeChecker {
/**
* The map of restricted node names and who they are restricted to.
*/
private final Map<String, String> _restrictedNodes;
/**
* The current system user.
*/
private final UserPrincipal _user;
public UserPermissionNodeChecker(Map<String, String> restrictedNodes, UserPrincipal user) {
_restrictedNodes = restrictedNodes;
_user = user;
}
@Override
public PortfolioPermission check(PortfolioNode node) {
return portfolioIsRestricted(node) && userIsDeniedAccess(node) ?
DENY : ALLOW;
}
private boolean userIsDeniedAccess(PortfolioNode node) {
return !_user.getUserName().equals(_restrictedNodes.get(node.getName()));
}
private boolean portfolioIsRestricted(PortfolioNode node) {
return _restrictedNodes.containsKey(node.getName());
}
}