<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <%@ page trimDirectiveWhitespaces="true" %> <%@ page import="org.crosswire.utils.Utils" %> <%@ page import="org.crosswire.utils.Sessions" %> <%@ page import="org.crosswire.utils.HTTPUtils" %> <%@ page import="org.crosswire.community.projects.ntmss.data.ProjectManagement" %> <%@ page import="org.crosswire.community.projects.ntmss.data.ProjectManagement.Project" %> <%@ page import="org.crosswire.community.RightsAndRoles" %> <%@ page import="org.crosswire.community.RightsAndRoles.User" %> <%@ page import="org.crosswire.community.RightsAndRoles.UserGroup" %> <%@ page import="java.util.HashMap" %> <%@ page import="org.apache.log4j.Logger" %> <% Logger logger = Logger.getLogger("auth/hasrole"); // ok, so, we support all kinds of crazy combinations here of: // user(userName, userID, none- currently logged in user), and // userGroup(userGroupID, userGroupName, projectID) String sessionHash = RightsAndRoles.getInstance().getCurrentSession(request, response); String userGroupName = request.getParameter("userGroupName"); long userID = -1; try { userID = (int)((Long)Sessions.getInstance().getSessionAttribute(sessionHash, "userID")).longValue(); } catch (Exception e) {} int userGroupID = -1; try { userGroupID = Integer.parseInt(request.getParameter("userGroupID")); } catch (Exception e) {} int projectID = -1; try { projectID = Integer.parseInt(request.getParameter("projectID")); } catch (Exception e) {} String userName = request.getParameter("userName"); if (userName != null) { userName = new String(userName.getBytes("iso8859-1"), "UTF-8"); } else userName = (String)Sessions.getInstance().getSessionAttribute(sessionHash, "userName"); String role = request.getParameter("role"); if (role != null) role = new String(role.getBytes("iso8859-1"), "UTF-8"); User user = (userID > -1) ? RightsAndRoles.getInstance().getUser(userID) : RightsAndRoles.getInstance().getUser(userName); if (role != null) { if (projectID != -1) { Project project = ProjectManagement.getProject(projectID); if (project != null) userGroupName = project.getProjectName(); } String userGroupOut = ""; response.setContentType("text/xml"); if (user != null) { UserGroup userGroup = null; if (userGroupName != null) { } if (userGroupName != null) { userGroup = RightsAndRoles.getInstance().getUserGroup(userGroupName); } else if (userGroupID > -1) { userGroup = RightsAndRoles.getInstance().getUserGroup(userGroupID); } boolean hasRole = user.hasRole(role, userGroup); if (userGroup != null) userGroupOut = " userGroupName=\""+userGroup.getUserGroupName()+"\""; // NB: "Referer" below is misspelled properly, according to the RFC logger.info("auth/hasrole: from: " + request.getHeader("Referer") + "; userID: " + userID + "; userName: " + userName + "; role: " + role + "; projectID: " + projectID + "; userGroupName: " + userGroupName + "; userGroupID: " + userGroupID + "; sessionHash:" + sessionHash + ": " + hasRole); %> hasRole="<%= hasRole %>" /> <% } else { %> <% } return; } %>

auth/hasrole

Check if user has been granted a particular role

Parameters

sessionHashsession hash given from auth/session/open
rolerole name
userName(optional; default: self) userName to check
userGroupName(optional) role within a group
userGroupID(optional) role within a group
projectID(optional) role within a group