'victor', self::$PASSWORD=>1, ]); } static function init(){ define("IF_ADMIN",self::if_auth()); define("AID",IF_ADMIN ? self::$data[ self::$ID ] : 0); } static function exit(){ Core::setCookie(self::$cookieIDKey,'-'); Core::setCookie(self::$cookieHashKey,'-'); } static function if_auth(){ if($uid = intval($_COOKIE[ self::$cookieIDKey ]) and $hash = $_COOKIE[ self::$cookieHashKey ]) { $acc = self::getByID($uid); $res = strcmp($acc[self::$PASSWORD],$hash)==0; if($res) self::$data = $acc; return $res; } else return false; } static function getSystemLangValues():array{ return Vars::getArray();} static function add($values){ $res = new stdClass(); $res->e = 0; $res->m = ''; $admin = self::getByAccount($values[ self::$ACCOUNT ]); if(!$admin) { $r = self::insert($values); $a = self::getByID($r->id); $c[self::$PASSWORD] = self::hash($a); self::updateById($r->id, $c); $res->id = $r->id; } else { $res->e = 1; $res->m = V::get(Vars::$ACCOUNT_BUSY); } return $res; } static function hash($acc){ return md5(\Config::$SALT.$acc[self::$ID].self::$DATE.\Config::$SALT.$acc[self::$PASSWORD]); } static function checkPassword($acc,$pass):bool{ $hash = $acc[self::$PASSWORD]; $acc[self::$PASSWORD] = $pass; return strcmp($hash, self::hash($acc) )===0; } static function getByAccount(string $account){ return DB::fetch(self::select( [Query::WHERE => new Where (Where::_operator(self::$ACCOUNT,'=',$account)) ] )); } static function prepareLogin($login) {return trim(strtolower((string)$login));} static function preparePass($pass) {return trim((string)$pass);} static function login($login,$pass){ $res = new stdClass(); $res->e = ''; $res->m = ''; $login = self::prepareLogin($login); $pass = self::preparePass($pass); $acc = self::getByAccount($login); if($acc) { if(self::checkPassword($acc,$pass)){ Core::setCookie(self::$cookieIDKey,$acc[self::$ID]); Core::setCookie(self::$cookieHashKey,$acc[self::$PASSWORD]); } else { $res->e = V::get(Vars::$WRONG_PASSWORD); } } else { $res->e = V::get(Vars::$ADMIN_NOT_FOUND); } return $res; } static function columnInfo() : array { $common = [ C::TYPE => eColumnType::VARCHAR, C::LENGTH => 63, ]; return [ new C([ C::VAR_NAME =>&self::$ID, C::TYPE =>eColumnType::INT, C::AUTO_INCREMENT =>true, C::PRIMARY =>true, C::DEFAULT =>0, ]), new C($common + array(C::VAR_NAME => &self::$SNAME)), new C($common + array(C::VAR_NAME => &self::$NAME)), new C($common + array(C::VAR_NAME => &self::$FNAME)), new C($common + array(C::VAR_NAME => &self::$ACCOUNT)), new C($common + array(C::VAR_NAME => &self::$PASSWORD)), new C([ C::VAR_NAME => &self::$BDATE, C::TYPE => eColumnType::INT, C::DEFAULT => 0, ]), new C([ C::VAR_NAME => &self::$DATE, C::TYPE => eColumnType::INT, C::DEFAULT => time(), ]), ]; } }