Add choice between game and web password reset

O01eg
Sep 16, 2022, 7:01 PM
CX3CY2GESJSNBJIVTYHFK4VIHR6WCN3RDIHE234OOLVIE65LKR5QC

Dependencies

  • [2] DGGFYSEG Use non-escaped template for Atom XML
  • [3] SQO74MUY Add field to choose type of password to reset
  • [4] 4JK5O45H Start support for XMPP game password change
  • [5] RAXDAROS Split base URL to protocol and domain
  • [6] I6SOPEQF Create and store reset password token
  • [7] I7JG43BJ Rename cache to use yet another
  • [8] LTQCLSBU Split database usage in pages
  • [9] TRBYOQBI Check CSRF and user existence
  • [10] HTYEGVBU Add data to reset password page
  • [11] ZE5UFPX4 Add TTL cache for CSRF
  • [12] 3HT5CE6S Manage TTL duration in config
  • [13] 5UYVIBUM Update game password from page
  • [14] WW3KRXX6 Add page for reset game password
  • [15] WLWTNO4Y Create form to request game password change link
  • [16] WVHXYKCV Add postgresql pools
  • [*] HZDCKIXQ Use constants for templates
  • [*] EVP2FSBH Split index page

Change contents

  • replacement in src/templates/reset-game-pwd.html at line 19
    [4.169][4.169:223]()
    <legend>Enter data to set new game password:</legend>
    [4.169]
    [4.223]
    <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
    [3.155][3.155:233]()
    <!-- <input type="radio" name="password_type" value="web">Web<br> -->
    [3.155]
    [3.233]
    <input type="radio" name="password_type" value="web">Web<br>
  • edit in src/pages/reset_game_pwd.rs at line 15
    [4.987]
    [4.0]
    is_game_pwd: bool,
  • replacement in src/pages/reset_game_pwd.rs at line 47
    [4.1500][4.164:334]()
    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 {
    [4.1500]
    [4.1657]
    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
    [4.432]
    [4.2345]
    let is_game_pwd = row.get::<_, bool>(2);
  • replacement in src/pages/reset_game_pwd.rs at line 77
    [4.40][4.433:479]()
    (token, player_name.to_string()),
    [4.40]
    [4.59]
    (token, player_name.to_string(), is_game_pwd),
  • edit in src/pages/reset_game_pwd.rs at line 88
    [4.2529]
    [4.2529]
    is_game_pwd,
  • replacement in src/pages/reset_game_pwd.rs at line 110
    [4.712][4.712:771]()
    let (cached_token, cached_login) = match cached_data {
    [4.712]
    [4.771]
    let (cached_token, cached_login, is_game_pwd) = match cached_data {
  • replacement in src/pages/reset_game_pwd.rs at line 154
    [4.2441][4.2441:2585]()
    let stmt = match dbclient.prepare("update auth.users set game_password = crypt($1, gen_salt('bf', 8)) where player_name = $2;").await {
    [4.2441]
    [4.2585]
    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
    [4.407][3.273:337]()
    let _is_game_password = match form.password_type.as_str() {
    [4.407]
    [3.337]
    let is_game_pwd = match form.password_type.as_str() {
  • replacement in src/pages/query_reset_game_pwd.rs at line 169
    [4.283][4.283:369]()
    .prepare("insert into auth.reset_tokens values ($1, $2, NULL, NOW(), NULL);")
    [4.283]
    [4.369]
    .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
    [4.633][4.633:717]()
    let inserted = match dbclient_rw.execute(&stmt, &[&form.login, &token]).await {
    [4.633]
    [4.717]
    let inserted = match dbclient_rw
    .execute(&stmt, &[&form.login, &token, &is_game_pwd])
    .await
    {
  • replacement in src/pages/mod.rs at line 35
    [4.559][4.198:267]()
    pub cache_reset_game_pwd: Mutex<TtlCache<Uuid, (Uuid, String)>>,
    [2.144]
    [4.2116]
    pub cache_reset_game_pwd: Mutex<TtlCache<Uuid, (Uuid, String, bool)>>,