Package com.esri.gpt.framework.jsf

Source Code of com.esri.gpt.framework.jsf.RoleMap

/* See the NOTICE file distributed with
* this work for additional information regarding copyright ownership.
* Esri Inc. licenses this file to You 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 com.esri.gpt.framework.jsf;
import com.esri.gpt.framework.security.identity.AuthenticationStatus;
import com.esri.gpt.framework.security.principal.RoleSet;
import com.esri.gpt.framework.security.principal.User;
import com.esri.gpt.framework.util.Val;

/**
* Provides a Map interface for setting the rendered attribute of a
* Faces component based upon a supplied role key.
* <p>Example:<br/>
* rendered="#{PageContext.roleMap['someRole']}"
*/
public class RoleMap extends FacesMap<Boolean> {
 
// class variables =============================================================

// instance variables ==========================================================
private User _activeUser;
 
// constructors ================================================================
/**
* Constructs based upon a supplied user.
* @param activeUser the user associated with the active request
*/
public RoleMap(User activeUser) {
  _activeUser = activeUser;
  if (_activeUser == null) {
    _activeUser = new User();
  }
}

// properties ==================================================================

// methods =====================================================================

/**
* Implements the "get" method for a Map to determine if the active user has
* a specified role.
* <p>The supplied role String is tokenized with the following 3 delimiters:
* <br/> semi-colon comma space
* <br/>If the has any specified role, Boolean.TRUE is returned.
* @param role the role(s) to check (must be a String)
* @return Boolean.TRUE if the active user has the specified role
*/
@Override
public Boolean get(Object role) {
  AuthenticationStatus authStatus = _activeUser.getAuthenticationStatus();
  RoleSet authRoles = _activeUser.getAuthenticationStatus().getAuthenticatedRoles();
  if ((role != null) && (role instanceof String)) {
    String sRole = Val.chkStr((String)role);
    boolean bAnonymous = !authStatus.getWasAuthenticated();
    if (sRole.equalsIgnoreCase("anonymous")) {
      return new Boolean(bAnonymous);
    } else if (!bAnonymous) {
      if (sRole.equalsIgnoreCase("openid")) {
        return Val.chkStr(_activeUser.getKey()).startsWith("urn:openid:");
      } else {
        RoleSet rs = new RoleSet();
        rs.addDelimited(sRole);
        return new Boolean(authRoles.hasRole(rs));
      }
    }
  }
  return Boolean.FALSE;
}

}
TOP

Related Classes of com.esri.gpt.framework.jsf.RoleMap

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.