Exemple #1
0
 /**
  * Returns the password.
  *
  * @return string|null
  */
 public function getPassword()
 {
     return parent::getPassword();
 }
Exemple #2
0
 /**
  * Handle logging in / logging out a user.
  *
  * @return Response
  */
 public function login()
 {
     $status = 401;
     try {
         // Set login credentials
         $credentials = array('email' => Request::getUser(), 'password' => Request::getPassword());
         // Try to authenticate the user
         $response = Sentry::authenticate($credentials, false);
         $status = 200;
     } catch (\Cartalyst\Sentry\Users\LoginRequiredException $e) {
         $response = array('message' => 'Provided information is not valid.', 'errors' => array(array('field' => 'email', 'message' => 'Login field is required.')));
     } catch (\Cartalyst\Sentry\Users\PasswordRequiredException $e) {
         $response = array('message' => 'Provided information is not valid.', 'errors' => array(array('field' => 'password', 'message' => 'Password field is required.')));
     } catch (\Cartalyst\Sentry\Users\WrongPasswordException $e) {
         $response = array('message' => 'Provided information is not valid.', 'errors' => array(array('field' => 'password', 'message' => 'Wrong password, try again.')));
     } catch (\Cartalyst\Sentry\Users\UserNotFoundException $e) {
         $response = array('message' => 'User was not found.');
     } catch (\Cartalyst\Sentry\Users\UserNotActivatedException $e) {
         $response = array('message' => 'Your account is not yet activated.');
     } catch (\Cartalyst\Sentry\Throttling\UserSuspendedException $e) {
         $response = array('message' => 'Your account is suspended.');
     } catch (\Cartalyst\Sentry\Throttling\UserBannedException $e) {
         $response = array('message' => 'Your account is banned.');
     }
     // Get current client
     $client = API::getClient();
     // Logging in user
     if ($status == 200) {
         $clientEndpoint = $client->endpoint;
         $clientScopeIds = API::getResource()->getScopeIds();
         $clientScopes = API::getResource()->getScopes();
         $scopes = array();
         if (!empty($clientScopeIds)) {
             foreach ($clientScopeIds as $id) {
                 $scopes[] = array('id' => $id);
             }
         }
         unset($clientScopeIds);
         if (!is_array($clientScopes)) {
             $clientScopes = array();
         }
         // Create a new client endpoint if not exist
         if (!is_object($clientEndpoint)) {
             $redirectUri = Request::getSchemeAndHttpHost();
             $clientEndpoint = OauthClientEndpoint::create(array('client_id' => $client->id, 'redirect_uri' => $redirectUri));
         } else {
             $redirectUri = $clientEndpoint->redirect_uri;
         }
         // Create a new authorization code
         $authCode = API::newAuthorizeRequest('user', $response->id, array('client_id' => $client->id, 'redirect_uri' => $redirectUri, 'scopes' => $scopes));
         // Authorize the client to a user
         if (!empty($authCode)) {
             $params = array('grant_type' => 'authorization_code', 'client_id' => $client->id, 'client_secret' => $client->secret, 'redirect_uri' => $redirectUri, 'code' => $authCode, 'scope' => implode(',', $clientScopes), 'state' => time());
             $authorizationResponse = API::performAccessTokenFlow(false, $params);
             if (array_key_exists('status', $authorizationResponse)) {
                 $status = $authorizationResponse['status'];
                 $headers = $authorizationResponse['headers'];
                 unset($authorizationResponse['status']);
                 unset($authorizationResponse['headers']);
                 return API::resourceJson($authorizationResponse, $status, $headers);
             }
             // Merge user data with the new authorization data
             $authorizationResponse['user'] = new UserTemplate($response);
             $response = $authorizationResponse;
             unset($authorizationResponse);
         } else {
             $response = array('message' => 'There was a problem while logging you in, please try again or contact customer support.');
             $status = 500;
         }
         unset($scopes);
         unset($clientScopes);
         // Logout user
     } else {
         $user = null;
         try {
             $user = Sentry::getUser();
         } catch (\Cartalyst\Sentry\Users\UserNotFoundException $e) {
         }
         if (!is_null($user) and !is_null($client)) {
             // Cleanup OAuth session
             $session = new FluentSession();
             $session->deleteSession($client->id, 'user', $user->getId());
             unset($session);
             // Logout user via sentry
             Sentry::logout();
         }
         unset($user);
     }
     return API::resourceJson($response, $status);
 }
Exemple #3
0
<?php

/*
|--------------------------------------------------------------------------
| Application Routes
|--------------------------------------------------------------------------
|
| Here is where you can register all of the routes for an application.
| It's a breeze. Simply tell Laravel the URIs it should respond to
| and give it the controller to call when that URI is requested.
|
*/
use Illuminate\Support\Facades\Request;
Route::filter('auth.basic', function () {
    $user = Request::getUser();
    $password = Request::getPassword();
    $systemUser = env('AUTH_USER', false);
    $systemPassword = env('AUTH_PASSWORD', false);
    if ((!empty($systemUser) || !empty($systemPassword)) && ($user != $systemUser || $password != $systemPassword)) {
        $response = Response::make('Not authorized', 401);
        $response->header('WWW-Authenticate', 'Basic realm="Login to My Github"');
        return $response;
    }
});
Route::group(['before' => 'auth.basic'], function () {
    Route::get('/', ['as' => 'default', 'uses' => 'Repositories\\IndexController@showIndex']);
    // Repository list
    Route::get('repo/{login}/{repo}', ['as' => 'branches', 'uses' => 'Branches\\IndexController@showIndex']);
    // Activity
    Route::get('activity/live', ['as' => 'get_live_activity', 'uses' => 'Activity\\LiveController@getActivity']);
    Route::get('activity/{page?}', ['as' => 'activity', 'uses' => 'Activity\\IndexController@showIndex']);