103 lines
3.0 KiB
PHP
103 lines
3.0 KiB
PHP
<?php
|
|
|
|
class Crunchbutton_Auth extends Crunchbutton_Auth_Base {
|
|
|
|
public function init() {
|
|
|
|
}
|
|
|
|
public function postInit() {
|
|
// if we dont have a user lets check for a facebook user.
|
|
// not sure if theres any way to avoid this, but if a fb user is found, we have to make a fb request
|
|
// which take a little bit of time
|
|
if (!$this->user()->id) {
|
|
// check for a facebook cookie
|
|
foreach ($_COOKIE as $key => $value) {
|
|
if (preg_match('/^fbsr_.*$/', $key)) {
|
|
// we found a cookie! perform a facebook authentication via the api
|
|
$this->_facebook = new Crunchbutton_Auth_Facebook;
|
|
$this->fbauth();
|
|
break;
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
public function fbauth() {
|
|
// we have a facebook user
|
|
if ($this->facebook()->fbuser()->id) {
|
|
$createNewUser = ( $this->user()->id_user ) ? false : true;
|
|
$user = User::facebookCreate($this->facebook()->fbuser()->id, $createNewUser);
|
|
if ($user) {
|
|
$this->setUser($user);
|
|
}
|
|
}
|
|
return $this;
|
|
}
|
|
|
|
public function setUser($user) {
|
|
$this->_user = $user;
|
|
$this->session()->id_user = $user->id_user;
|
|
$this->session()->date_active = date('Y-m-d H:i:s');
|
|
$this->session()->generateAndSaveToken();
|
|
setcookie('token', $this->session()->token, (new DateTime('3000-01-01'))->getTimestamp(), '/');
|
|
}
|
|
|
|
public function doAuth($type, $id) {
|
|
$auth = Crunchbutton_User_Auth::byTypeId($type,$id);
|
|
if ($auth->active && $auth->user()->active) {
|
|
$this->_user = $auth->user();
|
|
$this->session()->id_user = $this->user()->id_user;
|
|
$this->session()->id_user_auth = $auth->id_user_auth;
|
|
$this->session()->save();
|
|
return true;
|
|
}
|
|
return false;
|
|
}
|
|
|
|
public function doAuthByLocalUser( $params ) {
|
|
$auth = User_Auth::localLogin( $params['email'], $params['password'] );
|
|
if ( $auth->user()->active ) {
|
|
$this->_user = $auth->user();
|
|
$this->session()->id_user = $this->user()->id_user;
|
|
$this->session()->id_user_auth = $auth->id_user_auth;
|
|
$this->session()->date_active = date('Y-m-d H:i:s');
|
|
$this->session()->generateAndSaveToken();
|
|
setcookie('token', $this->session()->token, (new DateTime('3000-01-01'))->getTimestamp(), '/');
|
|
return true;
|
|
}
|
|
return false;
|
|
}
|
|
|
|
public function user($user = null) {
|
|
if (isset($user)) {
|
|
$this->_user = $user;
|
|
} elseif (!isset($this->_user)) {
|
|
$this->_user = new Crunchbutton_User;
|
|
}
|
|
|
|
return $this->_user;
|
|
}
|
|
|
|
public static function load($user, $profile) {
|
|
$user->permalink = $profile->username ? $profile->username : $profile->id;
|
|
$user->fbid = $profile->id;
|
|
$user->first_name = $profile->first_name;
|
|
$user->last_name = $profile->last_name;
|
|
$user->birthday = $profile->birthday;
|
|
$user->email = $profile->email;
|
|
$user->locale = $profile->locale;
|
|
$user->gender = $profile->gender;
|
|
$user->timezone = $profile->timezone;
|
|
$user->saving_from = $user->saving_from.'Auth::load - ';
|
|
$user->save();
|
|
}
|
|
|
|
public function userObject($params = null) {
|
|
if ($params) {
|
|
return new Crunchbutton_User($params);
|
|
} else {
|
|
return new Crunchbutton_User;
|
|
}
|
|
}
|
|
} |