Diff
Not logged in

Differences From:

File src/setup.c part of check-in [9c952d247e] - Separate "nobody" and "anonymous" logins. by drh on 2007-07-31 22:59:31. [view]

To:

File src/setup.c part of check-in [fd36718ad9] - Add the new "history" permission. Merge in changes that require permissions to view the timeline. by drh on 2007-07-31 23:33:15. [view]

@@ -113,9 +113,9 @@
     @ <td align="left">%s(db_column_text(&s,3))</td>
     @ </tr>
   }
   @ </table></td></tr></table>
-  @ <p>
+  @ <p style="clear:both">
   @ <b>Notes:</b>
   @ <ol>
   @ <li><p>The permission flags are as follows:</p>
   @ <table>
@@ -122,8 +122,10 @@
   @ <tr><td>a</td><td width="10"></td>
   @     <td>Admin: Create or delete users and ticket report formats</td></tr>
   @ <tr><td>d</td><td></td>
   @     <td>Delete: Erase anonymous wiki, tickets, and attachments</td></tr>
+  @ <tr><td>h</td><td></td>
+  @     <td>History: Access older version of code, tickets, or wiki</td></tr>
   @ <tr><td>i</td><td></td>
   @     <td>Check-in: Add new code to the repository</td></tr>
   @ <tr><td>j</td><td></td><td>Read-Wiki: View wiki pages</td></tr>
   @ <tr><td>k</td><td></td><td>Wiki: Create or modify wiki pages</td></tr>
@@ -154,9 +156,9 @@
 */
 void user_edit(void){
   const char *zId, *zLogin, *zInfo, *zCap;
   char *oaa, *oas, *oar, *oaw, *oan, *oai, *oaj, *oao, *oap ;
-  char *oak, *oad, *oaq, *oac, *oaf, *oam;
+  char *oak, *oad, *oaq, *oac, *oaf, *oam, *oah;
   int doWrite;
   int uid;
   int higherUser = 0;  /* True if user being edited is SETUP and the */
                        /* user doing the editing is ADMIN.  Disallow editing */
@@ -189,9 +191,9 @@
   doWrite = cgi_all("login","info","pw") && !higherUser;
   if( doWrite ){
     const char *zPw;
     const char *zLogin;
-    char zCap[20];
+    char zCap[30];
     int i = 0;
     int aa = P("aa")!=0;
     int ad = P("ad")!=0;
     int ai = P("ai")!=0;
@@ -206,19 +208,14 @@
     int aw = P("aw")!=0;
     int ac = P("ac")!=0;
     int af = P("af")!=0;
     int am = P("am")!=0;
-#if 0
-    if( as ) aa = 1;
-    if( aa ) ai = aw = ap = 1;
-    if( aw ) an = ar = 1;
-    if( ai ) ao = 1;
-    if( ak ) aj = 1;
-#endif
+    int ah = P("ah")!=0;
     if( aa ){ zCap[i++] = 'a'; }
     if( ac ){ zCap[i++] = 'c'; }
     if( ad ){ zCap[i++] = 'd'; }
     if( af ){ zCap[i++] = 'f'; }
+    if( ah ){ zCap[i++] = 'h'; }
     if( ai ){ zCap[i++] = 'i'; }
     if( aj ){ zCap[i++] = 'j'; }
     if( ak ){ zCap[i++] = 'k'; }
     if( am ){ zCap[i++] = 'm'; }
@@ -260,9 +257,9 @@
   */
   zLogin = "";
   zInfo = "";
   zCap = "";
-  oaa = oac = oad = oaf = oai = oaj = oak = oam =
+  oaa = oac = oad = oaf = oah = oai = oaj = oak = oam =
         oan = oao = oap = oaq = oar = oas = oaw = "";
   if( uid ){
     zLogin = db_text("", "SELECT login FROM user WHERE uid=%d", uid);
     zInfo = db_text("", "SELECT info FROM user WHERE uid=%d", uid);
@@ -270,8 +267,9 @@
     if( strchr(zCap, 'a') ) oaa = " checked";
     if( strchr(zCap, 'c') ) oac = " checked";
     if( strchr(zCap, 'd') ) oad = " checked";
     if( strchr(zCap, 'f') ) oaf = " checked";
+    if( strchr(zCap, 'h') ) oah = " checked";
     if( strchr(zCap, 'i') ) oai = " checked";
     if( strchr(zCap, 'j') ) oaj = " checked";
     if( strchr(zCap, 'k') ) oak = " checked";
     if( strchr(zCap, 'm') ) oam = " checked";
@@ -322,8 +320,9 @@
   @     <input type="checkbox" name="ap"%s(oap)>Password</input><br>
   @     <input type="checkbox" name="aq"%s(oaq)>Query</input><br>
   @     <input type="checkbox" name="ai"%s(oai)>Check-In</input><br>
   @     <input type="checkbox" name="ao"%s(oao)>Check-Out</input><br>
+  @     <input type="checkbox" name="ah"%s(oah)>History</input><br>
   @     <input type="checkbox" name="aj"%s(oaj)>Read Wiki</input><br>
   @     <input type="checkbox" name="af"%s(oaf)>New Wiki</input><br>
   @     <input type="checkbox" name="am"%s(oam)>Append Wiki</input><br>
   @     <input type="checkbox" name="ak"%s(oak)>Write Wiki</input><br>
@@ -377,9 +376,11 @@
   @ No login is required for user "<b>nobody</b>".  The capabilities
   @ of this user are available to anyone without supplying a username or
   @ password.  To disable nobody access, make sure there is no user
   @ with an ID of <b>nobody</b> or that the nobody user has no
-  @ capabilities enabled.  The password for the noloing user is ignore.
+  @ capabilities enabled.  The password for nobody is ignore.  To
+  @ avoid problems with spiders overloading the server, it is suggested
+  @ that the 'h' (History) capability be turned off for user nobody.
   @ </p></li>
   @
   @ <li><p>
   @ Login is required for user "<b>anonymous</b>" but the password