complete registration flow (submit, mail verification, admin approvation)
[brisk.git] / web / usermgmt.php
index 79ba9b1..2629fb8 100644 (file)
 
 $G_base = "";
 
-$mlang_stat_day = array( 'normal match'=> array( 'it' => 'Partite normali',
-                                                 'en' => 'Normal matches' ),
-                         'special match' => array( 'it' => 'Partite speciali',
-                                                   'en' => 'Special matches'),
+$mlang_umgmt = array( 'nu_psubj' => array( 'it' => 'Brisk: credenziali di accesso.',
+                                           'en' => 'Brisk: credentials.'),
+                      'nu_ptext' => array( 'it' =>
+'Ciao, sono l\' amministratore del sito di Brisk.
+
+La verifica del tuo indirizzo di posta elettronica e del tuo nickname è andata a buon fine, per accedere al sito
+d\'ora in poi potrai utilizzare l\' utente \'%s\' e la password \'%s\'.
+
+Benvenuto e buone partite, mop.',
+                                           'en' => 'EN ptext [%s] [%s]'),
+                      'nu_phtml' => array( 'it' => 'Ciao, sono l\' amministratore del sito di Brisk.<br><br>
+La verifica del tuo indirizzo di posta elettronica e del tuo nickname è andata a buon fine, per accedere al  sito d\'ora in poi potrai usare l\' utente \'%s\' e la password \'%s\'.<br>
+Benvenuto e buone partite, mop.<br>',
+                                           'en' => 'EN phtml [%s] [%s]')
+                      );
 
-                         'info_total'=> array( 'it' => 'totali',
-                                               'en' => 'En totali')
-                         );
 
 ini_set("max_execution_time",  "240");
 
 require_once($G_base."Obj/brisk.phh");
 require_once($G_base."Obj/user.phh");
 require_once($G_base."Obj/auth.phh");
+require_once($G_base."Obj/mail.phh");
 require_once($G_base."Obj/dbase_${G_dbasetype}.phh");
 require_once($G_base."briskin5/Obj/briskin5.phh");
 require_once($G_base."briskin5/Obj/placing.phh");
@@ -50,55 +59,124 @@ function check_auth()
     $socket = FALSE;
     $ret = FALSE;
     $ip = $_SERVER["REMOTE_ADDR"];
-
+    $stp = 0;
     $private = md5($G_alarm_passwd.$ip.$sess);
     $cmd = array ("cmd" => "userauth", "sess" => $sess, "private" => $private, "the_end" => "true");
     $cmd_ser = cmd_serialize($cmd);
     $cmd_len = mb_strlen($cmd_ser, "ASCII");
-    
+
     do {
         if (($socket = stream_socket_client("unix://".USOCK_PATH."2")) == FALSE)
             break;
+        $stp = 1;
         if (($rwr = fwrite($socket, $cmd_ser, $cmd_len)) == FALSE
             || $rwr != $cmd_len)
             break;
         fflush($socket);
+        $stp = 2;
         if (($buf = fread($socket, 4096)) == FALSE)
             break;
         $res = cmd_deserialize($buf);
+        $stp = 3;
         if (!isset($res['val']) || $res['val'] != 200)
             break;
         $ret = TRUE;
+        $stp = 4;
     } while (0);
     if ($socket != FALSE)
         fclose($socket);
-        
+
+    if ($stp < 4) {
+        echo "STP: $stp<br>";
+    }
     return ($ret);
 }
 
