104 lines
3.3 KiB
PHP
104 lines
3.3 KiB
PHP
|
|
<?
|
||
|
|
namespace core;
|
||
|
|
|
||
|
|
use core\db\structure\Column as C;
|
||
|
|
use core\db\structure\eColumnType;
|
||
|
|
use core\Verify\structure\eVerifyType;
|
||
|
|
use ui\form\structure\eInputType;
|
||
|
|
use ui\Form;
|
||
|
|
use ui\input\Input;
|
||
|
|
use core\lang\structure\LangVariable as V;
|
||
|
|
use ms\ms\structure\msModuleTable;
|
||
|
|
use core\verify\structure\verifyLang as Vars;
|
||
|
|
use core\site\Theme;
|
||
|
|
|
||
|
|
|
||
|
|
|
||
|
|
class Verify extends msModuleTable {
|
||
|
|
static $self;
|
||
|
|
static $table_name = 'verify';
|
||
|
|
static $controller = 'verify';
|
||
|
|
|
||
|
|
static $ID = 'id';
|
||
|
|
static $CODE = 'code';
|
||
|
|
static $TYPE = 'type';
|
||
|
|
static $PROFILE = 'profile';
|
||
|
|
static $CREATED = 'created';
|
||
|
|
|
||
|
|
|
||
|
|
static function getCode($x = 5):string{
|
||
|
|
return str_pad(rand(0,pow(10,$x)-1), $x, '0', STR_PAD_LEFT);
|
||
|
|
}
|
||
|
|
|
||
|
|
static function checkCode($code_id,$_code){
|
||
|
|
$res = ['e'=>1,'m'=>''];
|
||
|
|
$code_id = intval($code_id);
|
||
|
|
$code = self::getByID($code_id);
|
||
|
|
if($code){
|
||
|
|
if( ($code[self::$CREATED] + 60*15) > time() ){
|
||
|
|
if(strcmp($code[self::$CODE],$_code)==0){
|
||
|
|
$res['e'] = 0;
|
||
|
|
$res['m'] = 'Указан правильный код';
|
||
|
|
$res['key'] = $key = time();
|
||
|
|
$profile = \Profile::getByID($code[self::$PROFILE]);
|
||
|
|
$res['hash'] = \Site::$theme::getProfileHash($key,$profile);
|
||
|
|
} else {
|
||
|
|
$res['m'] = 'Присланный код не верен. Введите тот, который был Вам отправлен.';
|
||
|
|
}
|
||
|
|
} else {
|
||
|
|
$res['m'] = 'Время действия кода истекло. Запросите новый код.';
|
||
|
|
}
|
||
|
|
} else {
|
||
|
|
$res['m'] = 'Код не найден. Запросите новый код.';
|
||
|
|
}
|
||
|
|
return $res;
|
||
|
|
|
||
|
|
}
|
||
|
|
static function createCode($profile_id,$length = 5,$type = eVerifyType::EMAIL){
|
||
|
|
$r = self::insert([
|
||
|
|
self::$CODE => $code = self::getCode($length),
|
||
|
|
self::$TYPE => $type,
|
||
|
|
self::$PROFILE => $profile_id,
|
||
|
|
]);
|
||
|
|
return [
|
||
|
|
'id' => $r->id,
|
||
|
|
'code' => $code,
|
||
|
|
];
|
||
|
|
}
|
||
|
|
|
||
|
|
static function columnInfo() : array {
|
||
|
|
return [
|
||
|
|
new C([
|
||
|
|
C::VAR_NAME =>&self::$ID,
|
||
|
|
C::TYPE =>eColumnType::INT,
|
||
|
|
C::AUTO_INCREMENT =>true,
|
||
|
|
C::PRIMARY =>true,
|
||
|
|
C::DEFAULT =>0,
|
||
|
|
C::HIDDEN =>true,
|
||
|
|
]),
|
||
|
|
new C([
|
||
|
|
C::VAR_NAME => &self::$CODE,
|
||
|
|
C::TYPE => eColumnType::VARCHAR,
|
||
|
|
C::LENGTH => 15,
|
||
|
|
]),
|
||
|
|
new C([
|
||
|
|
C::VAR_NAME => &self::$TYPE,
|
||
|
|
C::TYPE => eColumnType::TINYINT,
|
||
|
|
]),
|
||
|
|
new C([
|
||
|
|
C::VAR_NAME => &self::$PROFILE,
|
||
|
|
C::TYPE => eColumnType::INT,
|
||
|
|
]),
|
||
|
|
new C([
|
||
|
|
C::VAR_NAME => &self::$CREATED,
|
||
|
|
C::TYPE => eColumnType::INT,
|
||
|
|
C::DEFAULT => time(),
|
||
|
|
c::HIDDEN=>true,
|
||
|
|
]),
|
||
|
|
];
|
||
|
|
}
|
||
|
|
|
||
|
|
}
|
||
|
|
new Verify();
|
||
|
|
|