diff options
| author | David Sommerseth <dazo@users.sourceforge.net> | 2008-12-03 00:37:20 +0100 |
|---|---|---|
| committer | David Sommerseth <dazo@users.sourceforge.net> | 2008-12-03 00:37:20 +0100 |
| commit | 7adbf78d854b4d119ba2463d4936b882d8d8faa9 (patch) | |
| tree | 5230bd0df15f32e4475a3d565568c45e5b955373 /database/sqlite | |
| parent | 9e6621369a9c5fe71fcb4330d9388e8adf89c8aa (diff) | |
| download | eurephia-7adbf78d854b4d119ba2463d4936b882d8d8faa9.tar.gz eurephia-7adbf78d854b4d119ba2463d4936b882d8d8faa9.tar.xz eurephia-7adbf78d854b4d119ba2463d4936b882d8d8faa9.zip | |
BUGFIX: Logout works properly again and improved logout status change
- cmd_Logout(...) used the wrong argv[] index for sessionkey.
- Improved eDBadminValidateSession(...) to set status to '5' on sessions
which are getting logged out due to missing privileges
Diffstat (limited to 'database/sqlite')
| -rw-r--r-- | database/sqlite/edb-sqlite.c | 18 |
1 files changed, 11 insertions, 7 deletions
diff --git a/database/sqlite/edb-sqlite.c b/database/sqlite/edb-sqlite.c index 05e16f7..fb76369 100644 --- a/database/sqlite/edb-sqlite.c +++ b/database/sqlite/edb-sqlite.c @@ -1074,7 +1074,7 @@ int eDBadminValidateSession(eurephiaCTX *ctx, const char *sesskey, const char *r " AND access = '%q'", expire_time, sesskey, req_access); - if( (res == NULL) || (sqlite_get_numtuples(res) != 1) ) { + if( (res == NULL) ) { eurephia_log(ctx, LOG_FATAL, 0, "Could not validate session"); return 0; } @@ -1084,7 +1084,7 @@ int eDBadminValidateSession(eurephiaCTX *ctx, const char *sesskey, const char *r sqlite_free_results(res); // If still valid, update last_action - if( valid ) { + if( valid && access ) { res = sqlite_query(ctx, "UPDATE eurephia_adminlog" " SET last_action = CURRENT_TIMESTAMP, status = 2" @@ -1094,15 +1094,14 @@ int eDBadminValidateSession(eurephiaCTX *ctx, const char *sesskey, const char *r } sqlite_free_results(res); - if( !access ) { - eurephia_log(ctx, LOG_WARNING, 0, "Your user account is lacking privileges"); - } } else { // If not valid, register session as auto-logged out + res = sqlite_query(ctx, "UPDATE eurephia_adminlog" - " SET logout = CURRENT_TIMESTAMP, status = 4" - " WHERE sessionkey = '%q'", sesskey); + " SET logout = CURRENT_TIMESTAMP, status = %i" + " WHERE sessionkey = '%q'", + (access ? 4 : 5), sesskey); if( res == NULL ) { eurephia_log(ctx, LOG_ERROR, 0, "Could not register old session as logged out"); } @@ -1117,6 +1116,11 @@ int eDBadminValidateSession(eurephiaCTX *ctx, const char *sesskey, const char *r return 0; } sqlite_free_results(res); + + if( !access ) { + eurephia_log(ctx, LOG_WARNING, 0, "Your user account is lacking privileges"); + } + } return (valid && access); } |
