File Source: MembersInvite.java

     1  /*
     2   * Licensed to the Apache Software Foundation (ASF) under one or more
     3   *  contributor license agreements.  The ASF licenses this file to You
     4   * under the Apache License, Version 2.0 (the "License"); you may not
     5   * use this file except in compliance with the License.
     6   * You may obtain a copy of the License at
     7   *
     8   *     http://www.apache.org/licenses/LICENSE-2.0
     9   *
    10   * Unless required by applicable law or agreed to in writing, software
    11   * distributed under the License is distributed on an "AS IS" BASIS,
    12   * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
    13   * See the License for the specific language governing permissions and
    14   * limitations under the License.  For additional information regarding
    15   * copyright in this work, please see the NOTICE file in the top level
    16   * directory of this distribution.
    17   */
    18  
    19  package org.apache.roller.weblogger.ui.struts2.editor;
    20  
    21  import org.apache.commons.logging.Log;
    22  import org.apache.commons.logging.LogFactory;
    23  import org.apache.roller.weblogger.WebloggerException;
    24  import org.apache.roller.weblogger.config.WebloggerConfig;
    25  import org.apache.roller.weblogger.business.WebloggerFactory;
    26  import org.apache.roller.weblogger.business.UserManager;
    27  import org.apache.roller.weblogger.pojos.WeblogPermission;
    28  import org.apache.roller.weblogger.pojos.User;
    29  import org.apache.roller.weblogger.ui.struts2.util.UIAction;
    30  import org.apache.roller.weblogger.util.MailUtil;
    31  
    32  
    33  /**
    34   * Allows website admin to invite new members to website.
    35   *
    36   * TODO: handle 'disabled' result
    37   */
    38  public class MembersInvite extends UIAction {
    39      
             /* 
    P/P       *  Method: org.apache.roller.weblogger.ui.struts2.editor.MembersInvite__static_init
              * 
              *  Postconditions:
              *    init'ed(log)
              */
    40      private static Log log = LogFactory.getLog(MembersInvite.class);
    41      
    42      // user being invited
    43      private String userName = null;
    44      
    45      // permissions being given to user
    46      private String permissionsMask = null;
    47      
    48      
             /* 
    P/P       *  Method: void org.apache.roller.weblogger.ui.struts2.editor.MembersInvite()
              * 
              *  Postconditions:
              *    this.actionName == &"invite"
              *    this.desiredMenu == &"editor"
              *    this.pageTitle == &"inviteMember.title"
              *    this.permissionsMask == null
              *    this.userName == null
              */
    49      public MembersInvite() {
    50          this.actionName = "invite";
    51          this.desiredMenu = "editor";
    52          this.pageTitle = "inviteMember.title";
    53      }
    54      
    55      
    56      // admin perms required
    57      public short requiredWeblogPermissions() {
                 /* 
    P/P           *  Method: short requiredWeblogPermissions()
                  * 
                  *  Presumptions:
                  *    init'ed(org.apache.roller.weblogger.pojos.WeblogPermission.ADMIN)
                  * 
                  *  Postconditions:
                  *    return_value == org.apache.roller.weblogger.pojos.WeblogPermission.ADMIN
                  *    (soft) init'ed(return_value)
                  */
    58          return WeblogPermission.ADMIN;
    59      }
    60      
    61      
    62      public String execute() {
    63          
    64          // if group blogging is disabled then you can't change permissions
                 /* 
    P/P           *  Method: String execute()
                  * 
                  *  Preconditions:
                  *    (soft) log != null
                  * 
                  *  Postconditions:
                  *    return_value in Addr_Set{&"input",&"success"}
                  * 
                  *  Test Vectors:
                  *    org.apache.roller.weblogger.config.WebloggerConfig:getBooleanProperty(...)@65: {1}, {0}
                  */
    65          if (!WebloggerConfig.getBooleanProperty("groupblogging.enabled")) {
    66              // TODO: i18n
    67              addError("invitations disabled");
    68              return SUCCESS;
    69          }
    70          
    71          log.debug("Showing weblog inivitation form");
    72          
    73          return INPUT;
    74      }
    75      
    76      
    77      /**
    78       * Save the new invitation and notify the user.
    79       */
    80      public String save() {
    81          
    82          // if group blogging is disabled then you can't change permissions
                 /* 
    P/P           *  Method: String save()
                  * 
                  *  Preconditions:
                  *    (soft) log != null
                  *    (soft) init'ed(this.permissionsMask)
                  *    (soft) init'ed(this.userName)
                  * 
                  *  Presumptions:
                  *    org.apache.roller.weblogger.business.Weblogger:getUserManager(...)@91 != null
                  *    org.apache.roller.weblogger.business.WebloggerFactory:getWeblogger(...)@131 != null
                  *    org.apache.roller.weblogger.business.WebloggerFactory:getWeblogger(...)@91 != null
                  *    org.apache.roller.weblogger.ui.struts2.editor.MembersInvite:getActionWeblog(...)@122 != null
                  * 
                  *  Postconditions:
                  *    return_value in Addr_Set{&"success",&"input"}
                  * 
                  *  Test Vectors:
                  *    org.apache.roller.weblogger.business.UserManager:getPermissions(...)@113: Addr_Set{null}, Inverse{null}
                  *    org.apache.roller.weblogger.business.UserManager:getUserByUserName(...)@96: Inverse{null}, Addr_Set{null}
                  *    org.apache.roller.weblogger.config.WebloggerConfig:getBooleanProperty(...)@83: {1}, {0}
                  *    org.apache.roller.weblogger.pojos.WeblogPermission:isPending(...)@115: {0}, {1}
                  *    org.apache.roller.weblogger.ui.struts2.editor.MembersInvite:hasActionErrors(...)@107: {0}, {1}
                  *    org.apache.roller.weblogger.ui.struts2.editor.MembersInvite:hasActionErrors(...)@128: {1}, {0}
                  *    org.apache.roller.weblogger.util.MailUtil:isMailConfigured(...)@135: {0}, {1}
                  */
    83          if (!WebloggerConfig.getBooleanProperty("groupblogging.enabled")) {
    84              // TODO: i18n
    85              addError("invitations disabled");
    86              return SUCCESS;
    87          }
    88          
    89          log.debug("Attempting to process weblog invitation");
    90          
    91          UserManager umgr = WebloggerFactory.getWeblogger().getUserManager();
    92          
    93          // user being invited
    94          User user = null;
    95          try {
    96              user = umgr.getUserByUserName(getUserName());
    97              if (user == null) {
    98                  addError("inviteMember.error.userNotFound");
    99              }
   100          } catch(WebloggerException ex) {
   101              log.error("Error looking up user by id - "+getUserName(), ex);
   102              // TODO: i18n
   103              addError("Error looking up invitee");
   104          }
   105          
   106          // if we already have an error then bail now
   107          if(hasActionErrors()) {
   108              return INPUT;
   109          }
   110          
   111          // check for existing permissions or invitation
   112          try {
   113              WeblogPermission perms = umgr.getPermissions(getActionWeblog(), user);
   114              
   115              if (perms != null && perms.isPending()) {
   116                  addError("inviteMember.error.userAlreadyInvited");
   117              } else if (perms != null) {
   118                  addError("inviteMember.error.userAlreadyMember");
   119              }
   120              
   121          } catch (WebloggerException ex) {
   122              log.error("Error looking up permissions for weblog - "+getActionWeblog().getHandle(), ex);
   123              // TODO: i18n
   124              addError("Error checking existing permissions");
   125          }
   126          
   127          // if no errors then send the invitation
   128          if(!hasActionErrors()) try {
   129              
   130              umgr.inviteUser(getActionWeblog(), user, Short.parseShort(getPermissionsMask()));
   131              WebloggerFactory.getWeblogger().flush();
   132              
   133              addMessage("inviteMember.userInvited");
   134              
   135              if (MailUtil.isMailConfigured()) try {
   136                  MailUtil.sendWeblogInvitation(getActionWeblog(), user);
   137              } catch (WebloggerException e) {
   138                  // TODO: this should be an error except that struts2 misbehaves
   139                  // when we chain this action to the next one thinking that an error
   140                  // means that validation broke during the chain
   141                  addMessage("error.untranslated", e.getMessage());
   142              }
   143              
   144              log.debug("Invitation successfully recorded");
   145              
   146              return SUCCESS;
   147              
   148          } catch (Exception ex) {
   149              log.error("Error creating user invitation", ex);
   150              // TODO: i18n
   151              addError("Error creating user invitation");
   152          }
   153          
   154          log.debug("Invitation had errors, giving user another chance");
   155          
   156          return INPUT;
   157      }
   158      
   159  
   160      public String getUserName() {
                 /* 
    P/P           *  Method: String getUserName()
                  * 
                  *  Preconditions:
                  *    init'ed(this.userName)
                  * 
                  *  Postconditions:
                  *    return_value == this.userName
                  *    init'ed(return_value)
                  */
   161          return userName;
   162      }
   163  
   164      public void setUserName(String userId) {
                 /* 
    P/P           *  Method: void setUserName(String)
                  * 
                  *  Postconditions:
                  *    this.userName == userId
                  *    init'ed(this.userName)
                  */
   165          this.userName = userId;
   166      }
   167  
   168      public String getPermissionsMask() {
                 /* 
    P/P           *  Method: String getPermissionsMask()
                  * 
                  *  Preconditions:
                  *    init'ed(this.permissionsMask)
                  * 
                  *  Postconditions:
                  *    return_value == this.permissionsMask
                  *    init'ed(return_value)
                  */
   169          return permissionsMask;
   170      }
   171  
   172      public void setPermissionsMask(String permission) {
                 /* 
    P/P           *  Method: void setPermissionsMask(String)
                  * 
                  *  Postconditions:
                  *    this.permissionsMask == permission
                  *    init'ed(this.permissionsMask)
                  */
   173          this.permissionsMask = permission;
   174      }
   175      
   176  }








SofCheck Inspector Build Version : 2.18479
MembersInvite.java 2009-Jan-02 14:25:08
MembersInvite.class 2009-Sep-04 03:12:45