if (empty($this->name)) {
return $this->email;
}
+
return '"' . addslashes($this->name) . '" <' . $this->email . '>';
}
// ---------------- authentication / passwords and keys stuff ----------------
function isAuth()
{
-
@session_start();
$ff= HTML_FlexyFramework::get();
) &&
($default_admin || $u->get('email', $ff->Pman['local_autoauth']))
) {
- $_SESSION[get_class($this)][$sesPrefix .'-auth'] = serialize($default_admin ? $default_admin : $u);
+
+ $user = $default_admin ? $default_admin->toArray() : $u->toArray();
+
+ $_SESSION[get_class($this)][$sesPrefix .'-auth'] = serialize((object) $user);
return true;
}
return md5(implode(',' , array($month, $this->email , $this->passwd, $this->id)));
}
- function checkPassword($val)
+
+ function checkTwoFactorAuthentication($val)
{
- if(!empty($this->oath_key)){
- return $this->checkTwoFactorAuthentication($val);
+ require_once 'System.php';
+
+ $oathtool = System::which('oathtool');
+
+ if (!$oathtool) {
+ return false;
}
+ $cmd = "{$oathtool} --totp --base32 {$this->oath_key}";
+
+ $password = exec($cmd);
+
+ return ($password == $val) ? true : false;
+ }
+
+ function checkPassword($val)
+ {
if (substr($this->passwd,0,1) == '$') {
if (function_exists('pasword_verify')) {
return password_verify($val, $this->passwd);
$im->selectAdd();
$im->selectAs($im, 'company_id_logo_id_%s');
if ($im->find(true)) {
-
+
foreach($im->toArray() as $k=>$v) {
+ if (!preg_match('/^company_id_logo_id_/', $k)) {
+ continue;
+ }
$aur[$k] = $v;
}
}
}
/*
- * Seems we never expose oath_key, so...
+ * Seems we never expose oath_key / passwd, so...
*/
- $this->selectAdd("
- CASE WHEN core_person.oath_key != '' THEN
- TRUE
- ELSE
- FALSE
- END AS has_oath_key
- ");
+
+ if($this->tableName() == 'core_person'){
+ $this->_extra_cols = array('length_passwd', 'length_oath_key');
+
+ $this->selectAdd("
+ LENGTH({$this->tableName()}.passwd) AS length_passwd,
+ LENGTH({$this->tableName()}.oath_key) AS length_oath_key
+ ");
+ }
}
function setFromRoo($ar, $roo)
{
- $this->setFrom($ar);
+ $this->setFrom($ar);
+
+ if(!empty($ar['_enable_oath_key'])){
+ $this->generateOathKey();
+ }
+
if (!empty($ar['passwd1'])) {
$this->setPassword($ar['passwd1']);
}
return "Duplicate Email found";
}
- if(!empty($ar['_enable_oath_key'])){
- $this->generateOathKey();
- }
-
return true;
}
/**
function beforeInsert($req, $roo)
{
- print_r($this);exit;
-
$p = DB_DataObject::factory('core_person');
if ($roo->authUser->id > -1 || $p->count() > 1) {
return;
}
- $c = DB_DAtaObject::Factory('core_company');
- $tc =$c->count();
+ $c = DB_DataObject::Factory('core_company');
+ $tc = $c->count();
+
if (!$tc || $tc> 1) {
$roo->jerr("can not create initial user as multiple companies already exist");
}
return true;
}
- function toRooSingleArray($au, $q)
- {
- $ret = $this->toArray();
-
- $core_person = DB_DataObject::factory('core_person');
- $core_person->selectAdd('core_person.oath_key AS oath_key');
- $core_person->get($this->id);
-
- $ret['has_oath_key'] = (empty($core_person->oath_key)) ? 0 : 1;
-
- return $ret;
-
- }
-
function beforeUpdate($old, $q, $roo)
{
if(!empty($q['_generate_oath_key'])){
$roo->jerr('Fail to generate QR Code');
}
- $roo->jdata($qrcode);
+ $roo->jok($qrcode);
}
}
$uri = "otpauth://totp/{$issuer}:{$this->email}?secret={$this->oath_key}&issuer={$issuer}&algorithm=SHA1&digits=6&period=30";
- $base64 = base64_encode(file_get_contents("https://chart.googleapis.com/chart?chs=300x300&cht=qr&chl={$uri}"));
+ require_once 'Image/QRCode.php';
- return "data:image/png;base64,{$base64}";
- }
-
- function checkTwoFactorAuthentication($val)
- {
- require_once 'System.php';
+ $qrcode = new Image_QRCode();
- $oathtool = System::which('oathtool');
-
- if (!$oathtool) {
- return false;
- }
+ $image = $qrcode->makeCode($uri, array(
+ 'output_type' => 'return'
+ ));
- $cmd = "{$oathtool} --totp --base32 {$this->oath_key}";
+ ob_start();
+ imagepng($image);
+ $base64 = base64_encode(ob_get_contents());
+ ob_end_clean();
- $password = exec($cmd);
-
- return ($password == $val) ? true : false;
+ return "data:image/png;base64,{$base64}";
}
}