Fossil SCM

Added admin_log(), for (informally) recording changes made by admins.

stephan 2014-11-27 16:59 UTC trunk
Commit ee666c46fb7d1f3e3f2837c43f1d10c9213ce94e
2 files changed +31 +4 -1
+31
--- src/db.c
+++ src/db.c
@@ -2676,5 +2676,36 @@
26762676
}
26772677
blob_reset(&allSql);
26782678
db_close(1);
26792679
}
26802680
}
2681
+
2682
+
2683
+void admin_log(const char *zFormat, ...){
2684
+ static int once = 0;
2685
+ char * zUserName = g.userUid>0
2686
+ ? db_text(0, "select login from user where uid=%d", g.userUid)
2687
+ : 0;
2688
+ Blob what = empty_blob;
2689
+ va_list ap;
2690
+ int rc;
2691
+ if(!once){
2692
+ once = 1;
2693
+ rc = db_multi_exec("CREATE TABLE IF NOT EXISTS aevent("
2694
+ "id INTEGER PRIMARY KEY, "
2695
+ "time FLOAT /* Julian time */, "
2696
+ "page TEXT /* path of page */,"
2697
+ "who TEXT /* user name */, "
2698
+ "what TEXT /* descr. of event. */ "
2699
+ ")");
2700
+ fossil_trace("created aevent. rc=%d\n", rc);
2701
+ }
2702
+ va_start(ap,zFormat);
2703
+ blob_vappendf( &what, zFormat, ap );
2704
+ va_end(ap);
2705
+ fossil_trace("what==%B rc=%d\n", &what, rc);
2706
+ db_multi_exec("INSERT INTO aevent(id,time,page,who,what) VALUES("
2707
+ "NULL, cast(strftime('%%J') AS FLOAT), %Q, %Q, %B"
2708
+ ")", g.zPath, zUserName, &what);
2709
+ fossil_free(zUserName);
2710
+ blob_reset(&what);
2711
+}
26812712
--- src/db.c
+++ src/db.c
@@ -2676,5 +2676,36 @@
2676 }
2677 blob_reset(&allSql);
2678 db_close(1);
2679 }
2680 }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
2681
--- src/db.c
+++ src/db.c
@@ -2676,5 +2676,36 @@
2676 }
2677 blob_reset(&allSql);
2678 db_close(1);
2679 }
2680 }
2681
2682
2683 void admin_log(const char *zFormat, ...){
2684 static int once = 0;
2685 char * zUserName = g.userUid>0
2686 ? db_text(0, "select login from user where uid=%d", g.userUid)
2687 : 0;
2688 Blob what = empty_blob;
2689 va_list ap;
2690 int rc;
2691 if(!once){
2692 once = 1;
2693 rc = db_multi_exec("CREATE TABLE IF NOT EXISTS aevent("
2694 "id INTEGER PRIMARY KEY, "
2695 "time FLOAT /* Julian time */, "
2696 "page TEXT /* path of page */,"
2697 "who TEXT /* user name */, "
2698 "what TEXT /* descr. of event. */ "
2699 ")");
2700 fossil_trace("created aevent. rc=%d\n", rc);
2701 }
2702 va_start(ap,zFormat);
2703 blob_vappendf( &what, zFormat, ap );
2704 va_end(ap);
2705 fossil_trace("what==%B rc=%d\n", &what, rc);
2706 db_multi_exec("INSERT INTO aevent(id,time,page,who,what) VALUES("
2707 "NULL, cast(strftime('%%J') AS FLOAT), %Q, %Q, %B"
2708 ")", g.zPath, zUserName, &what);
2709 fossil_free(zUserName);
2710 blob_reset(&what);
2711 }
2712
+4 -1
--- src/setup.c
+++ src/setup.c
@@ -380,12 +380,13 @@
380380
}
381381
login_verify_csrf_secret();
382382
db_multi_exec(
383383
"REPLACE INTO user(uid,login,info,pw,cap,mtime) "
384384
"VALUES(nullif(%d,0),%Q,%Q,%Q,%Q,now())",
385
- uid, P("login"), P("info"), zPw, zCap
385
+ uid, zLogin, P("info"), zPw, zCap
386386
);
387
+ admin_log( "Updated user %Q with capapbilities [%q].", zLogin, zCap );
387388
if( atoi(PD("all","0"))>0 ){
388389
Blob sql;
389390
char *zErr = 0;
390391
blob_zero(&sql);
391392
if( zOldLogin==0 ){
@@ -407,12 +408,14 @@
407408
zLogin, P("pw"), zLogin, P("info"), zCap,
408409
zOldLogin
409410
);
410411
login_group_sql(blob_str(&sql), "<li> ", " </li>\n", &zErr);
411412
blob_reset(&sql);
413
+ admin_log( "Updated user '%q' with capapbilities.", zLogin, zCap );
412414
if( zErr ){
413415
style_header("User Change Error");
416
+ admin_log( "Error updating user '%q': %s'.", zLogin, zErr );
414417
@ <span class="loginError">%s(zErr)</span>
415418
@
416419
@ <p><a href="setup_uedit?id=%d(uid)">[Bummer]</a></p>
417420
style_footer();
418421
return;
419422
--- src/setup.c
+++ src/setup.c
@@ -380,12 +380,13 @@
380 }
381 login_verify_csrf_secret();
382 db_multi_exec(
383 "REPLACE INTO user(uid,login,info,pw,cap,mtime) "
384 "VALUES(nullif(%d,0),%Q,%Q,%Q,%Q,now())",
385 uid, P("login"), P("info"), zPw, zCap
386 );
 
387 if( atoi(PD("all","0"))>0 ){
388 Blob sql;
389 char *zErr = 0;
390 blob_zero(&sql);
391 if( zOldLogin==0 ){
@@ -407,12 +408,14 @@
407 zLogin, P("pw"), zLogin, P("info"), zCap,
408 zOldLogin
409 );
410 login_group_sql(blob_str(&sql), "<li> ", " </li>\n", &zErr);
411 blob_reset(&sql);
 
412 if( zErr ){
413 style_header("User Change Error");
 
414 @ <span class="loginError">%s(zErr)</span>
415 @
416 @ <p><a href="setup_uedit?id=%d(uid)">[Bummer]</a></p>
417 style_footer();
418 return;
419
--- src/setup.c
+++ src/setup.c
@@ -380,12 +380,13 @@
380 }
381 login_verify_csrf_secret();
382 db_multi_exec(
383 "REPLACE INTO user(uid,login,info,pw,cap,mtime) "
384 "VALUES(nullif(%d,0),%Q,%Q,%Q,%Q,now())",
385 uid, zLogin, P("info"), zPw, zCap
386 );
387 admin_log( "Updated user %Q with capapbilities [%q].", zLogin, zCap );
388 if( atoi(PD("all","0"))>0 ){
389 Blob sql;
390 char *zErr = 0;
391 blob_zero(&sql);
392 if( zOldLogin==0 ){
@@ -407,12 +408,14 @@
408 zLogin, P("pw"), zLogin, P("info"), zCap,
409 zOldLogin
410 );
411 login_group_sql(blob_str(&sql), "<li> ", " </li>\n", &zErr);
412 blob_reset(&sql);
413 admin_log( "Updated user '%q' with capapbilities.", zLogin, zCap );
414 if( zErr ){
415 style_header("User Change Error");
416 admin_log( "Error updating user '%q': %s'.", zLogin, zErr );
417 @ <span class="loginError">%s(zErr)</span>
418 @
419 @ <p><a href="setup_uedit?id=%d(uid)">[Bummer]</a></p>
420 style_footer();
421 return;
422

Keyboard Shortcuts

Open search /
Next entry (timeline) j
Previous entry (timeline) k
Open focused entry Enter
Show this help ?
Toggle theme Top nav button