the dbase part is moved to another file to be able to use sql or file (new files)
[brisk.git] / web / Obj / dbase_file.phh
diff --git a/web/Obj/dbase_file.phh b/web/Obj/dbase_file.phh
new file mode 100644 (file)
index 0000000..2fb3178
--- /dev/null
@@ -0,0 +1,174 @@
+<?php
+  /*
+   *  brisk - dbase_file.phh
+   *
+   *  Copyright (C) 2006-2011 Matteo Nastasi
+   *                          mailto: nastasi@alternativeoutput.it 
+   *                                  matteo.nastasi@milug.org
+   *                          web: http://www.alternativeoutput.it
+   *
+   * This program is free software; you can redistribute it and/or modify
+   * it under the terms of the GNU General Public License as published by
+   * the Free Software Foundation; either version 2 of the License, or
+   * (at your option) any later version.
+   *
+   * This program is distributed in the hope that it will be useful, but
+   * WITHOUT ANY WARRANTY; without even the implied warranty of
+   * MERCHANTABLILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+   * General Public License for more details. You should have received a
+   * copy of the GNU General Public License along with this program; if
+   * not, write to the Free Software Foundation, Inc, 59 Temple Place -
+   * Suite 330, Boston, MA 02111-1307, USA.
+   *
+   */
+
+require_once("Obj/dbase_base.phh")
+
+define(BRISK_AUTH_CONF,   "brisk_auth.conf.pho");
+
+class LoginDB {
+    var $item;
+    var $item_n;
+
+  
+    function LoginDB()
+    {
+        GLOBAL $DOCUMENT_ROOT;
+        log_main("LoginDB create:start");
+
+        if (file_exists("$DOCUMENT_ROOT/Etc/".BRISK_AUTH_CONF)) {
+            require("$DOCUMENT_ROOT/Etc/".BRISK_AUTH_CONF);
+        }
+        else {
+            $this->item = array( new LoginDBItem(1, "uno", md5("one"),   "pippo@pluto.com", USER_FLAG_TY_SUPER),
+                                 new LoginDBItem(2, "due", md5("two"),   "pippo@pluto.com", USER_FLAG_TY_NORM),
+                                 new LoginDBItem(3, "a_b", md5("abb"),   "pippo@pluto.com", USER_FLAG_TY_NORM),
+                                 new LoginDBItem(4, "tre", md5("three"), "pippo@pluto.com", USER_FLAG_TY_NORM) );
+        }
+        $this->item_n = count($this->item);
+        log_main("LoginDB create:end");
+    }
+
+    function count()
+    {
+        return ($this->item_n);
+    }
+
+    function login_exists($login)
+    {
+        log_main("login_exists: ".$login);
+    
+        /* check the existence of the nick in the LoginDB */
+        for ($i = 0 ; $i < $this->item_n ; $i++) {
+            if (strcasecmp($this->item[$i]->login, $login) == 0) {
+                log_main("login[".$i."]: ".$this->item[$i]->login);
+                return (TRUE);
+            }
+        }
+        return (FALSE);
+    }
+
+    function getlogin_byidx($idx)
+    {
+        if ($idx >= $this->item_n)
+            return FALSE;
+        return ($this->item[$idx]->login);
+    }
+
+    function &getitem_bylogin($login, &$id)
+        {
+            GLOBAL $G_false;
+
+            log_main("login_exists: ".$login);
+    
+            /* check the existence of the nick in the LoginDB */
+            for ($i = 0 ; $i < $this->item_n ; $i++) {
+                if (strcasecmp($this->item[$i]->login, $login) == 0) {
+                    log_main("login[".$i."]: ".$this->item[$i]->login);
+                    $ret = &$this->item[$i];
+                    $id = $i;
+                    return ($ret);
+                }
+            }
+            $id = -1;
+            return ($G_false);
+        }
+
+    function getmail($login)
+    {
+        log_main("getmail");
+    
+        /* check the existence of the nick in the LoginDB */
+        for ($i = 0 ; $i < $this->item_n ; $i++) {
+            if (strcasecmp($this->item[$i]->login, $login) == 0) {
+                log_main("login[".$i."]: ".$this->item[$i]->login);
+                return ($this->item[$i]->email);
+            }
+        }
+        return (FALSE);
+    }
+
+    function gettype($login)
+    {
+        log_main("getmail");
+    
+        /* check the existence of the nick in the LoginDB */
+        for ($i = 0 ; $i < $this->item_n ; $i++) {
+            if (strcasecmp($this->item[$i]->login, $login) == 0) {
+                log_main("login[".$i."]: ".$this->item[$i]->login);
+                return ($this->item[$i]->type);
+            }
+        }
+        return (FALSE);
+    }
+
+    function &login_verify($login, $pass)
+        {
+            GLOBAL $G_false;
+
+            $ret = &$G_false;
+
+            log_main("login_verify: ".$login);
+        
+            /* check the existence of the nick in the LoginDB */
+            for ($i = 0 ; $i < $this->item_n ; $i++) {
+                log_main("login_verify: LOOP");
+                if (strcasecmp($this->item[$i]->login, $login) == 0) {
+                    log_main("login[".$i."]: ".$this->item[$i]->login);
+
+                    /* if it exists check for a valid challenge */
+                    if (($a_sem = Challenges::lock_data()) != FALSE) { 
+          
+                        if (($chals = &Challenges::load_data()) != FALSE) {
+                            for ($e = 0 ; $e < $chals->item_n ; $e++) {
+              
+                                log_main("challenge[".$i."]: ".$chals->item[$e]->login);
+                                if (strcmp($login, $chals->item[$e]->login) == 0) {
+                                    log_main("login_verify [".$pass."] with [".md5($chals->item[$e]->token.$this->item[$i]->pass)."]");
+                  
+                                    if (strcmp($pass , md5($chals->item[$e]->token.$this->item[$i]->pass)) == 0) {
+                                        log_main("login_verify SUCCESS for ".$login);
+   
+                                        $chals->rem($login);
+                                        $ret = &$this->item[$i];
+                                        break;
+                                    }
+                                }
+                            } // end for ($e = 0 ...
+                        }
+
+                        if ($chals->ismod()) {
+                            Challenges::save_data(&$chals);
+                        }
+          
+                        Challenges::unlock_data($a_sem);
+                    }
+                    break;
+                } //  if (strcasecmp($this->item[$i]->login, ...
+            }
+
+            return ($ret);
+        }
+} // End class LoginDB
+
+?>
\ No newline at end of file