/** * gets info from social network. If profile already linked to user authenticates, otherwise create new user instance * @throws \Kohana_Database_Exception */ public function action_uloginAuth() { $s = file_get_contents('http://ulogin.ru/token.php?token=' . $_POST['token'] . '&host=' . $_SERVER['HTTP_HOST']); $user = json_decode($s, true); if (strlen($user['error']) > 0) { $this->response->body($this->template->fetch('internal.tpl')); return; } $condition = (new \DBCriteria())->addColumnCondition(['uid' => $user['uid'], 'network' => $user['network']]); /** @var $ULogin \Model\ULogin */ $ULogin = \Model\ULogin::model()->with('user')->find($condition); if (null === $ULogin) { \Session::instance()->set('UloginData', $user); $user['bdate'] = date('Y-m-d', strtotime($user['bdate'])); $user_model = new User(); $user_model->login = $user['login']; $user_model->first_name = $user['first_name']; $user_model->email = $user['email']; $access_level = new \Auth\Access(); $access_level->set(\Auth\Access::User_Login); $user_model->access_level = $access_level->getValue(); if (!$user_model->save()) { throw new \Kohana_Database_Exception('Unable to save user model'); } $ULogin = new ULogin(); $ULogin->network = $user['network']; $ULogin->uid = $user['uid']; $ULogin->profile = $user['identity']; $ULogin->user_id = $user_model->id; if (!$ULogin->save()) { $this->response->body('Unable to save social network data'); } \Auth\Base::startSession($ULogin['user']); $this->redirect(\Route::get('pages')->uri(['controller' => 'Map', 'action' => 'Add'])); } else { \Auth\Base::startSession($ULogin['user']); $this->redirect(\Route::get('pages')->uri(['controller' => 'Map', 'action' => 'Add'])); } }
public function action_register() { if (!\Request::current()->is_ajax()) { \Assets::js('register', base_UI . 'js/Auth/register.js'); $this->response->body($this->template->fetch('Auth/register.tpl')); } else { $attrs = ['email', 'pass', 'pass2', 'first_name', 'bdate']; foreach ($attrs as $item) { if (!isset($_POST[$item])) { $this->response->body(json_encode(['code' => -3])); return; } } if ($userInfo = User::model()->findByAttributes(['email' => $_POST['email']])) { $this->response->body(json_encode(['code' => -4])); return; } if ($_POST['pass'] !== $_POST['pass2']) { $this->response->body(json_encode(['code' => -1])); return; } //Create new account $_POST['last_login'] = time(); $user_id = \Auth\Base::create($_POST); if ($user_id == false) { $this->response->body(json_encode(['code' => -2])); return true; } else { $this->response->body(json_encode(['code' => true])); return true; } } }
/** * @return bool|\Model\UserSession */ public function isGuest() { $status = \Auth\Base::Check(); if ($status == false) { return true; } else { $data = User::model()->findByPk($status->iduser); \Registry::setCurrentUser($data); return false; } }