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);
}