Changeset 432

Show
Ignore:
Timestamp:
05/01/06 15:19:52
Author:
douglm
Message:

Fix up access settings to allow read-writecontent.
Also use path to calendar - not id

Files:

Legend:

Unmodified
Added
Removed
Modified
Copied
Moved
  • trunk/calendar3/webcommon/src/org/bedework/webcommon/BwAbstractAction.java

    r419 r432  
    507507 
    508508    if (calId < 0) { 
    509       form.getErr().emit("org.bedework.client.error.missingcalendarid"); 
    510       return null; 
    511     } 
    512  
    513     cal = svci.getCalendar(calId); 
     509      // Try path 
     510      String calPath = request.getParameter("calPath"); 
     511 
     512      if (calPath == null) { 
     513        // bogus request 
     514        form.getErr().emit("org.bedework.client.error.missingcalendarpath"); 
     515        return null; 
     516      } 
     517 
     518      cal = svci.getCalendar(calPath); 
     519    } else { 
     520      cal = svci.getCalendar(calId); 
     521    } 
    514522 
    515523    if (cal == null) { 
  • trunk/calendar3/webcommon/src/org/bedework/webcommon/access/AccessAction.java

    r394 r432  
    7878 * 
    7979 * <p>Request parameters:<ul> 
    80  *      <li>  calId alone:           id of calendar or...</li>. 
    81  *      <li>  calId+guid+recurid:    event</li>. 
    82  *      <li>  how:                   r for read, w for write, 
    83  *                                   f for free/busy, d for default</li>. 
     80 *      <li>  calPath alone:         path (or url) of calendar or...</li>. 
     81 *      <li>  calId+guid+recurid:  event</li>. 
     82 *      <li>  how:                   concateated String of desired access rights 
     83 *                               @see edu.rpi.cct.uwcal.access.PrivilegeDefs </li>. 
    8484 *      <li>  whoType:               user (default), group</li>. 
    8585 *      <li>  who:                   name of principal - default to owner</li>. 
     
    125125      ev = ei.getEvent(); 
    126126    } else { 
    127       int id = getIntReqPar(request, "calId", -1); 
    128  
    129       if (id < 0) { 
     127      String calPath = request.getParameter("calPath"); 
     128 
     129      if (calPath == null) { 
    130130        // bogus request 
    131131        return "notFound"; 
    132132      } 
    133133 
    134       cal = svci.getCalendar(id); 
     134      cal = svci.getCalendar(calPath); 
    135135      if (cal == null) { 
    136         // Do nothing 
    137         form.getErr().emit("org.bedework.client.error.nosuchcalendar", id); 
     136        form.getErr().emit("org.bedework.client.error.nosuchcalendar", calPath); 
    138137        return "notFound"; 
    139138      } 
    140     } 
    141  
    142     String how = getReqPar(request, "how"); 
    143  
    144     if (how == null) { 
    145       form.getErr().emit("org.bedework.client.error.nohowaccess"); 
    146       return "error"; 
    147     } 
    148  
    149     int desiredAccess = -1; 
    150     //boolean defaultAccess = false; 
    151  
    152     if (how.equals("r")) { 
    153       desiredAccess = PrivilegeDefs.privRead; 
    154     } else if (how.equals("w")) { 
    155       desiredAccess = PrivilegeDefs.privWrite; 
    156     } else if (how.equals("f")) { 
    157       desiredAccess = PrivilegeDefs.privReadFreeBusy; 
    158     } else if (how.equals("d")) { 
    159       //defaultAccess = true; 
    160       form.getErr().emit("org.bedework.client.error.unimplemented"); 
    161       return "error"; 
    162     } else { 
    163       form.getErr().emit("org.bedework.client.error.badhow"); 
    164       return "error"; 
    165139    } 
    166140 
     
    200174 
    201175    ArrayList aces = new ArrayList(); 
    202     aces.add(new Ace(who, false, whoType, Privileges.makePriv(desiredAccess))); 
     176 
     177    String how = getReqPar(request, "how"); 
     178 
     179    if (how == null) { 
     180      form.getErr().emit("org.bedework.client.error.nohowaccess"); 
     181      return "error"; 
     182    } 
     183 
     184    char[] howchs = how.toCharArray(); 
     185 
     186    for (int hi = 0; hi <= howchs.length; hi++) { 
     187      char howch = howchs[hi]; 
     188      boolean found = false; 
     189 
     190      for (int pi = 0; pi <= PrivilegeDefs.privMaxType; pi++) { 
     191        if (howch == PrivilegeDefs.privEncoding[pi]) { 
     192          aces.add(new Ace(who, false, whoType, 
     193                           Privileges.makePriv(pi))); 
     194          found = true; 
     195          break; 
     196        } 
     197 
     198        if (!found) { 
     199          form.getErr().emit("org.bedework.client.error.badhow"); 
     200          return "error"; 
     201        } 
     202      } 
     203    } 
     204 
    203205 
    204206    if (ev != null) {