--- /dev/null
+<?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