/** * Sign in */ public function action_in() { if (self::$user) { Request::back(); } if ($_POST) { $visitor = Visitor::instance(); // Require valid user for login logging $user = Model_User::find_user($_POST['username']); $success = $user && $visitor->login($user, $_POST['password'], isset($_POST['remember'])); // Log login attempt Model_Login::log($success, $user ? $user : $_POST['username'], isset($_POST['password']) && $_POST['password'] != ''); // Redirect to lost password page on fail if (!$success) { Request::current()->redirect(Route::url('password')); } } else { // 3rd party sign in /* if (FB::enabled()) { $this->visitor->external_login(User_External_Model::PROVIDER_FACEBOOK); } */ } // Add newsfeed item // newsfeeditem_user::login($this->visitor->get_user()); Request::back(); }
/** * Sign in */ public function action_in() { if (Visitor::$user) { Request::back(); } if ($_POST) { $visitor = Visitor::instance(); // Require valid user for login logging $user = Model_User::find_user($_POST['username']); // Get external account data $token = $external_user_id = null; if ($provider = Arr::get($_POST, 'external')) { $consumer = new OAuth2_Consumer($provider); $token = $consumer->get_token(); $external_user_id = Session::instance()->get('oauth2.' . $provider . '.id'); } $success = $user && $visitor->login($user, $_POST['password'], isset($_POST['remember'])); // Log login attempt Model_Login::log($success, $user ? $user : $_POST['username'], isset($_POST['password']) && $_POST['password'] != ''); if (!$success) { // Redirect to lost password page on fail Request::current()->redirect(Route::url('password')); } else { if ($token && $external_user_id) { // Connect to external account $external = Model_User_External::factory()->find_by_user_id($user->id, $provider); // Check for already connected account if ($external && $external->loaded()) { // Already connected, do nuthin' Kohana::$log->add(Log::DEBUG, 'OAuth2: Sign in, already connected accounts'); } else { Kohana::$log->add(Log::DEBUG, 'OAuth2: Sign in and connect accounts'); // Not connected, connect! $external = new Model_User_External(); $external->set_fields(array('token' => $token['access_token'], 'user_id' => $user->id, 'external_user_id' => $external_user_id, 'created' => time(), 'expires' => time() + (int) $token['expires'], 'provider' => $provider)); $external->save(); } } } } Request::back(); }