/** * Login ar register new oneauth_clients * * @static * @access public * @param array $user_data * @return Redirect */ public static function login($user_data) { $client = Client::where('provider', '=', $user_data['provider'])->where('uid', '=', $user_data['info']['uid'])->first(); if (is_null($client)) { $client = new Client(array('uid' => $user_data['info']['uid'], 'provider' => $user_data['provider'], 'user_id' => 0)); } // Link to user using Auth. if (!is_null($user = IoC::resolve('oneauth.driver: auth.user'))) { $client->user_id = $user->id; } $client->access_token = $user_data['token']->access_token ?: null; $client->secret = $user_data['token']->secret ?: null; $client->refresh_token = $user_data['token']->refresh_token ?: null; $client->save(); Event::fire('oneauth.logged', array($client, $user_data)); $user_data['token'] = serialize($user_data['token']); Session::put('oneauth', $user_data); return Core::redirect(IoC::resolve('oneauth.driver: auth.check') ? 'logged_in' : 'registration'); }
/** * Determine whether authenticated user should be continue to login or * register new user * * @static * @access public * @param object $strategy * @return void * @throws Strategy\Exception */ public static function login_or_register($strategy) { $token = $strategy->callback(); $user_info = static::get_user_info($strategy, $token); $user_data = array('token' => $token, 'info' => $user_info, 'provider' => $strategy->provider->name); return Core::login($user_data); }