File indexing completed on 2024-12-22 05:33:23
0001 <?php 0002 0003 class UsersModel extends EModel 0004 { 0005 public function __construct() 0006 { 0007 parent::__construct("users"); 0008 } 0009 0010 /* 0011 * Performs a standard registration to the service. 0012 * This method doesn't provide a good vcode in order to activate the account 0013 */ 0014 public function register() 0015 { 0016 $mail = EHeaderDataParser::db_get("mail"); 0017 $nick = EHeaderDataParser::db_get("nick"); 0018 0019 $res = $this->find("verified", "where mail=\"" . $mail ."\" LIMIT 1"); 0020 0021 if(isset($res[0])){ 0022 if($res[0]["verified"]=="yes"){ 0023 return 101; 0024 0025 } 0026 } 0027 0028 $res = $this->find("verified", "where nick=\"" . $nick ."\" LIMIT 1"); 0029 if(isset($res[0])){ 0030 if($res[0]["verified"]=="yes"){ 0031 return 102; 0032 0033 } 0034 } 0035 0036 $this->delete("mail=\"" . $mail ."\""); 0037 $this->insert(array("nick", "pass", "mail", "verified")); 0038 return 100; 0039 } 0040 0041 /* 0042 * Just a method that authenticate the client for a request 0043 */ 0044 public function auth($nick,$pass) 0045 { 0046 $res = $this->find("verified", "where (nick=\"" . $nick ."\" or mail=\"" . $nick ."\") and pass=\"" . $pass ."\" LIMIT 1"); 0047 0048 if(isset($res[0])){ 0049 if($res[0]["verified"]=="yes"){ 0050 return true; 0051 } 0052 } 0053 return false; 0054 } 0055 0056 /* 0057 * Auth unverified only works with unverified accounts. 0058 * If a user is found, then email address is returned, 0059 * else false. 0060 */ 0061 public function auth_unverified($nick,$pass) 0062 { 0063 $res = $this->find("*", "where nick=\"" . $nick ."\" and pass=\"" . $pass ."\" LIMIT 1"); 0064 0065 if(isset($res[0])){ 0066 if($res[0]["verified"]=="no"){ 0067 return $res[0]["mail"]; 0068 } 0069 } 0070 return false; 0071 } 0072 0073 public function set_vcode($nick, $pass, $mail) 0074 { 0075 if($this->auth_unverified($nick,$pass)==$mail){ 0076 $hash = md5($nick.$pass.time()); 0077 $q = "UPDATE users SET vcode='".$hash."' WHERE mail=\"" . $mail ."\" LIMIT 1"; 0078 $r = EDatabase::q($q); 0079 0080 return $hash; 0081 } else { 0082 return false; 0083 } 0084 } 0085 0086 public function from_hash_to_mail($hash) 0087 { 0088 $res = $this->find("mail, verified", "where vcode=\"" . $hash ."\" LIMIT 1"); 0089 0090 if(isset($res[0])){ 0091 if($res[0]["verified"]=="no"){ 0092 return $res[0]["mail"]; 0093 } 0094 } 0095 return false; 0096 } 0097 0098 public function verify($mail) 0099 { 0100 $q = "UPDATE users SET verified='yes' WHERE mail=\"" . $mail ."\" LIMIT 1"; 0101 $r = EDatabase::q($q); 0102 } 0103 } 0104 0105 ?>