mirror of
https://bitbucket.org/jsuto/piler.git
synced 2025-06-12 23:17:02 +02:00
added google authenticator support to the gui
This commit is contained in:
@ -3,6 +3,7 @@
|
||||
class ModelUserAuth extends Model {
|
||||
|
||||
public function checkLogin($username = '', $password = '') {
|
||||
$session = Registry::get('session');
|
||||
$ok = 0;
|
||||
|
||||
if($username == '' || $password == '') { return 0; }
|
||||
@ -47,17 +48,19 @@ class ModelUserAuth extends Model {
|
||||
|
||||
|
||||
if($ok == 1) {
|
||||
$_SESSION['username'] = $query->row['username'];
|
||||
$_SESSION['uid'] = $query->row['uid'];
|
||||
$_SESSION['admin_user'] = $query->row['isadmin'];
|
||||
$_SESSION['email'] = $username;
|
||||
$_SESSION['domain'] = $query->row['domain'];
|
||||
$_SESSION['realname'] = $query->row['realname'];
|
||||
$session->set("username", $username);
|
||||
$session->set("uid", $query->row['uid']);
|
||||
$session->set("admin_user", $query->row['isadmin']);
|
||||
$session->set("email", $username);
|
||||
$session->set("domain", $query->row['domain']);
|
||||
$session->set("realname", $query->row['realname']);
|
||||
|
||||
$_SESSION['auditdomains'] = $this->model_user_user->get_users_all_domains($query->row['uid']);
|
||||
$_SESSION['emails'] = $this->model_user_user->get_users_all_email_addresses($query->row['uid']);
|
||||
$_SESSION['folders'] = $this->model_folder_folder->get_all_folder_ids($query->row['uid']);
|
||||
$_SESSION['extra_folders'] = $this->model_folder_folder->get_all_extra_folder_ids($query->row['uid']);
|
||||
$session->set("auditdomains", $this->model_user_user->get_users_all_domains($query->row['uid']));
|
||||
$session->set("emails", $this->model_user_user->get_users_all_email_addresses($query->row['uid']));
|
||||
$session->set("folders", $this->model_folder_folder->get_all_folder_ids($query->row['uid']));
|
||||
$session->set("extra_folders", $this->model_folder_folder->get_all_extra_folder_ids($query->row['uid']));
|
||||
|
||||
$this->is_ga_code_needed();
|
||||
|
||||
return 1;
|
||||
}
|
||||
@ -190,6 +193,8 @@ class ModelUserAuth extends Model {
|
||||
|
||||
|
||||
private function add_session_vars($name = '', $email = '', $emails = array(), $role = 0) {
|
||||
$session = Registry::get('session');
|
||||
|
||||
$a = explode("@", $email);
|
||||
|
||||
$uid = $this->model_user_user->get_uid_by_email($email);
|
||||
@ -198,23 +203,26 @@ class ModelUserAuth extends Model {
|
||||
$query = $this->db->query("INSERT INTO " . TABLE_EMAIL . " (uid, email) VALUES(?,?)", array($uid, $email));
|
||||
}
|
||||
|
||||
$_SESSION['username'] = $name;
|
||||
$_SESSION['uid'] = $uid;
|
||||
|
||||
$session->set("username", $email);
|
||||
$session->set("uid", $uid);
|
||||
|
||||
if($role > 0) {
|
||||
$_SESSION['admin_user'] = $role;
|
||||
$session->set("admin_user", $role);
|
||||
} else {
|
||||
$_SESSION['admin_user'] = 0;
|
||||
$session->set("admin_user", 0);
|
||||
}
|
||||
|
||||
$_SESSION['email'] = $email;
|
||||
$_SESSION['domain'] = $a[1];
|
||||
$_SESSION['realname'] = $name;
|
||||
$session->set("email", $email);
|
||||
$session->set("domain", $a[1]);
|
||||
$session->set("realname", $name);
|
||||
|
||||
$_SESSION['auditdomains'] = $this->model_domain_domain->get_your_all_domains_by_email($email);
|
||||
$_SESSION['emails'] = $emails;
|
||||
$_SESSION['folders'] = array();
|
||||
$_SESSION['extra_folders'] = array();
|
||||
$session->set("auditdomains", $this->model_domain_domain->get_your_all_domains_by_email($email));
|
||||
$session->set("emails", $emails);
|
||||
$session->set("folders", array());
|
||||
$session->set("extra_folders", array());
|
||||
|
||||
$this->is_ga_code_needed();
|
||||
}
|
||||
|
||||
|
||||
@ -243,6 +251,8 @@ class ModelUserAuth extends Model {
|
||||
|
||||
|
||||
private function checkLoginAgainstIMAP($username = '', $password = '') {
|
||||
$session = Registry::get('session');
|
||||
|
||||
$user = array();
|
||||
|
||||
$imap = new Zend_Mail_Protocol_Imap(IMAP_HOST, IMAP_PORT, IMAP_SSL);
|
||||
@ -251,7 +261,7 @@ class ModelUserAuth extends Model {
|
||||
|
||||
$this->add_session_vars($username, $username, array($username), 0);
|
||||
|
||||
$_SESSION['password'] = $password;
|
||||
$session->set("password", $password);
|
||||
|
||||
return 1;
|
||||
}
|
||||
@ -357,6 +367,17 @@ class ModelUserAuth extends Model {
|
||||
}
|
||||
|
||||
|
||||
private function is_ga_code_needed() {
|
||||
$session = Registry::get('session');
|
||||
|
||||
$query = $this->db->query("SELECT ga_enabled FROM " . TABLE_USER_SETTINGS . " WHERE username=?", array($session->get("username")));
|
||||
|
||||
if(isset($query->row['ga_enabled']) && $query->row['ga_enabled'] == 1) {
|
||||
$session->set("ga_block", 1);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
public function change_password($username = '', $password = '') {
|
||||
if($username == "" || $password == ""){ return 0; }
|
||||
|
||||
|
@ -39,6 +39,53 @@ class ModelUserPrefs extends Model {
|
||||
return 1;
|
||||
}
|
||||
|
||||
|
||||
|
||||
public function get_ga_settings($username = '') {
|
||||
$data = array('ga_enabled' => 0, 'ga_secret' => '');
|
||||
|
||||
if($username == ""){ return $data; }
|
||||
|
||||
$GA = new PHPGangsta_GoogleAuthenticator();
|
||||
|
||||
$query = $this->db->query("SELECT ga_enabled, ga_secret FROM " . TABLE_USER_SETTINGS . " WHERE username=?", array($username));
|
||||
|
||||
if(isset($query->row['ga_enabled'])) {
|
||||
$data['ga_enabled'] = $query->row['ga_enabled'];
|
||||
$data['ga_secret'] = $query->row['ga_secret'];
|
||||
|
||||
if($data['ga_secret'] == '') {
|
||||
$data['ga_secret'] = $GA->createSecret();
|
||||
$this->update_ga_secret($username, $data['ga_secret']);
|
||||
}
|
||||
}
|
||||
else {
|
||||
$query = $this->db->query("INSERT INTO " . TABLE_USER_SETTINGS . " (username, ga_enabled, ga_secret) VALUES(?,0,?)", array($username, $GA->createSecret()));
|
||||
}
|
||||
|
||||
|
||||
return $data;
|
||||
}
|
||||
|
||||
|
||||
public function update_ga_secret($username = '', $ga_secret = '') {
|
||||
if($username == "" || $ga_secret == "") { return 0; }
|
||||
|
||||
$query = $this->db->query("UPDATE " . TABLE_USER_SETTINGS . " SET ga_secret=? WHERE username=?", array($ga_secret, $username));
|
||||
|
||||
return 1;
|
||||
}
|
||||
|
||||
|
||||
public function toggle_ga($username = '', $ga_enabled = '') {
|
||||
if($username == "" || $ga_enabled < 0 || $ga_enabled > 1) { return 0; }
|
||||
|
||||
$query = $this->db->query("UPDATE " . TABLE_USER_SETTINGS . " SET ga_enabled=? WHERE username=?", array($ga_enabled, $username));
|
||||
|
||||
return 1;
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
||||
?>
|
||||
|
Reference in New Issue
Block a user