File: 0.00.1a/core/auth/AuthMethodStandard.php (View as Code)

1: 2: /* ------------------------------------------------------------- 3: This file is part of FreeDESK 4: 5: FreeDESK is (C) Copyright 2012 David Cutting 6: 7: FreeDESK is free software: you can redistribute it and/or modify 8: it under the terms of the GNU General Public License as published by 9: the Free Software Foundation, either version 3 of the License, or 10: (at your option) any later version. 11: 12: FreeDESK is distributed in the hope that it will be useful, 13: but WITHOUT ANY WARRANTY; without even the implied warranty of 14: MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 15: GNU General Public License for more details. 16: 17: You should have received a copy of the GNU General Public License 18: along with FreeDESK. If not, see www.gnu.org/licenses 19: 20: For more information see www.purplepixie.org/freedesk/ 21: -------------------------------------------------------------- */ 22: 23: /** 24: * AuthMethodStandard is the standard (database-based) authentication method 25: **/ 26: class AuthMethodStandard extends AuthMethodBase 27: { 28: /** 29: * AuthMethodStandard Constructor 30: * @param mixed $freeDESK FreeDESK instance 31: **/ 32: function AuthMethodStandard(&$freeDESK) 33: { 34: parent::AuthMethodBase($freeDESK); 35: } 36: 37: /** 38: * Authenticate a user/customer session 39: * @param int $type Type of Context (ContextType) 40: * @param string $username Username provided 41: * @param string $password Password provided 42: * @return bool True on success or false on failure 43: **/ 44: function Authenticate($type, $username, $password) 45: { 46: $valid=false; // default to failed 47: 48: if ($type == ContextType::User) 49: { 50: $password=$this->DESK->BaseConfig->pwd_Hash.$password; // add the hash to the password 51: $q="SELECT * FROM ".$this->DESK->Database->Table("user")." WHERE "; 52: $q.=$this->DESK->Database->Field("username")."=\"".$this->DESK->Database->Safe($username)."\" AND "; 53: $q.=$this->DESK->Database->Field("password")."=MD5(\"".$this->DESK->Database->Safe($password)."\") "; 54: $q.="LIMIT 0,1"; 55: 56: $r=$this->DESK->Database->Query($q); 57: 58: if ($user = $this->DESK->Database->FetchAssoc($r)) 59: $valid=true; 60: 61: $this->DESK->Database->Free($r); 62: } 63: 64: // TODO: Customer Authentication 65: 66: return $valid; 67: } 68: 69: /** 70: * Set a standard user password - note no security here and that this is NOT a AutoMethodBase overrided function 71: * @param string $username Username 72: * @param string $password Password 73: **/ 74: function SetPassword($username, $password) 75: { 76: $password=$this->DESK->BaseConfig->pwd_Hash.$password; 77: $q="UPDATE ".$this->DESK->Database->Table("user")." SET "; 78: $q.=$this->DESK->Database->Field("password")."=MD5(\"".$this->DESK->Database->Safe($password)."\") "; 79: $q.="WHERE ".$this->DESK->Database->Field("username")."=\"".$this->DESK->Database->Safe($username)."\""; 80: $this->DESK->Database->Query($q); 81: } 82: 83: /** 84: * Exec function (static) 85: * @param mixed $DESK Current FreeDESK instance 86: **/ 87: static function Exec(&$DESK) 88: { 89: $plugin = new Plugin(); 90: $plugin->name="Standard Authentication"; 91: $plugin->version="0.01"; 92: $plugin->type="Auth"; 93: $plugin->subtype="standard"; 94: $plugin->classname="AuthMethodStandard"; 95: $DESK->PluginManager->Register($plugin); 96: } 97: } 98: ?> 99: