Fossil SCM
/json/logout now returns the same as /json/whoami, but with the info for the nobody user, as suggested by Caleb Gray.
Commit
013e8ee723fe17c61a74ef9aa69a3032e9aa3e55
Parent
a72a8a80d881d92…
1 file changed
+10
-2
+10
-2
| --- src/json_login.c | ||
| +++ src/json_login.c | ||
| @@ -185,12 +185,13 @@ | ||
| 185 | 185 | if(!token){ |
| 186 | 186 | g.json.resultCode = FSL_JSON_E_MISSING_AUTH; |
| 187 | 187 | }else{ |
| 188 | 188 | login_clear_login_data(); |
| 189 | 189 | g.json.authToken = NULL /* memory is owned elsewhere.*/; |
| 190 | + json_setenv(FossilJsonKeys.authToken, NULL); | |
| 190 | 191 | } |
| 191 | - return NULL; | |
| 192 | + return json_page_whoami(); | |
| 192 | 193 | } |
| 193 | 194 | |
| 194 | 195 | /* |
| 195 | 196 | ** Implementation of the /json/anonymousPassword page. |
| 196 | 197 | */ |
| @@ -215,11 +216,18 @@ | ||
| 215 | 216 | */ |
| 216 | 217 | cson_value * json_page_whoami(){ |
| 217 | 218 | cson_value * payload = NULL; |
| 218 | 219 | cson_object * obj = NULL; |
| 219 | 220 | Stmt q; |
| 220 | - db_prepare(&q, "SELECT login, cap FROM user WHERE uid=%d", g.userUid); | |
| 221 | + if(!g.json.authToken){ | |
| 222 | + /* assume we just logged out. */ | |
| 223 | + db_prepare(&q, "SELECT login, cap FROM user WHERE login='nobody'"); | |
| 224 | + } | |
| 225 | + else{ | |
| 226 | + db_prepare(&q, "SELECT login, cap FROM user WHERE uid=%d", | |
| 227 | + g.userUid); | |
| 228 | + } | |
| 221 | 229 | if( db_step(&q)==SQLITE_ROW ){ |
| 222 | 230 | |
| 223 | 231 | /* reminder: we don't use g.zLogin because it's 0 for the guest |
| 224 | 232 | user and the HTML UI appears to currently allow the name to be |
| 225 | 233 | changed (but doing so would break other code). */ |
| 226 | 234 |
| --- src/json_login.c | |
| +++ src/json_login.c | |
| @@ -185,12 +185,13 @@ | |
| 185 | if(!token){ |
| 186 | g.json.resultCode = FSL_JSON_E_MISSING_AUTH; |
| 187 | }else{ |
| 188 | login_clear_login_data(); |
| 189 | g.json.authToken = NULL /* memory is owned elsewhere.*/; |
| 190 | } |
| 191 | return NULL; |
| 192 | } |
| 193 | |
| 194 | /* |
| 195 | ** Implementation of the /json/anonymousPassword page. |
| 196 | */ |
| @@ -215,11 +216,18 @@ | |
| 215 | */ |
| 216 | cson_value * json_page_whoami(){ |
| 217 | cson_value * payload = NULL; |
| 218 | cson_object * obj = NULL; |
| 219 | Stmt q; |
| 220 | db_prepare(&q, "SELECT login, cap FROM user WHERE uid=%d", g.userUid); |
| 221 | if( db_step(&q)==SQLITE_ROW ){ |
| 222 | |
| 223 | /* reminder: we don't use g.zLogin because it's 0 for the guest |
| 224 | user and the HTML UI appears to currently allow the name to be |
| 225 | changed (but doing so would break other code). */ |
| 226 |
| --- src/json_login.c | |
| +++ src/json_login.c | |
| @@ -185,12 +185,13 @@ | |
| 185 | if(!token){ |
| 186 | g.json.resultCode = FSL_JSON_E_MISSING_AUTH; |
| 187 | }else{ |
| 188 | login_clear_login_data(); |
| 189 | g.json.authToken = NULL /* memory is owned elsewhere.*/; |
| 190 | json_setenv(FossilJsonKeys.authToken, NULL); |
| 191 | } |
| 192 | return json_page_whoami(); |
| 193 | } |
| 194 | |
| 195 | /* |
| 196 | ** Implementation of the /json/anonymousPassword page. |
| 197 | */ |
| @@ -215,11 +216,18 @@ | |
| 216 | */ |
| 217 | cson_value * json_page_whoami(){ |
| 218 | cson_value * payload = NULL; |
| 219 | cson_object * obj = NULL; |
| 220 | Stmt q; |
| 221 | if(!g.json.authToken){ |
| 222 | /* assume we just logged out. */ |
| 223 | db_prepare(&q, "SELECT login, cap FROM user WHERE login='nobody'"); |
| 224 | } |
| 225 | else{ |
| 226 | db_prepare(&q, "SELECT login, cap FROM user WHERE uid=%d", |
| 227 | g.userUid); |
| 228 | } |
| 229 | if( db_step(&q)==SQLITE_ROW ){ |
| 230 | |
| 231 | /* reminder: we don't use g.zLogin because it's 0 for the guest |
| 232 | user and the HTML UI appears to currently allow the name to be |
| 233 | changed (but doing so would break other code). */ |
| 234 |