Add choice between game and web password reset
Dependencies
- [2]
DGGFYSEGUse non-escaped template for Atom XML - [3]
SQO74MUYAdd field to choose type of password to reset - [4]
4JK5O45HStart support for XMPP game password change - [5]
RAXDAROSSplit base URL to protocol and domain - [6]
I6SOPEQFCreate and store reset password token - [7]
I7JG43BJRename cache to use yet another - [8]
LTQCLSBUSplit database usage in pages - [9]
TRBYOQBICheck CSRF and user existence - [10]
HTYEGVBUAdd data to reset password page - [11]
ZE5UFPX4Add TTL cache for CSRF - [12]
3HT5CE6SManage TTL duration in config - [13]
5UYVIBUMUpdate game password from page - [14]
WW3KRXX6Add page for reset game password - [15]
WLWTNO4YCreate form to request game password change link - [16]
WVHXYKCVAdd postgresql pools - [*]
HZDCKIXQUse constants for templates - [*]
EVP2FSBHSplit index page
Change contents
- replacement in src/templates/reset-game-pwd.html at line 19
<legend>Enter data to set new game password:</legend><legend>Enter data to set new{{#if is_game_pwd }}game{{else}}web{{/if}}password:</legend> - replacement in src/templates/query-reset-game-pwd.html at line 30
<!-- <input type="radio" name="password_type" value="web">Web<br> --><input type="radio" name="password_type" value="web">Web<br> - edit in src/pages/reset_game_pwd.rs at line 15
is_game_pwd: bool, - replacement in src/pages/reset_game_pwd.rs at line 47
let stmt = match dbclient.prepare("select player_name, last_error from auth.reset_tokens where token = $1 and NOW() < create_ts + interval '1 day' limit 1;").await {let stmt = match dbclient.prepare("select player_name, last_error, is_game_pwd from auth.reset_tokens where token = $1 and NOW() < create_ts + interval '1 day' limit 1;").await { - edit in src/pages/reset_game_pwd.rs at line 70
let is_game_pwd = row.get::<_, bool>(2); - replacement in src/pages/reset_game_pwd.rs at line 77
(token, player_name.to_string()),(token, player_name.to_string(), is_game_pwd), - edit in src/pages/reset_game_pwd.rs at line 88
is_game_pwd, - replacement in src/pages/reset_game_pwd.rs at line 110
let (cached_token, cached_login) = match cached_data {let (cached_token, cached_login, is_game_pwd) = match cached_data { - replacement in src/pages/reset_game_pwd.rs at line 154
let stmt = match dbclient.prepare("update auth.users set game_password = crypt($1, gen_salt('bf', 8)) where player_name = $2;").await {let stmt = match dbclient.prepare(if is_game_pwd { "update auth.users set game_password = crypt($1, gen_salt('bf', 8)) where player_name = $2;" } else { "update auth.users set web_password = crypt($1, gen_salt('bf', 8)) where player_name = $2;" }).await { - replacement in src/pages/query_reset_game_pwd.rs at line 123
let _is_game_password = match form.password_type.as_str() {let is_game_pwd = match form.password_type.as_str() { - replacement in src/pages/query_reset_game_pwd.rs at line 169
.prepare("insert into auth.reset_tokens values ($1, $2, NULL, NOW(), NULL);").prepare("insert into auth.reset_tokens values ($1, $2, NULL, NOW(), NULL, $3);") - replacement in src/pages/query_reset_game_pwd.rs at line 179
let inserted = match dbclient_rw.execute(&stmt, &[&form.login, &token]).await {let inserted = match dbclient_rw.execute(&stmt, &[&form.login, &token, &is_game_pwd]).await{ - replacement in src/pages/mod.rs at line 35
pub cache_reset_game_pwd: Mutex<TtlCache<Uuid, (Uuid, String)>>,pub cache_reset_game_pwd: Mutex<TtlCache<Uuid, (Uuid, String, bool)>>,