File: //proc/self/root/home/awaldron/public_html/archive/ressyn/include/classes/awAuth.php
<?php
/* Class AWW_Auth.php by Alan Waldron
* http://www.alanwaldron.com
* October 28, 2008
*/
class awAuth extends awDatabase {
var $user_id;
var $user_email;
var $user_type;
function awAuth($uid) {
if (!empty($uid)) {
$user = awDatabase::quickRSET("SELECT uid, user_email, user_type_id FROM user WHERE uid=".$_SESSION[auth_uid]);
if (count($user) > 0) {
$this->user_email = $user[0][user_email];
$this->user_id = $user[0][uid];
$this->user_type = $user[0][user_type_id];
return TRUE;
} else return FALSE;
} else return FALSE;
}
function auto_login() {
if (!$this->is_logged()) {
// Look for valid cookie
$cn1 = $this->cookie_name_encode("auth_email");
$cn2 = $this->cookie_name_encode("auth_uid");
$cn3 = $this->cookie_name_encode("auth_type");
if (isset($_COOKIE[$cn1]) && isset($_COOKIE[$cn2])) {
if (($_COOKIE[$cn1] != "") && ($_COOKIE[$cn2] != "") && ($_COOKIE[$cn3] != "")) {
$this->user_email = cookie_value_decode($_COOKIE[$cn1]);
$this->user_id = cookie_value_decode($_COOKIE[$cn2]);
$this->user_type = cookie_value_decode($_COOKIE[$cn3]);
$this->set_last_login($this->user_id);
$_SESSION[auth_uid] = $this->user_id;
return true;
} else return false;
}
} else return true;
}
function cookie_value_decode($u) {
$return = "";
$cud = strrev($u);
$cud = preg_replace("/[A-Z]+/si","|",$cud);
$chars = explode("|",$cud);
for ($i=0; $i < count($chars); $i++) {
$return .= chr((int)$chars[$i]);
}
return trim($return);
}
function cookie_value_encode($u) {
$cue = "";
for ($i=0; $i < strlen($u); $i++) {
if ($i!=0) $cue .= str_random(1,2);
$cue .= ord($u[$i]);
}
return strrev($cue);
}
function cookie_name_encode($cn) {
return str_replace(array('=','+','/'),'',base64_encode($cn));
}
function force_login() {
if (!$this->get_uid()) $this->auto_login();
if (!$this->get_uid()) {
$_SESSION[force_referrer] = self();
header("Location: /account/sign-in/required");
}
}
function fullname() {
if ($this->is_logged()) {
$name = awDatabase::quickROW("SELECT user_fname, user_lname FROM user WHERE uid=".$this->user_id);
return $name[user_fname].' '.$name[user_lname];
} else {
return 'No user signed in.';
}
}
function get_uid() {
return $this->user_id;
}
function get_user_type() {
if ($this->is_logged()) return $this->user_type;
else return FALSE;
}
function is_logged() {
if (isset($this->user_type)) return TRUE;
else return FALSE;
}
function login($e,$p,$c=0,$key_req=1) {
if (!$this->is_logged()) {
$user = awDatabase::quickRSET("SELECT uid, user_email, user_type_id FROM user WHERE user_email='".$e."' AND user_pass='".md5($p)."'".($key_req?" AND user_regkey='0'":""));
if (count($user) > 0) {
$this->user_email = $user[0][user_email];
$this->user_id = $user[0][uid];
$this->user_type = $user[0][user_type_id];
$this->set_last_login($this->user_id);
if ($c == 1) $this->set_login_cookie($this->user_id,$this->user_email,$this->user_type);
$_SESSION[auth_uid] = $this->user_id;
return TRUE;
} else {
return FALSE;
}
} else return TRUE;
}
function logout() {
setcookie($this->cookie_name_encode("auth_email"),"",1);
setcookie($this->cookie_name_encode("auth_uid"),"",1);
setcookie($this->cookie_name_encode("auth_user_type"),"",1);
session_unset();
session_destroy();
}
function set_last_login($uid) {
return awDatabase::quickUPDATE("UPDATE user SET user_last_login=NOW() WHERE uid=".$uid);
}
function set_login_cookie($u,$e,$t) { // Set cookie to keep user logged in.
setcookie($this->cookie_name_encode("auth_email"),$this->cookie_value_encode($e),(time()+86400*7)); //expires in 7 days
setcookie($this->cookie_name_encode("auth_uid"),$this->cookie_value_encode($u),(time()+86400*7)); //expires in 7 days
setcookie($this->cookie_name_encode("auth_user_type"),$this->cookie_value_encode($t),(time()+86400*7)); //expires in 7 days
}
}
?>