Diff
Not logged in

Differences From:

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

To:

File src/login.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]

@@ -261,18 +261,22 @@
   if( zCap==0 ){
     if( uid ){
       Stmt s;
       db_prepare(&s, "SELECT login, cap FROM user WHERE uid=%d", uid);
-      db_step(&s);
-      g.zLogin = db_column_malloc(&s, 0);
-      zCap = db_column_malloc(&s, 1);
+      if( db_step(&s)==SQLITE_ROW ){
+        g.zLogin = db_column_malloc(&s, 0);
+        zCap = db_column_malloc(&s, 1);
+      }
       db_finalize(&s);
     }
     if( zCap==0 ){
       zCap = "";
     }
   }
   g.userUid = uid;
+  if( g.zLogin && strcmp(g.zLogin,"nobody")==0 ){
+    g.zLogin = 0;
+  }
   login_set_capabilities(zCap);
 }
 
 /*
@@ -283,14 +287,15 @@
   for(i=0; zCap[i]; i++){
     switch( zCap[i] ){
       case 's':   g.okSetup = g.okDelete = 1;
       case 'a':   g.okAdmin = g.okRdTkt = g.okWrTkt = g.okQuery =
-                              g.okRdWiki = g.okWrWiki =
+                              g.okRdWiki = g.okWrWiki = g.okHistory =
                               g.okNewTkt = g.okPassword = 1;
       case 'i':   g.okRead = g.okWrite = 1;                     break;
       case 'o':   g.okRead = 1;                                 break;
 
       case 'd':   g.okDelete = 1;                               break;
+      case 'h':   g.okHistory = 1;                              break;
       case 'p':   g.okPassword = 1;                             break;
       case 'q':   g.okQuery = 1;                                break;
 
       case 'j':   g.okRdWiki = 1;                               break;
@@ -312,8 +317,8 @@
 ** a redirect to the "login" page.
 */
 void login_needed(void){
   const char *zUrl = PD("REQUEST_URI", "index");
-  cgi_redirect(mprintf("login?nxp=%T", zUrl));
+  cgi_redirect(mprintf("login?g=%T", zUrl));
   /* NOTREACHED */
   assert(0);
 }