Beispiel #1
0
 /**
  * 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();
 }
Beispiel #2
0
 /**
  * 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();
 }