예제 #1
0
  /**
   * Login as the admin user so that a yazd user account can be administered.
   *
   * <p>Includes body of tag if admin user was authorized based on the yazd.tag.properties
   * yazd.admin.username and yazd.admin.password, and a valid yazd username was found in the HTTP
   * input parameter "username".
   *
   * @throws JspException on system level error
   * @return <b>SKIP_BODY</b> on failure to authorize as admin user or user to administer could not
   *     be found, <b>EVAL_BODY_INCLUDE</b> if admin succeeded
   */
  public final int doStartTag() throws JspException {
    // Initialize YazdState
    js = (YazdState) pageContext.getAttribute("yazdUserState", PageContext.SESSION_SCOPE);
    if (js == null) {
      throw new JspException("Yazd admin tag could not get yazd state.");
    }

    // Initialize YazdRequest
    jr = (YazdRequest) pageContext.getAttribute("yazdUserRequest", PageContext.REQUEST_SCOPE);
    if (jr == null) {
      throw new JspException("Yazd admin tag could not get yazd request.");
    }

    // Get username and password of admin
    String username = TagPropertyManager.getTagProperty("yazd.admin.username");
    String password = TagPropertyManager.getTagProperty("yazd.admin.password");
    if (username == null || username.length() == 0 || password == null || password.length() == 0)
      return SKIP_BODY;

    // Get admin user authorization
    try {
      auth = AuthorizationFactory.getAuthorization(username, password);
    } catch (UnauthorizedException ue) {
      return SKIP_BODY;
    }

    // Get the user to administer from the "username" HTTP input parameter
    ServletRequest req = pageContext.getRequest();
    String tmp;
    if ((tmp = req.getParameter("username")) != null) return SKIP_BODY;

    try {
      ForumFactory ff = ForumFactory.getInstance(auth);
      ProfileManager pm = ff.getProfileManager();
      user = pm.getUser(tmp);
    } catch (Exception e) {
    }

    if (user == null) {
      jr.addError("User \"" + tmp + "\" not found");
      return SKIP_BODY;
    }

    return EVAL_BODY_INCLUDE;
  }