-function main($action) {
-    GLOBAL $G_dbpfx, $G_alarm_passwd, $f_mailusers, $sess, $_POST, $_SERVER;
+function main() {
+    GLOBAL $G_dbpfx, $G_lang, $G_alarm_passwd, $mlang_umgmt, $f_mailusers, $sess, $_POST, $_SERVER;
 
     if (check_auth() == FALSE) {
         echo "Authentication failed";
         exit;
     }
 
-    if (isset($f_mailusers)) {
-        $action = "listnew";
+    if (isset($_POST['f_accept'])) {
+        $action = "accept";
+    }
+    else if (isset($_POST['f_delete'])) {
+        $action = "delete";
     }
 
-    if ($action == "listnew") {
-        echo "pippo";
+
+    if ($action == "accept") {
+        if (($bdb = BriskDB::create()) == FALSE) {
+            log_crit("stat-day: database connection failed");
+            break;
+        }
+
+        foreach($_POST as $key => $value) {
+            if (substr($key, 0, 9) != "f_newuser")
+                continue;
+
+            $id = (int)substr($key, 9);
+            if ($id <= 0)
+                continue;
+
+
+            // retrieve list of active tournaments
+            $usr_sql = sprintf("
+SELECT usr.*, guar.login AS guar_login
+     FROM %susers AS usr
+     JOIN %susers AS guar ON guar.code = usr.guar_code
+     WHERE ( (usr.type & (CAST (X'%x' as integer))) = (CAST (X'%x' as integer)) )
+         AND usr.disa_reas = %d AND usr.code = %d;",
+                               $G_dbpfx, $G_dbpfx,
+                               USER_FLAG_TY_ALL, USER_FLAG_TY_DISABLE,
+                               USER_DIS_REA_NU_TOBECHK, $id);
+            if (($usr_pg = pg_query($bdb->dbconn->db(), $usr_sql)) == FALSE) {
+                log_crit("stat-day: select from tournaments failed");
+                break;
+            }
+            $usr_obj = pg_fetch_object($usr_pg, 0);
+            
+            printf("KEY: %s: %s %s<br>\n", $id, $value, $usr_obj->login);
+            // change state
+            $passwd = passwd_gen();
+
+            if (($bdb->user_update_passwd($usr_obj->code, $passwd)) == FALSE) {
+                echo "fail 1.5<br>";
+                break;
+            }
+
+            if (($bdb->user_update_flag_ty($usr_obj->code,
+                                        USER_FLAG_TY_DISABLE, USER_DIS_REA_NU_TOBECHK,
+                                        USER_FLAG_TY_NORM, USER_DIS_REA_NU_NONE)) == FALSE) {
+                echo "fail 2<br>";
+                break;
+            }
+
+            // send mail
+            $subj = $mlang_umgmt['nu_psubj'][$G_lang];
+            $body_txt = sprintf($mlang_umgmt['nu_ptext'][$G_lang],
+                                $usr_obj->login, $passwd);
+            $body_htm = sprintf($mlang_umgmt['nu_phtml'][$G_lang],
+                                $usr_obj->login, $passwd);
+
+            if (brisk_mail($usr_obj->email, $subj, $body_txt, $body_htm) == FALSE) {
+                // mail error
+                fprintf(STDERR, "ERROR: mail send FAILED\n");
+                break;
+            }
+        }
+        exit;
     }
     else {
         do {
-            
             if (($bdb = BriskDB::create()) == FALSE) {
                 log_crit("stat-day: database connection failed");
                 break;
             }
-            
+
             // retrieve list of active tournaments
             $usr_sql = sprintf("
 SELECT usr.*, guar.login AS guar_login 
@@ -115,12 +193,8 @@ SELECT usr.*, guar.login AS guar_login
             }
             
             $usr_n = pg_numrows($usr_pg);
-            printf("Number of tournaments: %d\n", $usr_n);
-
             $tab_lines = "";
-            // loop on tournaments
             for ($i = 0 ; $i < $usr_n ; $i++) {
-                // log_crit("stat-day: LOOP i");
                 $usr_obj = pg_fetch_object($usr_pg, $i);
                 
                 $tab_lines .= sprintf("<tr><td><input name=\"f_newuser%d\" type=\"checkbox\" CHECKED></td><td>%s</td><td></td></tr>\n",
@@ -135,21 +209,18 @@ SELECT usr.*, guar.login AS guar_login
      echo $tab_lines;
 ?>
 </table>
-<input type="submit" name="f_mailusers" value="Done">
+<input type="submit" name="f_accept" value="Accept">
+<input type="submit" name="f_delete" value="Delete">
 </form>
 </body>
 </html>
 <?php
-      
         } while(FALSE);
     }
 }
 
-if (!isset($f_action)) {
-    $action = FALSE;
-}
 
-main($action);
+main();
 
 
 ?>
\ No newline at end of file