new users management (incomplete)
[brisk.git] / doc / ARCHITECTURE.txt
index b350151..a28d91a 100644 (file)
@@ -1,7 +1,47 @@
 Sparse documentation about Brisk.
 
+==== brisk/table/user relationships ====
+
+=== points management ===
+
+read from db:
+  * continue a match
+  * calculate placings
+  * calculate explain
+
+write to db:
+  * finish a game
+
+=== in the room ===
+
+// when standup
+bri->user[user_idx] = user
+user->idx      = user_idx
+user->idx_orig = user_idx
+
+// when sitdown
+table->player[player_idx] = user_idx
+user->table_pos = player_idx
+
+=== in the game ===
+
+bin5->user[user_idx] = user
+table->player[player_idx] = user_idx
+user->table_pos = player_idx
+
+
 Many things aren't documented at all, but I start with authentication workflow.
 
+==== MODIFY USERS TABLE ====
+
+=== PHP CODE ===
+
+web/Obj/dbase_base.phh
+  function LoginDBItem -> args & body
+  function LoginDBItemFromRecord -> args & body
+
+=== SQL CODE ===
+sql/sql.d/nnn-name-patch.sql
 
 
 AUTHENTICATION WORKFLOW
@@ -16,4 +56,57 @@ index.php:
 
 --- CLI ------------
   POST index.php with passid_private field equal to calcMD5(tokens[1]+calcMD5(form.elements['passid'].value))
+  add_user -> validate_name, login_verify
+
+
+===== Game Lifecycle =====
+
+-> bin5/index_wr.php + argz[0] == 'logout'
+   - bri->table_wakeup($user)
+     - set users subst to "shutdowner" and "shutdowned"
+     - save this: "gst.st_loc++; the_end=true; window.onbeforeunload = null; \
+                   window.onunload = null; document.location.assign("../index.php");" 
+       in user->comm var for client xhr
+     - set $bri->the_end = TRUE
+
+
+-> index.php  (after verify session value: ~L250)
+  - garbage_manager(TRUE)
+    - align many status var with briskin5 user values
+    - room_join_wakeup()
+
+==== Chunk flow ====
+
+
+$ret = $user->maincheck($old_stat, $old_subst, $old_step, $this->rd_stat, $this->rd_subst, $this->rd_step,
+                        $splashdate, $table_idx, $table_token))
+$user->rd_transp->chunk($this->rd_scristp++, $ret);
+
+
+===== New users workflow =====
+
+status     |      |         DB         |
+---------- |------+--------------------+
+unknown    |
+           V
+         brisk   ->      mail-table
+MAILED     |                 |
+           V                 |
+          user               |
+           |                 |
+           V                 |
+        mailbox              |
+           |                 |
+           V                 |
+        procmail             |
+           |                 |
+           V                 |
+  check with mail-table      |
+     and update DB      <----+
+  (needs ad-hoc page)
+TOBECHK    |
+           V
+       authorize
+normal     |
+           V