├── .gitignore ├── src ├── Providers │ ├── DingoJWTDriverServiceProvider.php │ ├── LumenDingoAdapterServiceProvider.php │ └── LumenJWTServiceProvider.php ├── helpers.php └── config │ ├── auth.php │ └── session.php ├── composer.json ├── LICENSE.rst ├── README.md └── composer.lock /.gitignore: -------------------------------------------------------------------------------- 1 | /vendor/ 2 | -------------------------------------------------------------------------------- /src/Providers/DingoJWTDriverServiceProvider.php: -------------------------------------------------------------------------------- 1 | app->make(Auth::class)->extend('jwt', function ($app) { 20 | return new JWT($app->make(JWTAuth::class)); 21 | }); 22 | } 23 | } 24 | -------------------------------------------------------------------------------- /composer.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "krisanalfa/lumen-dingo-adapter", 3 | "description": "Using Dingo + JWT in your Lumen Based Application with no pain", 4 | "type": "library", 5 | "license": "MIT", 6 | "autoload": { 7 | "psr-4": { 8 | "Zeek\\LumenDingoAdapter\\": "src/" 9 | }, 10 | "files": [ 11 | "src/helpers.php" 12 | ] 13 | }, 14 | "require": { 15 | "php": ">=5.5.9", 16 | "illuminate/hashing": "^5.4", 17 | "tymon/jwt-auth": "0.5.*", 18 | "illuminate/cookie": "^5.4", 19 | "illuminate/routing": "^5.4", 20 | "illuminate/http": "^5.4", 21 | "dingo/api": "1.0.x@dev" 22 | }, 23 | "authors": [ 24 | { 25 | "name": "Krisan Alfa Timur", 26 | "email": "krisan47@gmail.com" 27 | } 28 | ], 29 | "minimum-stability": "stable", 30 | "prefer-dist": true 31 | } 32 | -------------------------------------------------------------------------------- /src/helpers.php: -------------------------------------------------------------------------------- 1 | basePath().'/config'.($path ? '/'.$path : $path); 18 | } 19 | } 20 | 21 | /** 22 | * Because Lumen has no storage_path function, we need to add this function 23 | * to make caching configuration works. 24 | */ 25 | if (!function_exists('storage_path')) { 26 | /** 27 | * Get the configuration path. 28 | * 29 | * @param string $path 30 | * 31 | * @return string 32 | */ 33 | function storage_path($path = '') 34 | { 35 | return app()->basePath().'/storage'.($path ? '/'.$path : $path); 36 | } 37 | } 38 | -------------------------------------------------------------------------------- /LICENSE.rst: -------------------------------------------------------------------------------- 1 | Copyright 2017 Krisan Alfa Timur 2 | 3 | Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: 4 | 5 | The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. 6 | 7 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. 8 | -------------------------------------------------------------------------------- /src/Providers/LumenDingoAdapterServiceProvider.php: -------------------------------------------------------------------------------- 1 | configure('auth'); 18 | $this->configure('session'); 19 | } 20 | 21 | /** 22 | * Register the application services. 23 | * 24 | * @return void 25 | */ 26 | public function register() 27 | { 28 | // JWTAuth 29 | $this->app->register(LumenJWTServiceProvider::class); 30 | 31 | // Dingo 32 | $this->app->register(LumenServiceProvider::class); 33 | 34 | // Configure our JWT for Dingo 35 | $this->app->register(DingoJWTDriverServiceProvider::class); 36 | } 37 | 38 | /** 39 | * Configure provider. 40 | * 41 | * @param string $name 42 | * 43 | * @return void 44 | */ 45 | protected function configure($name) 46 | { 47 | $path = $this->app->basePath("config/{$name}.php"); 48 | 49 | if (!is_readable($path)) { 50 | $path = dirname(__DIR__) . "/config/{$name}.php"; 51 | } 52 | 53 | $this->app->make('config')->set($name, require $path); 54 | } 55 | } 56 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # Dingo Adapter for Lumen 2 | Using Dingo + JWT in your Lumen Based Application with no pain. 3 | 4 | ### Installation 5 | 6 | ``` 7 | composer require krisanalfa/lumen-dingo-adapter 8 | ``` 9 | 10 | ### Configuration 11 | 12 | In your `bootstrap/app.php` file add this line: 13 | 14 | ```php 15 | $app->register(Zeek\LumenDingoAdapter\Providers\LumenDingoAdapterServiceProvider::class); 16 | ``` 17 | 18 | Below is environment variable you should configure to make this package works out of the box: 19 | 20 | ```env 21 | API_PREFIX=api 22 | ``` 23 | 24 | ### Guarding Your Routes via Dingo Routing 25 | 26 | ```php 27 | $app->make(Dingo\Api\Routing\Router::class)->version('v1', function ($api) { 28 | $api->group([ 29 | 'middleware' => 'api.auth', 30 | ], function ($api) { 31 | $api->get('/', 'App\Http\Controllers\DefaultController@index'); 32 | }); 33 | }); 34 | ``` 35 | 36 | ### Quick Start 37 | 38 | I have made a boilerplate [here](https://github.com/krisanalfa/lumen-jwt). Read the docs there to find out how to _Quick Start_ this package. 39 | 40 | 41 | ### LICENSE 42 | Copyright 2017 Krisan Alfa Timur 43 | 44 | Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: 45 | 46 | The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. 47 | 48 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. 49 | -------------------------------------------------------------------------------- /src/config/auth.php: -------------------------------------------------------------------------------- 1 | [ 17 | 'guard' => env('AUTH_GUARD', 'api'), 18 | ], 19 | 20 | /* 21 | |-------------------------------------------------------------------------- 22 | | Authentication Guards 23 | |-------------------------------------------------------------------------- 24 | | 25 | | Next, you may define every authentication guard for your application. 26 | | Of course, a great default configuration has been defined for you 27 | | here which uses session storage and the Eloquent user provider. 28 | | 29 | | All authentication drivers have a user provider. This defines how the 30 | | users are actually retrieved out of your database or other storage 31 | | mechanisms used by this application to persist your user's data. 32 | | 33 | | Supported: "session" 34 | | 35 | | NOTE: "token" driver is not supported in JWT Auth 36 | | 37 | */ 38 | 39 | 'guards' => [ 40 | 'api' => [ 41 | 'provider' => 'jwt', 42 | 'driver' => 'session', 43 | ], 44 | ], 45 | 46 | /* 47 | |-------------------------------------------------------------------------- 48 | | User Providers 49 | |-------------------------------------------------------------------------- 50 | | 51 | | All authentication drivers have a user provider. This defines how the 52 | | users are actually retrieved out of your database or other storage 53 | | mechanisms used by this application to persist your user's data. 54 | | 55 | | If you have multiple user tables or models you may configure multiple 56 | | sources which represent each model / table. These sources may then 57 | | be assigned to any extra authentication guards you have defined. 58 | | 59 | | Supported: "database", "eloquent" 60 | | 61 | */ 62 | 63 | 'providers' => [ 64 | 'jwt' => [ 65 | 'driver' => 'eloquent', 66 | 'model' => App\User::class, 67 | ], 68 | ], 69 | 70 | ]; 71 | -------------------------------------------------------------------------------- /src/config/session.php: -------------------------------------------------------------------------------- 1 | env('SESSION_DRIVER', 'file'), 20 | 21 | /* 22 | |-------------------------------------------------------------------------- 23 | | Session Lifetime 24 | |-------------------------------------------------------------------------- 25 | | 26 | | Here you may specify the number of minutes that you wish the session 27 | | to be allowed to remain idle before it expires. If you want them 28 | | to immediately expire on the browser closing, set that option. 29 | | 30 | */ 31 | 32 | 'lifetime' => 120, 33 | 34 | 'expire_on_close' => false, 35 | 36 | /* 37 | |-------------------------------------------------------------------------- 38 | | Session Encryption 39 | |-------------------------------------------------------------------------- 40 | | 41 | | This option allows you to easily specify that all of your session data 42 | | should be encrypted before it is stored. All encryption will be run 43 | | automatically by Laravel and you can use the Session like normal. 44 | | 45 | */ 46 | 47 | 'encrypt' => false, 48 | 49 | /* 50 | |-------------------------------------------------------------------------- 51 | | Session File Location 52 | |-------------------------------------------------------------------------- 53 | | 54 | | When using the native session driver, we need a location where session 55 | | files may be stored. A default has been set for you but a different 56 | | location may be specified. This is only needed for file sessions. 57 | | 58 | */ 59 | 60 | 'files' => storage_path('framework/sessions'), 61 | 62 | /* 63 | |-------------------------------------------------------------------------- 64 | | Session Database Connection 65 | |-------------------------------------------------------------------------- 66 | | 67 | | When using the "database" or "redis" session drivers, you may specify a 68 | | connection that should be used to manage these sessions. This should 69 | | correspond to a connection in your database configuration options. 70 | | 71 | */ 72 | 73 | 'connection' => null, 74 | 75 | /* 76 | |-------------------------------------------------------------------------- 77 | | Session Database Table 78 | |-------------------------------------------------------------------------- 79 | | 80 | | When using the "database" session driver, you may specify the table we 81 | | should use to manage the sessions. Of course, a sensible default is 82 | | provided for you; however, you are free to change this as needed. 83 | | 84 | */ 85 | 86 | 'table' => 'sessions', 87 | 88 | /* 89 | |-------------------------------------------------------------------------- 90 | | Session Cache Store 91 | |-------------------------------------------------------------------------- 92 | | 93 | | When using the "apc" or "memcached" session drivers, you may specify a 94 | | cache store that should be used for these sessions. This value must 95 | | correspond with one of the application's configured cache stores. 96 | | 97 | */ 98 | 99 | 'store' => null, 100 | 101 | /* 102 | |-------------------------------------------------------------------------- 103 | | Session Sweeping Lottery 104 | |-------------------------------------------------------------------------- 105 | | 106 | | Some session drivers must manually sweep their storage location to get 107 | | rid of old sessions from storage. Here are the chances that it will 108 | | happen on a given request. By default, the odds are 2 out of 100. 109 | | 110 | */ 111 | 112 | 'lottery' => [2, 100], 113 | 114 | /* 115 | |-------------------------------------------------------------------------- 116 | | Session Cookie Name 117 | |-------------------------------------------------------------------------- 118 | | 119 | | Here you may change the name of the cookie used to identify a session 120 | | instance by ID. The name specified here will get used every time a 121 | | new session cookie is created by the framework for every driver. 122 | | 123 | */ 124 | 125 | 'cookie' => 'lumen_session', 126 | 127 | /* 128 | |-------------------------------------------------------------------------- 129 | | Session Cookie Path 130 | |-------------------------------------------------------------------------- 131 | | 132 | | The session cookie path determines the path for which the cookie will 133 | | be regarded as available. Typically, this will be the root path of 134 | | your application but you are free to change this when necessary. 135 | | 136 | */ 137 | 138 | 'path' => '/', 139 | 140 | /* 141 | |-------------------------------------------------------------------------- 142 | | Session Cookie Domain 143 | |-------------------------------------------------------------------------- 144 | | 145 | | Here you may change the domain of the cookie used to identify a session 146 | | in your application. This will determine which domains the cookie is 147 | | available to in your application. A sensible default has been set. 148 | | 149 | */ 150 | 151 | 'domain' => env('SESSION_DOMAIN', null), 152 | 153 | /* 154 | |-------------------------------------------------------------------------- 155 | | HTTPS Only Cookies 156 | |-------------------------------------------------------------------------- 157 | | 158 | | By setting this option to true, session cookies will only be sent back 159 | | to the server if the browser has a HTTPS connection. This will keep 160 | | the cookie from being sent to you if it can not be done securely. 161 | | 162 | */ 163 | 164 | 'secure' => env('SESSION_SECURE_COOKIE', false), 165 | 166 | /* 167 | |-------------------------------------------------------------------------- 168 | | HTTP Access Only 169 | |-------------------------------------------------------------------------- 170 | | 171 | | Setting this value to true will prevent JavaScript from accessing the 172 | | value of the cookie and the cookie will only be accessible through 173 | | the HTTP protocol. You are free to modify this option if needed. 174 | | 175 | */ 176 | 177 | 'http_only' => true, 178 | 179 | ]; -------------------------------------------------------------------------------- /src/Providers/LumenJWTServiceProvider.php: -------------------------------------------------------------------------------- 1 | registerJWTAuthDependency(); 35 | 36 | // JWT itself 37 | $this->registerJWTServiceProvider(); 38 | 39 | // Middleware route registration 40 | $this->registerJwtAuthMiddleware(); 41 | } 42 | 43 | /** 44 | * Here we do some internal function to fulfill JWTAuth dependency. 45 | */ 46 | protected function registerJWTAuthDependency() 47 | { 48 | $this->registerRequest(); 49 | 50 | $this->registerRoutingAlias(); 51 | 52 | $this->registerSessionServiceProvider(); 53 | 54 | $this->registerCookieComponent(); 55 | 56 | $this->registerCacheServiceProvider(); 57 | 58 | $this->registerAuthManagerAlias(); 59 | } 60 | 61 | protected function registerRequest() 62 | { 63 | $this->app->instance(Request::class, Request::capture()); 64 | } 65 | 66 | /** 67 | * Let's alias this route. Since Lumen doesn't use Illuminate Route component, 68 | * we can safely using base response instance to 'hack' JWT Auth dependency. 69 | */ 70 | protected function registerRoutingAlias() 71 | { 72 | $this->app->singleton( 73 | ResponseFactoryContract::class, 74 | ResponseFactory::class 75 | ); 76 | } 77 | 78 | /** 79 | * Register session to application. 80 | */ 81 | protected function registerSessionServiceProvider() 82 | { 83 | $this->registerSessionManager(); 84 | 85 | $this->registerSessionStore(); 86 | } 87 | 88 | protected function registerSessionManager() 89 | { 90 | $this->loadComponent( 91 | SessionManager::class, 92 | 'SessionManager' 93 | ); 94 | } 95 | 96 | protected function registerSessionStore() 97 | { 98 | $this->loadComponent( 99 | Store::class, 100 | 'SessionStore' 101 | ); 102 | } 103 | 104 | /** 105 | * Load session manager component. 106 | * 107 | * @return Closure 108 | */ 109 | protected function loadSessionManagerComponent() 110 | { 111 | return function ($app) { 112 | return $app->loadComponent( 113 | 'session', 114 | SessionServiceProvider::class 115 | ); 116 | }; 117 | } 118 | 119 | /** 120 | * Load session store component. 121 | * 122 | * @return Closure 123 | */ 124 | protected function loadSessionStoreComponent() 125 | { 126 | return function ($app) { 127 | return $app->loadComponent( 128 | 'session', 129 | SessionServiceProvider::class, 130 | 'session.store' 131 | ); 132 | }; 133 | } 134 | 135 | /** 136 | * Register cookie to application. 137 | */ 138 | protected function registerCookieComponent() 139 | { 140 | $this->loadComponent( 141 | CookieJar::class, 142 | 'CookieJar' 143 | ); 144 | } 145 | 146 | /** 147 | * Load cookie component. 148 | * 149 | * @return Closure 150 | */ 151 | protected function loadCookieJarComponent() 152 | { 153 | return function ($app) { 154 | return new CookieJar(); 155 | }; 156 | } 157 | 158 | /** 159 | * Register cache to application. 160 | */ 161 | protected function registerCacheServiceProvider() 162 | { 163 | $this->registerCacheManager(); 164 | 165 | $this->registerMemcachedConnector(); 166 | } 167 | 168 | /** 169 | * Register cache manager. 170 | */ 171 | protected function registerCacheManager() 172 | { 173 | $this->loadComponent( 174 | CacheManager::class, 175 | 'CacheManager' 176 | ); 177 | } 178 | 179 | /** 180 | * Register memcached connector. 181 | */ 182 | protected function registerMemcachedConnector() 183 | { 184 | $this->loadComponent( 185 | MemcachedConnector::class, 186 | 'MemcachedConnector' 187 | ); 188 | } 189 | 190 | /** 191 | * Load cache manager component. 192 | * 193 | * @return Closure 194 | */ 195 | protected function loadCacheManagerComponent() 196 | { 197 | return function ($app) { 198 | $app->configure('cache'); 199 | 200 | return new CacheManager($app); 201 | }; 202 | } 203 | 204 | /** 205 | * Load memcached connector component. 206 | * 207 | * @return Closure 208 | */ 209 | protected function loadMemcachedConnectorComponent() 210 | { 211 | return function ($app) { 212 | return new MemcachedConnector(); 213 | }; 214 | } 215 | 216 | /** 217 | * Register auth manager to application. 218 | */ 219 | protected function registerAuthManagerAlias() 220 | { 221 | $this->app->alias('auth', AuthManager::class); 222 | } 223 | 224 | /** 225 | * Register JWTAuth to application. 226 | */ 227 | protected function registerJWTServiceProvider() 228 | { 229 | $this->registerJwtAuth(); 230 | 231 | $this->registerJWTFacades(); 232 | } 233 | 234 | /** 235 | * Register JWTAuth resolver. 236 | */ 237 | protected function registerJwtAuth() 238 | { 239 | $this->registerBaseJWTAuth(); 240 | 241 | $this->registerJwtAuthProvider(); 242 | } 243 | 244 | /** 245 | * Register JWTAuth base instance resolver. 246 | */ 247 | protected function registerBaseJWTAuth() 248 | { 249 | $this->loadComponent( 250 | TymonJWTAuth::class, 251 | 'JWTAuth' 252 | ); 253 | } 254 | 255 | /** 256 | * Register JWTAuthProvider instance resolver. 257 | */ 258 | protected function registerJwtAuthProvider() 259 | { 260 | $this->loadComponent( 261 | JWTInterface::class, 262 | 'JWTAuthProvider' 263 | ); 264 | } 265 | 266 | /** 267 | * Load JWT Auth component. 268 | * 269 | * @return Closure 270 | */ 271 | protected function loadJWTAuthComponent() 272 | { 273 | return function ($app) { 274 | return $app->loadComponent( 275 | 'jwt', 276 | JWTAuthServiceProvider::class, 277 | TymonJWTAuth::class 278 | ); 279 | }; 280 | } 281 | 282 | /** 283 | * Load JWT Auth component. 284 | * 285 | * @return Closure 286 | */ 287 | protected function loadJWTAuthProviderComponent() 288 | { 289 | return function ($app) { 290 | return $app->loadComponent( 291 | 'jwt', 292 | JWTAuthServiceProvider::class, 293 | JWTInterface::class 294 | ); 295 | }; 296 | } 297 | 298 | /** 299 | * Register JWTAuth facades. 300 | */ 301 | protected function registerJWTFacades() 302 | { 303 | if ($this->shouldRegisterFacades()) { 304 | class_alias(JWTAuthFacade::class, JWTAuth::class); 305 | class_alias(JWTFactoryFacade::class, JWTFactory::class); 306 | } 307 | } 308 | 309 | /** 310 | * Determine if we should register JWT Auth facades. 311 | * 312 | * @return bool 313 | */ 314 | protected function shouldRegisterFacades() 315 | { 316 | return $this->isUsingFacade() === true 317 | && $this->facadeHasNotBeenRegistered() === true; 318 | } 319 | 320 | /** 321 | * Determine if application is using facade. 322 | * 323 | * @return bool 324 | */ 325 | protected function isUsingFacade() 326 | { 327 | return Facade::getFacadeApplication() !== null; 328 | } 329 | 330 | /** 331 | * Determine if JWT Auth facade has not been registered. 332 | * 333 | * @return bool 334 | */ 335 | protected function facadeHasNotBeenRegistered() 336 | { 337 | return class_exists(JWTAuthFacade::class) === false; 338 | } 339 | 340 | /** 341 | * Register JWTAuth middleware. 342 | */ 343 | protected function registerJwtAuthMiddleware() 344 | { 345 | $this->app->routeMiddleware([ 346 | 'jwt.auth' => GetUserFromToken::class, 347 | 'jwt.refresh' => RefreshToken::class, 348 | ]); 349 | } 350 | 351 | /** 352 | * Load component by given bindings an name resolver. 353 | * 354 | * @param array $bindings 355 | * @param string $name 356 | */ 357 | protected function loadComponent($bindings, $name) 358 | { 359 | $aliases = array_values($bindings); 360 | $abstracts = array_keys($bindings); 361 | 362 | foreach ($abstracts as $index => $abstract) { 363 | $this->app->singleton( 364 | $abstract, 365 | $this->{"load{$name}Component"}() 366 | ); 367 | 368 | $this->app->alias( 369 | $abstract, 370 | $aliases[$index] 371 | ); 372 | } 373 | } 374 | } 375 | -------------------------------------------------------------------------------- /composer.lock: -------------------------------------------------------------------------------- 1 | { 2 | "_readme": [ 3 | "This file locks the dependencies of your project to a known state", 4 | "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#composer-lock-the-lock-file", 5 | "This file is @generated automatically" 6 | ], 7 | "content-hash": "da32c462de1fbd74f4d76a4539dbc17b", 8 | "packages": [ 9 | { 10 | "name": "dingo/api", 11 | "version": "dev-master", 12 | "source": { 13 | "type": "git", 14 | "url": "https://github.com/dingo/api.git", 15 | "reference": "46cffad61942caa094dd876155e503b6819c5095" 16 | }, 17 | "dist": { 18 | "type": "zip", 19 | "url": "https://api.github.com/repos/dingo/api/zipball/46cffad61942caa094dd876155e503b6819c5095", 20 | "reference": "46cffad61942caa094dd876155e503b6819c5095", 21 | "shasum": "" 22 | }, 23 | "require": { 24 | "dingo/blueprint": "0.2.*", 25 | "illuminate/routing": "^5.1", 26 | "illuminate/support": "^5.1", 27 | "league/fractal": ">=0.12.0", 28 | "php": "^5.5.9 || ^7.0" 29 | }, 30 | "require-dev": { 31 | "illuminate/auth": "^5.1", 32 | "illuminate/cache": "^5.1", 33 | "illuminate/console": "^5.1", 34 | "illuminate/database": "^5.1", 35 | "illuminate/events": "^5.1", 36 | "illuminate/filesystem": "^5.1", 37 | "illuminate/log": "^5.1", 38 | "illuminate/pagination": "^5.1", 39 | "laravel/lumen-framework": "5.1.* || 5.2.*", 40 | "lucadegasperi/oauth2-server-laravel": "5.0.*", 41 | "mockery/mockery": "~0.9", 42 | "phpunit/phpunit": "^4.8 || ^5.0", 43 | "squizlabs/php_codesniffer": "~2.0", 44 | "tymon/jwt-auth": "1.0.*" 45 | }, 46 | "suggest": { 47 | "lucadegasperi/oauth2-server-laravel": "Protect your API with OAuth 2.0.", 48 | "tymon/jwt-auth": "Protect your API with JSON Web Tokens." 49 | }, 50 | "type": "library", 51 | "extra": { 52 | "branch-alias": { 53 | "dev-master": "1.0-dev" 54 | } 55 | }, 56 | "autoload": { 57 | "psr-4": { 58 | "Dingo\\Api\\": "src/" 59 | }, 60 | "files": [ 61 | "src/helpers.php" 62 | ] 63 | }, 64 | "notification-url": "https://packagist.org/downloads/", 65 | "license": [ 66 | "BSD-3-Clause" 67 | ], 68 | "authors": [ 69 | { 70 | "name": "Jason Lewis", 71 | "email": "jason.lewis1991@gmail.com" 72 | } 73 | ], 74 | "description": "A RESTful API package for the Laravel and Lumen frameworks.", 75 | "keywords": [ 76 | "api", 77 | "dingo", 78 | "laravel", 79 | "restful" 80 | ], 81 | "time": "2017-02-10 00:56:04" 82 | }, 83 | { 84 | "name": "dingo/blueprint", 85 | "version": "0.2.2", 86 | "source": { 87 | "type": "git", 88 | "url": "https://github.com/dingo/blueprint.git", 89 | "reference": "690bdf0f76b4428fd52835b9d778fb4551333867" 90 | }, 91 | "dist": { 92 | "type": "zip", 93 | "url": "https://api.github.com/repos/dingo/blueprint/zipball/690bdf0f76b4428fd52835b9d778fb4551333867", 94 | "reference": "690bdf0f76b4428fd52835b9d778fb4551333867", 95 | "shasum": "" 96 | }, 97 | "require": { 98 | "doctrine/annotations": "~1.2", 99 | "illuminate/filesystem": "5.1.* || 5.2.* || 5.3.* || 5.4.*", 100 | "illuminate/support": "5.1.* || 5.2.* || 5.3.* || 5.4.*", 101 | "php": ">=5.5.9", 102 | "phpdocumentor/reflection-docblock": "3.1.*" 103 | }, 104 | "require-dev": { 105 | "phpunit/phpunit": "~4.0", 106 | "squizlabs/php_codesniffer": "~2.0" 107 | }, 108 | "type": "library", 109 | "extra": { 110 | "branch-alias": { 111 | "dev-master": "0.2-dev" 112 | } 113 | }, 114 | "autoload": { 115 | "psr-4": { 116 | "Dingo\\Blueprint\\": "src" 117 | } 118 | }, 119 | "notification-url": "https://packagist.org/downloads/", 120 | "license": [ 121 | "BSD-3-Clause" 122 | ], 123 | "authors": [ 124 | { 125 | "name": "Jason Lewis", 126 | "email": "jason.lewis1991@gmail.com" 127 | } 128 | ], 129 | "description": "API Blueprint documentation generator.", 130 | "keywords": [ 131 | "api", 132 | "blueprint", 133 | "dingo", 134 | "docs", 135 | "laravel" 136 | ], 137 | "time": "2017-02-11T17:28:57+00:00" 138 | }, 139 | { 140 | "name": "doctrine/annotations", 141 | "version": "v1.4.0", 142 | "source": { 143 | "type": "git", 144 | "url": "https://github.com/doctrine/annotations.git", 145 | "reference": "54cacc9b81758b14e3ce750f205a393d52339e97" 146 | }, 147 | "dist": { 148 | "type": "zip", 149 | "url": "https://api.github.com/repos/doctrine/annotations/zipball/54cacc9b81758b14e3ce750f205a393d52339e97", 150 | "reference": "54cacc9b81758b14e3ce750f205a393d52339e97", 151 | "shasum": "" 152 | }, 153 | "require": { 154 | "doctrine/lexer": "1.*", 155 | "php": "^5.6 || ^7.0" 156 | }, 157 | "require-dev": { 158 | "doctrine/cache": "1.*", 159 | "phpunit/phpunit": "^5.7" 160 | }, 161 | "type": "library", 162 | "extra": { 163 | "branch-alias": { 164 | "dev-master": "1.4.x-dev" 165 | } 166 | }, 167 | "autoload": { 168 | "psr-4": { 169 | "Doctrine\\Common\\Annotations\\": "lib/Doctrine/Common/Annotations" 170 | } 171 | }, 172 | "notification-url": "https://packagist.org/downloads/", 173 | "license": [ 174 | "MIT" 175 | ], 176 | "authors": [ 177 | { 178 | "name": "Roman Borschel", 179 | "email": "roman@code-factory.org" 180 | }, 181 | { 182 | "name": "Benjamin Eberlei", 183 | "email": "kontakt@beberlei.de" 184 | }, 185 | { 186 | "name": "Guilherme Blanco", 187 | "email": "guilhermeblanco@gmail.com" 188 | }, 189 | { 190 | "name": "Jonathan Wage", 191 | "email": "jonwage@gmail.com" 192 | }, 193 | { 194 | "name": "Johannes Schmitt", 195 | "email": "schmittjoh@gmail.com" 196 | } 197 | ], 198 | "description": "Docblock Annotations Parser", 199 | "homepage": "http://www.doctrine-project.org", 200 | "keywords": [ 201 | "annotations", 202 | "docblock", 203 | "parser" 204 | ], 205 | "time": "2017-02-24T16:22:25+00:00" 206 | }, 207 | { 208 | "name": "doctrine/inflector", 209 | "version": "v1.1.0", 210 | "source": { 211 | "type": "git", 212 | "url": "https://github.com/doctrine/inflector.git", 213 | "reference": "90b2128806bfde671b6952ab8bea493942c1fdae" 214 | }, 215 | "dist": { 216 | "type": "zip", 217 | "url": "https://api.github.com/repos/doctrine/inflector/zipball/90b2128806bfde671b6952ab8bea493942c1fdae", 218 | "reference": "90b2128806bfde671b6952ab8bea493942c1fdae", 219 | "shasum": "" 220 | }, 221 | "require": { 222 | "php": ">=5.3.2" 223 | }, 224 | "require-dev": { 225 | "phpunit/phpunit": "4.*" 226 | }, 227 | "type": "library", 228 | "extra": { 229 | "branch-alias": { 230 | "dev-master": "1.1.x-dev" 231 | } 232 | }, 233 | "autoload": { 234 | "psr-0": { 235 | "Doctrine\\Common\\Inflector\\": "lib/" 236 | } 237 | }, 238 | "notification-url": "https://packagist.org/downloads/", 239 | "license": [ 240 | "MIT" 241 | ], 242 | "authors": [ 243 | { 244 | "name": "Roman Borschel", 245 | "email": "roman@code-factory.org" 246 | }, 247 | { 248 | "name": "Benjamin Eberlei", 249 | "email": "kontakt@beberlei.de" 250 | }, 251 | { 252 | "name": "Guilherme Blanco", 253 | "email": "guilhermeblanco@gmail.com" 254 | }, 255 | { 256 | "name": "Jonathan Wage", 257 | "email": "jonwage@gmail.com" 258 | }, 259 | { 260 | "name": "Johannes Schmitt", 261 | "email": "schmittjoh@gmail.com" 262 | } 263 | ], 264 | "description": "Common String Manipulations with regard to casing and singular/plural rules.", 265 | "homepage": "http://www.doctrine-project.org", 266 | "keywords": [ 267 | "inflection", 268 | "pluralize", 269 | "singularize", 270 | "string" 271 | ], 272 | "time": "2015-11-06T14:35:42+00:00" 273 | }, 274 | { 275 | "name": "doctrine/lexer", 276 | "version": "v1.0.1", 277 | "source": { 278 | "type": "git", 279 | "url": "https://github.com/doctrine/lexer.git", 280 | "reference": "83893c552fd2045dd78aef794c31e694c37c0b8c" 281 | }, 282 | "dist": { 283 | "type": "zip", 284 | "url": "https://api.github.com/repos/doctrine/lexer/zipball/83893c552fd2045dd78aef794c31e694c37c0b8c", 285 | "reference": "83893c552fd2045dd78aef794c31e694c37c0b8c", 286 | "shasum": "" 287 | }, 288 | "require": { 289 | "php": ">=5.3.2" 290 | }, 291 | "type": "library", 292 | "extra": { 293 | "branch-alias": { 294 | "dev-master": "1.0.x-dev" 295 | } 296 | }, 297 | "autoload": { 298 | "psr-0": { 299 | "Doctrine\\Common\\Lexer\\": "lib/" 300 | } 301 | }, 302 | "notification-url": "https://packagist.org/downloads/", 303 | "license": [ 304 | "MIT" 305 | ], 306 | "authors": [ 307 | { 308 | "name": "Roman Borschel", 309 | "email": "roman@code-factory.org" 310 | }, 311 | { 312 | "name": "Guilherme Blanco", 313 | "email": "guilhermeblanco@gmail.com" 314 | }, 315 | { 316 | "name": "Johannes Schmitt", 317 | "email": "schmittjoh@gmail.com" 318 | } 319 | ], 320 | "description": "Base library for a lexer that can be used in Top-Down, Recursive Descent Parsers.", 321 | "homepage": "http://www.doctrine-project.org", 322 | "keywords": [ 323 | "lexer", 324 | "parser" 325 | ], 326 | "time": "2014-09-09T13:34:57+00:00" 327 | }, 328 | { 329 | "name": "illuminate/container", 330 | "version": "v5.4.19", 331 | "source": { 332 | "type": "git", 333 | "url": "https://github.com/illuminate/container.git", 334 | "reference": "50aa19491d478edd907d1f67e0928944e8b2dcb5" 335 | }, 336 | "dist": { 337 | "type": "zip", 338 | "url": "https://api.github.com/repos/illuminate/container/zipball/50aa19491d478edd907d1f67e0928944e8b2dcb5", 339 | "reference": "50aa19491d478edd907d1f67e0928944e8b2dcb5", 340 | "shasum": "" 341 | }, 342 | "require": { 343 | "illuminate/contracts": "5.4.*", 344 | "php": ">=5.6.4" 345 | }, 346 | "type": "library", 347 | "extra": { 348 | "branch-alias": { 349 | "dev-master": "5.4-dev" 350 | } 351 | }, 352 | "autoload": { 353 | "psr-4": { 354 | "Illuminate\\Container\\": "" 355 | } 356 | }, 357 | "notification-url": "https://packagist.org/downloads/", 358 | "license": [ 359 | "MIT" 360 | ], 361 | "authors": [ 362 | { 363 | "name": "Taylor Otwell", 364 | "email": "taylor@laravel.com" 365 | } 366 | ], 367 | "description": "The Illuminate Container package.", 368 | "homepage": "https://laravel.com", 369 | "time": "2017-04-16T13:32:45+00:00" 370 | }, 371 | { 372 | "name": "illuminate/contracts", 373 | "version": "v5.4.19", 374 | "source": { 375 | "type": "git", 376 | "url": "https://github.com/illuminate/contracts.git", 377 | "reference": "ab2825726bee46a67c8cc66789852189dbef74a9" 378 | }, 379 | "dist": { 380 | "type": "zip", 381 | "url": "https://api.github.com/repos/illuminate/contracts/zipball/ab2825726bee46a67c8cc66789852189dbef74a9", 382 | "reference": "ab2825726bee46a67c8cc66789852189dbef74a9", 383 | "shasum": "" 384 | }, 385 | "require": { 386 | "php": ">=5.6.4" 387 | }, 388 | "type": "library", 389 | "extra": { 390 | "branch-alias": { 391 | "dev-master": "5.4-dev" 392 | } 393 | }, 394 | "autoload": { 395 | "psr-4": { 396 | "Illuminate\\Contracts\\": "" 397 | } 398 | }, 399 | "notification-url": "https://packagist.org/downloads/", 400 | "license": [ 401 | "MIT" 402 | ], 403 | "authors": [ 404 | { 405 | "name": "Taylor Otwell", 406 | "email": "taylor@laravel.com" 407 | } 408 | ], 409 | "description": "The Illuminate Contracts package.", 410 | "homepage": "https://laravel.com", 411 | "time": "2017-03-29T13:17:47+00:00" 412 | }, 413 | { 414 | "name": "illuminate/cookie", 415 | "version": "v5.4.19", 416 | "source": { 417 | "type": "git", 418 | "url": "https://github.com/illuminate/cookie.git", 419 | "reference": "2073d2207fb62d04040de313fe7d719104dd0c41" 420 | }, 421 | "dist": { 422 | "type": "zip", 423 | "url": "https://api.github.com/repos/illuminate/cookie/zipball/2073d2207fb62d04040de313fe7d719104dd0c41", 424 | "reference": "2073d2207fb62d04040de313fe7d719104dd0c41", 425 | "shasum": "" 426 | }, 427 | "require": { 428 | "illuminate/contracts": "5.4.*", 429 | "illuminate/support": "5.4.*", 430 | "php": ">=5.6.4", 431 | "symfony/http-foundation": "~3.2", 432 | "symfony/http-kernel": "~3.2" 433 | }, 434 | "type": "library", 435 | "extra": { 436 | "branch-alias": { 437 | "dev-master": "5.4-dev" 438 | } 439 | }, 440 | "autoload": { 441 | "psr-4": { 442 | "Illuminate\\Cookie\\": "" 443 | } 444 | }, 445 | "notification-url": "https://packagist.org/downloads/", 446 | "license": [ 447 | "MIT" 448 | ], 449 | "authors": [ 450 | { 451 | "name": "Taylor Otwell", 452 | "email": "taylor@laravel.com" 453 | } 454 | ], 455 | "description": "The Illuminate Cookie package.", 456 | "homepage": "https://laravel.com", 457 | "time": "2017-01-19T18:42:00+00:00" 458 | }, 459 | { 460 | "name": "illuminate/filesystem", 461 | "version": "v5.4.19", 462 | "source": { 463 | "type": "git", 464 | "url": "https://github.com/illuminate/filesystem.git", 465 | "reference": "7f656e3421b94d759627e891567380b50586f045" 466 | }, 467 | "dist": { 468 | "type": "zip", 469 | "url": "https://api.github.com/repos/illuminate/filesystem/zipball/7f656e3421b94d759627e891567380b50586f045", 470 | "reference": "7f656e3421b94d759627e891567380b50586f045", 471 | "shasum": "" 472 | }, 473 | "require": { 474 | "illuminate/contracts": "5.4.*", 475 | "illuminate/support": "5.4.*", 476 | "php": ">=5.6.4", 477 | "symfony/finder": "~3.2" 478 | }, 479 | "suggest": { 480 | "league/flysystem": "Required to use the Flysystem local and FTP drivers (~1.0).", 481 | "league/flysystem-aws-s3-v3": "Required to use the Flysystem S3 driver (~1.0).", 482 | "league/flysystem-rackspace": "Required to use the Flysystem Rackspace driver (~1.0)." 483 | }, 484 | "type": "library", 485 | "extra": { 486 | "branch-alias": { 487 | "dev-master": "5.4-dev" 488 | } 489 | }, 490 | "autoload": { 491 | "psr-4": { 492 | "Illuminate\\Filesystem\\": "" 493 | } 494 | }, 495 | "notification-url": "https://packagist.org/downloads/", 496 | "license": [ 497 | "MIT" 498 | ], 499 | "authors": [ 500 | { 501 | "name": "Taylor Otwell", 502 | "email": "taylor@laravel.com" 503 | } 504 | ], 505 | "description": "The Illuminate Filesystem package.", 506 | "homepage": "https://laravel.com", 507 | "time": "2017-04-07T19:38:05+00:00" 508 | }, 509 | { 510 | "name": "illuminate/hashing", 511 | "version": "v5.4.19", 512 | "source": { 513 | "type": "git", 514 | "url": "https://github.com/illuminate/hashing.git", 515 | "reference": "b5c377960fb6dd32a0172dabbe6579589e210b9e" 516 | }, 517 | "dist": { 518 | "type": "zip", 519 | "url": "https://api.github.com/repos/illuminate/hashing/zipball/b5c377960fb6dd32a0172dabbe6579589e210b9e", 520 | "reference": "b5c377960fb6dd32a0172dabbe6579589e210b9e", 521 | "shasum": "" 522 | }, 523 | "require": { 524 | "illuminate/contracts": "5.4.*", 525 | "illuminate/support": "5.4.*", 526 | "php": ">=5.6.4" 527 | }, 528 | "type": "library", 529 | "extra": { 530 | "branch-alias": { 531 | "dev-master": "5.4-dev" 532 | } 533 | }, 534 | "autoload": { 535 | "psr-4": { 536 | "Illuminate\\Hashing\\": "" 537 | } 538 | }, 539 | "notification-url": "https://packagist.org/downloads/", 540 | "license": [ 541 | "MIT" 542 | ], 543 | "authors": [ 544 | { 545 | "name": "Taylor Otwell", 546 | "email": "taylor@laravel.com" 547 | } 548 | ], 549 | "description": "The Illuminate Hashing package.", 550 | "homepage": "https://laravel.com", 551 | "time": "2017-03-08T23:05:14+00:00" 552 | }, 553 | { 554 | "name": "illuminate/http", 555 | "version": "v5.4.19", 556 | "source": { 557 | "type": "git", 558 | "url": "https://github.com/illuminate/http.git", 559 | "reference": "2c66bd7791505899afa86bb4d467e3ea8b7dab8c" 560 | }, 561 | "dist": { 562 | "type": "zip", 563 | "url": "https://api.github.com/repos/illuminate/http/zipball/2c66bd7791505899afa86bb4d467e3ea8b7dab8c", 564 | "reference": "2c66bd7791505899afa86bb4d467e3ea8b7dab8c", 565 | "shasum": "" 566 | }, 567 | "require": { 568 | "illuminate/session": "5.4.*", 569 | "illuminate/support": "5.4.*", 570 | "php": ">=5.6.4", 571 | "symfony/http-foundation": "~3.2", 572 | "symfony/http-kernel": "~3.2" 573 | }, 574 | "type": "library", 575 | "extra": { 576 | "branch-alias": { 577 | "dev-master": "5.4-dev" 578 | } 579 | }, 580 | "autoload": { 581 | "psr-4": { 582 | "Illuminate\\Http\\": "" 583 | } 584 | }, 585 | "notification-url": "https://packagist.org/downloads/", 586 | "license": [ 587 | "MIT" 588 | ], 589 | "authors": [ 590 | { 591 | "name": "Taylor Otwell", 592 | "email": "taylor@laravel.com" 593 | } 594 | ], 595 | "description": "The Illuminate Http package.", 596 | "homepage": "https://laravel.com", 597 | "time": "2017-03-15T14:15:59+00:00" 598 | }, 599 | { 600 | "name": "illuminate/pipeline", 601 | "version": "v5.4.19", 602 | "source": { 603 | "type": "git", 604 | "url": "https://github.com/illuminate/pipeline.git", 605 | "reference": "ada6dc2435afa57a74e3dcd4570c31a1a1244e65" 606 | }, 607 | "dist": { 608 | "type": "zip", 609 | "url": "https://api.github.com/repos/illuminate/pipeline/zipball/ada6dc2435afa57a74e3dcd4570c31a1a1244e65", 610 | "reference": "ada6dc2435afa57a74e3dcd4570c31a1a1244e65", 611 | "shasum": "" 612 | }, 613 | "require": { 614 | "illuminate/contracts": "5.4.*", 615 | "illuminate/support": "5.4.*", 616 | "php": ">=5.6.4" 617 | }, 618 | "type": "library", 619 | "extra": { 620 | "branch-alias": { 621 | "dev-master": "5.4-dev" 622 | } 623 | }, 624 | "autoload": { 625 | "psr-4": { 626 | "Illuminate\\Pipeline\\": "" 627 | } 628 | }, 629 | "notification-url": "https://packagist.org/downloads/", 630 | "license": [ 631 | "MIT" 632 | ], 633 | "authors": [ 634 | { 635 | "name": "Taylor Otwell", 636 | "email": "taylor@laravel.com" 637 | } 638 | ], 639 | "description": "The Illuminate Pipeline package.", 640 | "homepage": "https://laravel.com", 641 | "time": "2017-01-17T14:21:32+00:00" 642 | }, 643 | { 644 | "name": "illuminate/routing", 645 | "version": "v5.4.19", 646 | "source": { 647 | "type": "git", 648 | "url": "https://github.com/illuminate/routing.git", 649 | "reference": "6c6eacd0faa656d1be1ad6234a7454fbd1f8dd0b" 650 | }, 651 | "dist": { 652 | "type": "zip", 653 | "url": "https://api.github.com/repos/illuminate/routing/zipball/6c6eacd0faa656d1be1ad6234a7454fbd1f8dd0b", 654 | "reference": "6c6eacd0faa656d1be1ad6234a7454fbd1f8dd0b", 655 | "shasum": "" 656 | }, 657 | "require": { 658 | "illuminate/container": "5.4.*", 659 | "illuminate/contracts": "5.4.*", 660 | "illuminate/http": "5.4.*", 661 | "illuminate/pipeline": "5.4.*", 662 | "illuminate/session": "5.4.*", 663 | "illuminate/support": "5.4.*", 664 | "php": ">=5.6.4", 665 | "symfony/debug": "~3.2", 666 | "symfony/http-foundation": "~3.2", 667 | "symfony/http-kernel": "~3.2", 668 | "symfony/routing": "~3.2" 669 | }, 670 | "suggest": { 671 | "illuminate/console": "Required to use the make commands (5.4.*).", 672 | "symfony/psr-http-message-bridge": "Required to psr7 bridging features (0.2.*)." 673 | }, 674 | "type": "library", 675 | "extra": { 676 | "branch-alias": { 677 | "dev-master": "5.4-dev" 678 | } 679 | }, 680 | "autoload": { 681 | "psr-4": { 682 | "Illuminate\\Routing\\": "" 683 | } 684 | }, 685 | "notification-url": "https://packagist.org/downloads/", 686 | "license": [ 687 | "MIT" 688 | ], 689 | "authors": [ 690 | { 691 | "name": "Taylor Otwell", 692 | "email": "taylor@laravel.com" 693 | } 694 | ], 695 | "description": "The Illuminate Routing package.", 696 | "homepage": "https://laravel.com", 697 | "time": "2017-04-06T14:06:58+00:00" 698 | }, 699 | { 700 | "name": "illuminate/session", 701 | "version": "v5.4.19", 702 | "source": { 703 | "type": "git", 704 | "url": "https://github.com/illuminate/session.git", 705 | "reference": "59f994b299318ba5a91b390fe482e24fdaa08ec5" 706 | }, 707 | "dist": { 708 | "type": "zip", 709 | "url": "https://api.github.com/repos/illuminate/session/zipball/59f994b299318ba5a91b390fe482e24fdaa08ec5", 710 | "reference": "59f994b299318ba5a91b390fe482e24fdaa08ec5", 711 | "shasum": "" 712 | }, 713 | "require": { 714 | "illuminate/contracts": "5.4.*", 715 | "illuminate/filesystem": "5.4.*", 716 | "illuminate/support": "5.4.*", 717 | "nesbot/carbon": "~1.20", 718 | "php": ">=5.6.4", 719 | "symfony/finder": "~3.2", 720 | "symfony/http-foundation": "~3.2" 721 | }, 722 | "suggest": { 723 | "illuminate/console": "Required to use the session:table command (5.4.*)." 724 | }, 725 | "type": "library", 726 | "extra": { 727 | "branch-alias": { 728 | "dev-master": "5.4-dev" 729 | } 730 | }, 731 | "autoload": { 732 | "psr-4": { 733 | "Illuminate\\Session\\": "" 734 | } 735 | }, 736 | "notification-url": "https://packagist.org/downloads/", 737 | "license": [ 738 | "MIT" 739 | ], 740 | "authors": [ 741 | { 742 | "name": "Taylor Otwell", 743 | "email": "taylor@laravel.com" 744 | } 745 | ], 746 | "description": "The Illuminate Session package.", 747 | "homepage": "https://laravel.com", 748 | "time": "2017-03-30T14:26:45+00:00" 749 | }, 750 | { 751 | "name": "illuminate/support", 752 | "version": "v5.4.19", 753 | "source": { 754 | "type": "git", 755 | "url": "https://github.com/illuminate/support.git", 756 | "reference": "b8cb37e15331c59da51c8ee5838038baa22d7955" 757 | }, 758 | "dist": { 759 | "type": "zip", 760 | "url": "https://api.github.com/repos/illuminate/support/zipball/b8cb37e15331c59da51c8ee5838038baa22d7955", 761 | "reference": "b8cb37e15331c59da51c8ee5838038baa22d7955", 762 | "shasum": "" 763 | }, 764 | "require": { 765 | "doctrine/inflector": "~1.0", 766 | "ext-mbstring": "*", 767 | "illuminate/contracts": "5.4.*", 768 | "paragonie/random_compat": "~1.4|~2.0", 769 | "php": ">=5.6.4" 770 | }, 771 | "replace": { 772 | "tightenco/collect": "self.version" 773 | }, 774 | "suggest": { 775 | "illuminate/filesystem": "Required to use the composer class (5.2.*).", 776 | "symfony/process": "Required to use the composer class (~3.2).", 777 | "symfony/var-dumper": "Required to use the dd function (~3.2)." 778 | }, 779 | "type": "library", 780 | "extra": { 781 | "branch-alias": { 782 | "dev-master": "5.4-dev" 783 | } 784 | }, 785 | "autoload": { 786 | "psr-4": { 787 | "Illuminate\\Support\\": "" 788 | }, 789 | "files": [ 790 | "helpers.php" 791 | ] 792 | }, 793 | "notification-url": "https://packagist.org/downloads/", 794 | "license": [ 795 | "MIT" 796 | ], 797 | "authors": [ 798 | { 799 | "name": "Taylor Otwell", 800 | "email": "taylor@laravel.com" 801 | } 802 | ], 803 | "description": "The Illuminate Support package.", 804 | "homepage": "https://laravel.com", 805 | "time": "2017-04-09T14:34:57+00:00" 806 | }, 807 | { 808 | "name": "league/fractal", 809 | "version": "0.16.0", 810 | "source": { 811 | "type": "git", 812 | "url": "https://github.com/thephpleague/fractal.git", 813 | "reference": "d0445305e308d9207430680acfd580557b679ddc" 814 | }, 815 | "dist": { 816 | "type": "zip", 817 | "url": "https://api.github.com/repos/thephpleague/fractal/zipball/d0445305e308d9207430680acfd580557b679ddc", 818 | "reference": "d0445305e308d9207430680acfd580557b679ddc", 819 | "shasum": "" 820 | }, 821 | "require": { 822 | "php": ">=5.4" 823 | }, 824 | "require-dev": { 825 | "doctrine/orm": "^2.5", 826 | "illuminate/contracts": "~5.0", 827 | "mockery/mockery": "~0.9", 828 | "pagerfanta/pagerfanta": "~1.0.0", 829 | "phpunit/phpunit": "~4.0", 830 | "squizlabs/php_codesniffer": "~1.5", 831 | "zendframework/zend-paginator": "~2.3" 832 | }, 833 | "suggest": { 834 | "illuminate/pagination": "The Illuminate Pagination component.", 835 | "pagerfanta/pagerfanta": "Pagerfanta Paginator", 836 | "zendframework/zend-paginator": "Zend Framework Paginator" 837 | }, 838 | "type": "library", 839 | "extra": { 840 | "branch-alias": { 841 | "dev-master": "0.13-dev" 842 | } 843 | }, 844 | "autoload": { 845 | "psr-4": { 846 | "League\\Fractal\\": "src" 847 | } 848 | }, 849 | "notification-url": "https://packagist.org/downloads/", 850 | "license": [ 851 | "MIT" 852 | ], 853 | "authors": [ 854 | { 855 | "name": "Phil Sturgeon", 856 | "email": "me@philsturgeon.uk", 857 | "homepage": "http://philsturgeon.uk/", 858 | "role": "Developer" 859 | } 860 | ], 861 | "description": "Handle the output of complex data structures ready for API output.", 862 | "homepage": "http://fractal.thephpleague.com/", 863 | "keywords": [ 864 | "api", 865 | "json", 866 | "league", 867 | "rest" 868 | ], 869 | "time": "2017-03-12T01:28:43+00:00" 870 | }, 871 | { 872 | "name": "namshi/jose", 873 | "version": "5.0.2", 874 | "source": { 875 | "type": "git", 876 | "url": "https://github.com/namshi/jose.git", 877 | "reference": "8c7eba486f74c014ea1d8faedafe5109a31ea95b" 878 | }, 879 | "dist": { 880 | "type": "zip", 881 | "url": "https://api.github.com/repos/namshi/jose/zipball/8c7eba486f74c014ea1d8faedafe5109a31ea95b", 882 | "reference": "8c7eba486f74c014ea1d8faedafe5109a31ea95b", 883 | "shasum": "" 884 | }, 885 | "require": { 886 | "lib-openssl": "*", 887 | "php": ">=5.3.3", 888 | "phpseclib/phpseclib": "~0.3" 889 | }, 890 | "require-dev": { 891 | "phpunit/phpunit": "~4.5", 892 | "satooshi/php-coveralls": "dev-master" 893 | }, 894 | "type": "library", 895 | "autoload": { 896 | "psr-0": { 897 | "Namshi\\JOSE": "src/" 898 | } 899 | }, 900 | "notification-url": "https://packagist.org/downloads/", 901 | "license": [ 902 | "MIT" 903 | ], 904 | "authors": [ 905 | { 906 | "name": "Alessandro Nadalin", 907 | "email": "alessandro.nadalin@gmail.com" 908 | } 909 | ], 910 | "description": "JSON Object Signing and Encryption library for PHP.", 911 | "keywords": [ 912 | "JSON Web Signature", 913 | "JSON Web Token", 914 | "JWS", 915 | "json", 916 | "jwt", 917 | "token" 918 | ], 919 | "time": "2015-06-29T05:41:44+00:00" 920 | }, 921 | { 922 | "name": "nesbot/carbon", 923 | "version": "1.22.1", 924 | "source": { 925 | "type": "git", 926 | "url": "https://github.com/briannesbitt/Carbon.git", 927 | "reference": "7cdf42c0b1cc763ab7e4c33c47a24e27c66bfccc" 928 | }, 929 | "dist": { 930 | "type": "zip", 931 | "url": "https://api.github.com/repos/briannesbitt/Carbon/zipball/7cdf42c0b1cc763ab7e4c33c47a24e27c66bfccc", 932 | "reference": "7cdf42c0b1cc763ab7e4c33c47a24e27c66bfccc", 933 | "shasum": "" 934 | }, 935 | "require": { 936 | "php": ">=5.3.0", 937 | "symfony/translation": "~2.6 || ~3.0" 938 | }, 939 | "require-dev": { 940 | "friendsofphp/php-cs-fixer": "~2", 941 | "phpunit/phpunit": "~4.0 || ~5.0" 942 | }, 943 | "type": "library", 944 | "extra": { 945 | "branch-alias": { 946 | "dev-master": "1.23-dev" 947 | } 948 | }, 949 | "autoload": { 950 | "psr-4": { 951 | "Carbon\\": "src/Carbon/" 952 | } 953 | }, 954 | "notification-url": "https://packagist.org/downloads/", 955 | "license": [ 956 | "MIT" 957 | ], 958 | "authors": [ 959 | { 960 | "name": "Brian Nesbitt", 961 | "email": "brian@nesbot.com", 962 | "homepage": "http://nesbot.com" 963 | } 964 | ], 965 | "description": "A simple API extension for DateTime.", 966 | "homepage": "http://carbon.nesbot.com", 967 | "keywords": [ 968 | "date", 969 | "datetime", 970 | "time" 971 | ], 972 | "time": "2017-01-16T07:55:07+00:00" 973 | }, 974 | { 975 | "name": "paragonie/random_compat", 976 | "version": "v2.0.10", 977 | "source": { 978 | "type": "git", 979 | "url": "https://github.com/paragonie/random_compat.git", 980 | "reference": "634bae8e911eefa89c1abfbf1b66da679ac8f54d" 981 | }, 982 | "dist": { 983 | "type": "zip", 984 | "url": "https://api.github.com/repos/paragonie/random_compat/zipball/634bae8e911eefa89c1abfbf1b66da679ac8f54d", 985 | "reference": "634bae8e911eefa89c1abfbf1b66da679ac8f54d", 986 | "shasum": "" 987 | }, 988 | "require": { 989 | "php": ">=5.2.0" 990 | }, 991 | "require-dev": { 992 | "phpunit/phpunit": "4.*|5.*" 993 | }, 994 | "suggest": { 995 | "ext-libsodium": "Provides a modern crypto API that can be used to generate random bytes." 996 | }, 997 | "type": "library", 998 | "autoload": { 999 | "files": [ 1000 | "lib/random.php" 1001 | ] 1002 | }, 1003 | "notification-url": "https://packagist.org/downloads/", 1004 | "license": [ 1005 | "MIT" 1006 | ], 1007 | "authors": [ 1008 | { 1009 | "name": "Paragon Initiative Enterprises", 1010 | "email": "security@paragonie.com", 1011 | "homepage": "https://paragonie.com" 1012 | } 1013 | ], 1014 | "description": "PHP 5.x polyfill for random_bytes() and random_int() from PHP 7", 1015 | "keywords": [ 1016 | "csprng", 1017 | "pseudorandom", 1018 | "random" 1019 | ], 1020 | "time": "2017-03-13T16:27:32+00:00" 1021 | }, 1022 | { 1023 | "name": "phpdocumentor/reflection-common", 1024 | "version": "1.0", 1025 | "source": { 1026 | "type": "git", 1027 | "url": "https://github.com/phpDocumentor/ReflectionCommon.git", 1028 | "reference": "144c307535e82c8fdcaacbcfc1d6d8eeb896687c" 1029 | }, 1030 | "dist": { 1031 | "type": "zip", 1032 | "url": "https://api.github.com/repos/phpDocumentor/ReflectionCommon/zipball/144c307535e82c8fdcaacbcfc1d6d8eeb896687c", 1033 | "reference": "144c307535e82c8fdcaacbcfc1d6d8eeb896687c", 1034 | "shasum": "" 1035 | }, 1036 | "require": { 1037 | "php": ">=5.5" 1038 | }, 1039 | "require-dev": { 1040 | "phpunit/phpunit": "^4.6" 1041 | }, 1042 | "type": "library", 1043 | "extra": { 1044 | "branch-alias": { 1045 | "dev-master": "1.0.x-dev" 1046 | } 1047 | }, 1048 | "autoload": { 1049 | "psr-4": { 1050 | "phpDocumentor\\Reflection\\": [ 1051 | "src" 1052 | ] 1053 | } 1054 | }, 1055 | "notification-url": "https://packagist.org/downloads/", 1056 | "license": [ 1057 | "MIT" 1058 | ], 1059 | "authors": [ 1060 | { 1061 | "name": "Jaap van Otterdijk", 1062 | "email": "opensource@ijaap.nl" 1063 | } 1064 | ], 1065 | "description": "Common reflection classes used by phpdocumentor to reflect the code structure", 1066 | "homepage": "http://www.phpdoc.org", 1067 | "keywords": [ 1068 | "FQSEN", 1069 | "phpDocumentor", 1070 | "phpdoc", 1071 | "reflection", 1072 | "static analysis" 1073 | ], 1074 | "time": "2015-12-27T11:43:31+00:00" 1075 | }, 1076 | { 1077 | "name": "phpdocumentor/reflection-docblock", 1078 | "version": "3.1.1", 1079 | "source": { 1080 | "type": "git", 1081 | "url": "https://github.com/phpDocumentor/ReflectionDocBlock.git", 1082 | "reference": "8331b5efe816ae05461b7ca1e721c01b46bafb3e" 1083 | }, 1084 | "dist": { 1085 | "type": "zip", 1086 | "url": "https://api.github.com/repos/phpDocumentor/ReflectionDocBlock/zipball/8331b5efe816ae05461b7ca1e721c01b46bafb3e", 1087 | "reference": "8331b5efe816ae05461b7ca1e721c01b46bafb3e", 1088 | "shasum": "" 1089 | }, 1090 | "require": { 1091 | "php": ">=5.5", 1092 | "phpdocumentor/reflection-common": "^1.0@dev", 1093 | "phpdocumentor/type-resolver": "^0.2.0", 1094 | "webmozart/assert": "^1.0" 1095 | }, 1096 | "require-dev": { 1097 | "mockery/mockery": "^0.9.4", 1098 | "phpunit/phpunit": "^4.4" 1099 | }, 1100 | "type": "library", 1101 | "autoload": { 1102 | "psr-4": { 1103 | "phpDocumentor\\Reflection\\": [ 1104 | "src/" 1105 | ] 1106 | } 1107 | }, 1108 | "notification-url": "https://packagist.org/downloads/", 1109 | "license": [ 1110 | "MIT" 1111 | ], 1112 | "authors": [ 1113 | { 1114 | "name": "Mike van Riel", 1115 | "email": "me@mikevanriel.com" 1116 | } 1117 | ], 1118 | "description": "With this component, a library can provide support for annotations via DocBlocks or otherwise retrieve information that is embedded in a DocBlock.", 1119 | "time": "2016-09-30T07:12:33+00:00" 1120 | }, 1121 | { 1122 | "name": "phpdocumentor/type-resolver", 1123 | "version": "0.2.1", 1124 | "source": { 1125 | "type": "git", 1126 | "url": "https://github.com/phpDocumentor/TypeResolver.git", 1127 | "reference": "e224fb2ea2fba6d3ad6fdaef91cd09a172155ccb" 1128 | }, 1129 | "dist": { 1130 | "type": "zip", 1131 | "url": "https://api.github.com/repos/phpDocumentor/TypeResolver/zipball/e224fb2ea2fba6d3ad6fdaef91cd09a172155ccb", 1132 | "reference": "e224fb2ea2fba6d3ad6fdaef91cd09a172155ccb", 1133 | "shasum": "" 1134 | }, 1135 | "require": { 1136 | "php": ">=5.5", 1137 | "phpdocumentor/reflection-common": "^1.0" 1138 | }, 1139 | "require-dev": { 1140 | "mockery/mockery": "^0.9.4", 1141 | "phpunit/phpunit": "^5.2||^4.8.24" 1142 | }, 1143 | "type": "library", 1144 | "extra": { 1145 | "branch-alias": { 1146 | "dev-master": "1.0.x-dev" 1147 | } 1148 | }, 1149 | "autoload": { 1150 | "psr-4": { 1151 | "phpDocumentor\\Reflection\\": [ 1152 | "src/" 1153 | ] 1154 | } 1155 | }, 1156 | "notification-url": "https://packagist.org/downloads/", 1157 | "license": [ 1158 | "MIT" 1159 | ], 1160 | "authors": [ 1161 | { 1162 | "name": "Mike van Riel", 1163 | "email": "me@mikevanriel.com" 1164 | } 1165 | ], 1166 | "time": "2016-11-25T06:54:22+00:00" 1167 | }, 1168 | { 1169 | "name": "phpseclib/phpseclib", 1170 | "version": "0.3.10", 1171 | "source": { 1172 | "type": "git", 1173 | "url": "https://github.com/phpseclib/phpseclib.git", 1174 | "reference": "d15bba1edcc7c89e09cc74c5d961317a8b947bf4" 1175 | }, 1176 | "dist": { 1177 | "type": "zip", 1178 | "url": "https://api.github.com/repos/phpseclib/phpseclib/zipball/d15bba1edcc7c89e09cc74c5d961317a8b947bf4", 1179 | "reference": "d15bba1edcc7c89e09cc74c5d961317a8b947bf4", 1180 | "shasum": "" 1181 | }, 1182 | "require": { 1183 | "php": ">=5.0.0" 1184 | }, 1185 | "require-dev": { 1186 | "phing/phing": "~2.7", 1187 | "phpunit/phpunit": "~4.0", 1188 | "sami/sami": "~2.0", 1189 | "squizlabs/php_codesniffer": "~1.5" 1190 | }, 1191 | "suggest": { 1192 | "ext-gmp": "Install the GMP (GNU Multiple Precision) extension in order to speed up arbitrary precision integer arithmetic operations.", 1193 | "ext-mcrypt": "Install the Mcrypt extension in order to speed up a wide variety of cryptographic operations.", 1194 | "pear-pear/PHP_Compat": "Install PHP_Compat to get phpseclib working on PHP < 4.3.3." 1195 | }, 1196 | "type": "library", 1197 | "extra": { 1198 | "branch-alias": { 1199 | "dev-master": "0.3-dev" 1200 | } 1201 | }, 1202 | "autoload": { 1203 | "psr-0": { 1204 | "Crypt": "phpseclib/", 1205 | "File": "phpseclib/", 1206 | "Math": "phpseclib/", 1207 | "Net": "phpseclib/", 1208 | "System": "phpseclib/" 1209 | }, 1210 | "files": [ 1211 | "phpseclib/Crypt/Random.php" 1212 | ] 1213 | }, 1214 | "notification-url": "https://packagist.org/downloads/", 1215 | "include-path": [ 1216 | "phpseclib/" 1217 | ], 1218 | "license": [ 1219 | "MIT" 1220 | ], 1221 | "authors": [ 1222 | { 1223 | "name": "Jim Wigginton", 1224 | "email": "terrafrost@php.net", 1225 | "role": "Lead Developer" 1226 | }, 1227 | { 1228 | "name": "Patrick Monnerat", 1229 | "email": "pm@datasphere.ch", 1230 | "role": "Developer" 1231 | }, 1232 | { 1233 | "name": "Andreas Fischer", 1234 | "email": "bantu@phpbb.com", 1235 | "role": "Developer" 1236 | }, 1237 | { 1238 | "name": "Hans-Jürgen Petrich", 1239 | "email": "petrich@tronic-media.com", 1240 | "role": "Developer" 1241 | } 1242 | ], 1243 | "description": "PHP Secure Communications Library - Pure-PHP implementations of RSA, AES, SSH2, SFTP, X.509 etc.", 1244 | "homepage": "http://phpseclib.sourceforge.net", 1245 | "keywords": [ 1246 | "BigInteger", 1247 | "aes", 1248 | "asn.1", 1249 | "asn1", 1250 | "blowfish", 1251 | "crypto", 1252 | "cryptography", 1253 | "encryption", 1254 | "rsa", 1255 | "security", 1256 | "sftp", 1257 | "signature", 1258 | "signing", 1259 | "ssh", 1260 | "twofish", 1261 | "x.509", 1262 | "x509" 1263 | ], 1264 | "time": "2015-01-28T21:50:33+00:00" 1265 | }, 1266 | { 1267 | "name": "psr/log", 1268 | "version": "1.0.2", 1269 | "source": { 1270 | "type": "git", 1271 | "url": "https://github.com/php-fig/log.git", 1272 | "reference": "4ebe3a8bf773a19edfe0a84b6585ba3d401b724d" 1273 | }, 1274 | "dist": { 1275 | "type": "zip", 1276 | "url": "https://api.github.com/repos/php-fig/log/zipball/4ebe3a8bf773a19edfe0a84b6585ba3d401b724d", 1277 | "reference": "4ebe3a8bf773a19edfe0a84b6585ba3d401b724d", 1278 | "shasum": "" 1279 | }, 1280 | "require": { 1281 | "php": ">=5.3.0" 1282 | }, 1283 | "type": "library", 1284 | "extra": { 1285 | "branch-alias": { 1286 | "dev-master": "1.0.x-dev" 1287 | } 1288 | }, 1289 | "autoload": { 1290 | "psr-4": { 1291 | "Psr\\Log\\": "Psr/Log/" 1292 | } 1293 | }, 1294 | "notification-url": "https://packagist.org/downloads/", 1295 | "license": [ 1296 | "MIT" 1297 | ], 1298 | "authors": [ 1299 | { 1300 | "name": "PHP-FIG", 1301 | "homepage": "http://www.php-fig.org/" 1302 | } 1303 | ], 1304 | "description": "Common interface for logging libraries", 1305 | "homepage": "https://github.com/php-fig/log", 1306 | "keywords": [ 1307 | "log", 1308 | "psr", 1309 | "psr-3" 1310 | ], 1311 | "time": "2016-10-10T12:19:37+00:00" 1312 | }, 1313 | { 1314 | "name": "symfony/debug", 1315 | "version": "v3.2.8", 1316 | "source": { 1317 | "type": "git", 1318 | "url": "https://github.com/symfony/debug.git", 1319 | "reference": "fd6eeee656a5a7b384d56f1072243fe1c0e81686" 1320 | }, 1321 | "dist": { 1322 | "type": "zip", 1323 | "url": "https://api.github.com/repos/symfony/debug/zipball/fd6eeee656a5a7b384d56f1072243fe1c0e81686", 1324 | "reference": "fd6eeee656a5a7b384d56f1072243fe1c0e81686", 1325 | "shasum": "" 1326 | }, 1327 | "require": { 1328 | "php": ">=5.5.9", 1329 | "psr/log": "~1.0" 1330 | }, 1331 | "conflict": { 1332 | "symfony/http-kernel": ">=2.3,<2.3.24|~2.4.0|>=2.5,<2.5.9|>=2.6,<2.6.2" 1333 | }, 1334 | "require-dev": { 1335 | "symfony/class-loader": "~2.8|~3.0", 1336 | "symfony/http-kernel": "~2.8|~3.0" 1337 | }, 1338 | "type": "library", 1339 | "extra": { 1340 | "branch-alias": { 1341 | "dev-master": "3.2-dev" 1342 | } 1343 | }, 1344 | "autoload": { 1345 | "psr-4": { 1346 | "Symfony\\Component\\Debug\\": "" 1347 | }, 1348 | "exclude-from-classmap": [ 1349 | "/Tests/" 1350 | ] 1351 | }, 1352 | "notification-url": "https://packagist.org/downloads/", 1353 | "license": [ 1354 | "MIT" 1355 | ], 1356 | "authors": [ 1357 | { 1358 | "name": "Fabien Potencier", 1359 | "email": "fabien@symfony.com" 1360 | }, 1361 | { 1362 | "name": "Symfony Community", 1363 | "homepage": "https://symfony.com/contributors" 1364 | } 1365 | ], 1366 | "description": "Symfony Debug Component", 1367 | "homepage": "https://symfony.com", 1368 | "time": "2017-04-19T20:17:50+00:00" 1369 | }, 1370 | { 1371 | "name": "symfony/event-dispatcher", 1372 | "version": "v3.2.8", 1373 | "source": { 1374 | "type": "git", 1375 | "url": "https://github.com/symfony/event-dispatcher.git", 1376 | "reference": "b8a401f733b43251e1d088c589368b2a94155e40" 1377 | }, 1378 | "dist": { 1379 | "type": "zip", 1380 | "url": "https://api.github.com/repos/symfony/event-dispatcher/zipball/b8a401f733b43251e1d088c589368b2a94155e40", 1381 | "reference": "b8a401f733b43251e1d088c589368b2a94155e40", 1382 | "shasum": "" 1383 | }, 1384 | "require": { 1385 | "php": ">=5.5.9" 1386 | }, 1387 | "require-dev": { 1388 | "psr/log": "~1.0", 1389 | "symfony/config": "~2.8|~3.0", 1390 | "symfony/dependency-injection": "~2.8|~3.0", 1391 | "symfony/expression-language": "~2.8|~3.0", 1392 | "symfony/stopwatch": "~2.8|~3.0" 1393 | }, 1394 | "suggest": { 1395 | "symfony/dependency-injection": "", 1396 | "symfony/http-kernel": "" 1397 | }, 1398 | "type": "library", 1399 | "extra": { 1400 | "branch-alias": { 1401 | "dev-master": "3.2-dev" 1402 | } 1403 | }, 1404 | "autoload": { 1405 | "psr-4": { 1406 | "Symfony\\Component\\EventDispatcher\\": "" 1407 | }, 1408 | "exclude-from-classmap": [ 1409 | "/Tests/" 1410 | ] 1411 | }, 1412 | "notification-url": "https://packagist.org/downloads/", 1413 | "license": [ 1414 | "MIT" 1415 | ], 1416 | "authors": [ 1417 | { 1418 | "name": "Fabien Potencier", 1419 | "email": "fabien@symfony.com" 1420 | }, 1421 | { 1422 | "name": "Symfony Community", 1423 | "homepage": "https://symfony.com/contributors" 1424 | } 1425 | ], 1426 | "description": "Symfony EventDispatcher Component", 1427 | "homepage": "https://symfony.com", 1428 | "time": "2017-05-01T14:58:48+00:00" 1429 | }, 1430 | { 1431 | "name": "symfony/finder", 1432 | "version": "v3.2.8", 1433 | "source": { 1434 | "type": "git", 1435 | "url": "https://github.com/symfony/finder.git", 1436 | "reference": "9cf076f8f492f4b1ffac40aae9c2d287b4ca6930" 1437 | }, 1438 | "dist": { 1439 | "type": "zip", 1440 | "url": "https://api.github.com/repos/symfony/finder/zipball/9cf076f8f492f4b1ffac40aae9c2d287b4ca6930", 1441 | "reference": "9cf076f8f492f4b1ffac40aae9c2d287b4ca6930", 1442 | "shasum": "" 1443 | }, 1444 | "require": { 1445 | "php": ">=5.5.9" 1446 | }, 1447 | "type": "library", 1448 | "extra": { 1449 | "branch-alias": { 1450 | "dev-master": "3.2-dev" 1451 | } 1452 | }, 1453 | "autoload": { 1454 | "psr-4": { 1455 | "Symfony\\Component\\Finder\\": "" 1456 | }, 1457 | "exclude-from-classmap": [ 1458 | "/Tests/" 1459 | ] 1460 | }, 1461 | "notification-url": "https://packagist.org/downloads/", 1462 | "license": [ 1463 | "MIT" 1464 | ], 1465 | "authors": [ 1466 | { 1467 | "name": "Fabien Potencier", 1468 | "email": "fabien@symfony.com" 1469 | }, 1470 | { 1471 | "name": "Symfony Community", 1472 | "homepage": "https://symfony.com/contributors" 1473 | } 1474 | ], 1475 | "description": "Symfony Finder Component", 1476 | "homepage": "https://symfony.com", 1477 | "time": "2017-04-12T14:13:17+00:00" 1478 | }, 1479 | { 1480 | "name": "symfony/http-foundation", 1481 | "version": "v3.2.8", 1482 | "source": { 1483 | "type": "git", 1484 | "url": "https://github.com/symfony/http-foundation.git", 1485 | "reference": "9de6add7f731e5af7f5b2e9c0da365e43383ebef" 1486 | }, 1487 | "dist": { 1488 | "type": "zip", 1489 | "url": "https://api.github.com/repos/symfony/http-foundation/zipball/9de6add7f731e5af7f5b2e9c0da365e43383ebef", 1490 | "reference": "9de6add7f731e5af7f5b2e9c0da365e43383ebef", 1491 | "shasum": "" 1492 | }, 1493 | "require": { 1494 | "php": ">=5.5.9", 1495 | "symfony/polyfill-mbstring": "~1.1" 1496 | }, 1497 | "require-dev": { 1498 | "symfony/expression-language": "~2.8|~3.0" 1499 | }, 1500 | "type": "library", 1501 | "extra": { 1502 | "branch-alias": { 1503 | "dev-master": "3.2-dev" 1504 | } 1505 | }, 1506 | "autoload": { 1507 | "psr-4": { 1508 | "Symfony\\Component\\HttpFoundation\\": "" 1509 | }, 1510 | "exclude-from-classmap": [ 1511 | "/Tests/" 1512 | ] 1513 | }, 1514 | "notification-url": "https://packagist.org/downloads/", 1515 | "license": [ 1516 | "MIT" 1517 | ], 1518 | "authors": [ 1519 | { 1520 | "name": "Fabien Potencier", 1521 | "email": "fabien@symfony.com" 1522 | }, 1523 | { 1524 | "name": "Symfony Community", 1525 | "homepage": "https://symfony.com/contributors" 1526 | } 1527 | ], 1528 | "description": "Symfony HttpFoundation Component", 1529 | "homepage": "https://symfony.com", 1530 | "time": "2017-05-01T14:55:58+00:00" 1531 | }, 1532 | { 1533 | "name": "symfony/http-kernel", 1534 | "version": "v3.2.8", 1535 | "source": { 1536 | "type": "git", 1537 | "url": "https://github.com/symfony/http-kernel.git", 1538 | "reference": "46e8b209abab55c072c47d72d5cd1d62c0585e05" 1539 | }, 1540 | "dist": { 1541 | "type": "zip", 1542 | "url": "https://api.github.com/repos/symfony/http-kernel/zipball/46e8b209abab55c072c47d72d5cd1d62c0585e05", 1543 | "reference": "46e8b209abab55c072c47d72d5cd1d62c0585e05", 1544 | "shasum": "" 1545 | }, 1546 | "require": { 1547 | "php": ">=5.5.9", 1548 | "psr/log": "~1.0", 1549 | "symfony/debug": "~2.8|~3.0", 1550 | "symfony/event-dispatcher": "~2.8|~3.0", 1551 | "symfony/http-foundation": "~2.8.13|~3.1.6|~3.2" 1552 | }, 1553 | "conflict": { 1554 | "symfony/config": "<2.8" 1555 | }, 1556 | "require-dev": { 1557 | "symfony/browser-kit": "~2.8|~3.0", 1558 | "symfony/class-loader": "~2.8|~3.0", 1559 | "symfony/config": "~2.8|~3.0", 1560 | "symfony/console": "~2.8|~3.0", 1561 | "symfony/css-selector": "~2.8|~3.0", 1562 | "symfony/dependency-injection": "~2.8|~3.0", 1563 | "symfony/dom-crawler": "~2.8|~3.0", 1564 | "symfony/expression-language": "~2.8|~3.0", 1565 | "symfony/finder": "~2.8|~3.0", 1566 | "symfony/process": "~2.8|~3.0", 1567 | "symfony/routing": "~2.8|~3.0", 1568 | "symfony/stopwatch": "~2.8|~3.0", 1569 | "symfony/templating": "~2.8|~3.0", 1570 | "symfony/translation": "~2.8|~3.0", 1571 | "symfony/var-dumper": "~3.2" 1572 | }, 1573 | "suggest": { 1574 | "symfony/browser-kit": "", 1575 | "symfony/class-loader": "", 1576 | "symfony/config": "", 1577 | "symfony/console": "", 1578 | "symfony/dependency-injection": "", 1579 | "symfony/finder": "", 1580 | "symfony/var-dumper": "" 1581 | }, 1582 | "type": "library", 1583 | "extra": { 1584 | "branch-alias": { 1585 | "dev-master": "3.2-dev" 1586 | } 1587 | }, 1588 | "autoload": { 1589 | "psr-4": { 1590 | "Symfony\\Component\\HttpKernel\\": "" 1591 | }, 1592 | "exclude-from-classmap": [ 1593 | "/Tests/" 1594 | ] 1595 | }, 1596 | "notification-url": "https://packagist.org/downloads/", 1597 | "license": [ 1598 | "MIT" 1599 | ], 1600 | "authors": [ 1601 | { 1602 | "name": "Fabien Potencier", 1603 | "email": "fabien@symfony.com" 1604 | }, 1605 | { 1606 | "name": "Symfony Community", 1607 | "homepage": "https://symfony.com/contributors" 1608 | } 1609 | ], 1610 | "description": "Symfony HttpKernel Component", 1611 | "homepage": "https://symfony.com", 1612 | "time": "2017-05-01T17:46:48+00:00" 1613 | }, 1614 | { 1615 | "name": "symfony/polyfill-mbstring", 1616 | "version": "v1.3.0", 1617 | "source": { 1618 | "type": "git", 1619 | "url": "https://github.com/symfony/polyfill-mbstring.git", 1620 | "reference": "e79d363049d1c2128f133a2667e4f4190904f7f4" 1621 | }, 1622 | "dist": { 1623 | "type": "zip", 1624 | "url": "https://api.github.com/repos/symfony/polyfill-mbstring/zipball/e79d363049d1c2128f133a2667e4f4190904f7f4", 1625 | "reference": "e79d363049d1c2128f133a2667e4f4190904f7f4", 1626 | "shasum": "" 1627 | }, 1628 | "require": { 1629 | "php": ">=5.3.3" 1630 | }, 1631 | "suggest": { 1632 | "ext-mbstring": "For best performance" 1633 | }, 1634 | "type": "library", 1635 | "extra": { 1636 | "branch-alias": { 1637 | "dev-master": "1.3-dev" 1638 | } 1639 | }, 1640 | "autoload": { 1641 | "psr-4": { 1642 | "Symfony\\Polyfill\\Mbstring\\": "" 1643 | }, 1644 | "files": [ 1645 | "bootstrap.php" 1646 | ] 1647 | }, 1648 | "notification-url": "https://packagist.org/downloads/", 1649 | "license": [ 1650 | "MIT" 1651 | ], 1652 | "authors": [ 1653 | { 1654 | "name": "Nicolas Grekas", 1655 | "email": "p@tchwork.com" 1656 | }, 1657 | { 1658 | "name": "Symfony Community", 1659 | "homepage": "https://symfony.com/contributors" 1660 | } 1661 | ], 1662 | "description": "Symfony polyfill for the Mbstring extension", 1663 | "homepage": "https://symfony.com", 1664 | "keywords": [ 1665 | "compatibility", 1666 | "mbstring", 1667 | "polyfill", 1668 | "portable", 1669 | "shim" 1670 | ], 1671 | "time": "2016-11-14T01:06:16+00:00" 1672 | }, 1673 | { 1674 | "name": "symfony/routing", 1675 | "version": "v3.2.8", 1676 | "source": { 1677 | "type": "git", 1678 | "url": "https://github.com/symfony/routing.git", 1679 | "reference": "5029745d6d463585e8b487dbc83d6333f408853a" 1680 | }, 1681 | "dist": { 1682 | "type": "zip", 1683 | "url": "https://api.github.com/repos/symfony/routing/zipball/5029745d6d463585e8b487dbc83d6333f408853a", 1684 | "reference": "5029745d6d463585e8b487dbc83d6333f408853a", 1685 | "shasum": "" 1686 | }, 1687 | "require": { 1688 | "php": ">=5.5.9" 1689 | }, 1690 | "conflict": { 1691 | "symfony/config": "<2.8" 1692 | }, 1693 | "require-dev": { 1694 | "doctrine/annotations": "~1.0", 1695 | "doctrine/common": "~2.2", 1696 | "psr/log": "~1.0", 1697 | "symfony/config": "~2.8|~3.0", 1698 | "symfony/expression-language": "~2.8|~3.0", 1699 | "symfony/http-foundation": "~2.8|~3.0", 1700 | "symfony/yaml": "~2.8|~3.0" 1701 | }, 1702 | "suggest": { 1703 | "doctrine/annotations": "For using the annotation loader", 1704 | "symfony/config": "For using the all-in-one router or any loader", 1705 | "symfony/dependency-injection": "For loading routes from a service", 1706 | "symfony/expression-language": "For using expression matching", 1707 | "symfony/http-foundation": "For using a Symfony Request object", 1708 | "symfony/yaml": "For using the YAML loader" 1709 | }, 1710 | "type": "library", 1711 | "extra": { 1712 | "branch-alias": { 1713 | "dev-master": "3.2-dev" 1714 | } 1715 | }, 1716 | "autoload": { 1717 | "psr-4": { 1718 | "Symfony\\Component\\Routing\\": "" 1719 | }, 1720 | "exclude-from-classmap": [ 1721 | "/Tests/" 1722 | ] 1723 | }, 1724 | "notification-url": "https://packagist.org/downloads/", 1725 | "license": [ 1726 | "MIT" 1727 | ], 1728 | "authors": [ 1729 | { 1730 | "name": "Fabien Potencier", 1731 | "email": "fabien@symfony.com" 1732 | }, 1733 | { 1734 | "name": "Symfony Community", 1735 | "homepage": "https://symfony.com/contributors" 1736 | } 1737 | ], 1738 | "description": "Symfony Routing Component", 1739 | "homepage": "https://symfony.com", 1740 | "keywords": [ 1741 | "router", 1742 | "routing", 1743 | "uri", 1744 | "url" 1745 | ], 1746 | "time": "2017-04-12T14:13:17+00:00" 1747 | }, 1748 | { 1749 | "name": "symfony/translation", 1750 | "version": "v3.2.8", 1751 | "source": { 1752 | "type": "git", 1753 | "url": "https://github.com/symfony/translation.git", 1754 | "reference": "f4a04d2df710f81515df576b2de06bdeee518b83" 1755 | }, 1756 | "dist": { 1757 | "type": "zip", 1758 | "url": "https://api.github.com/repos/symfony/translation/zipball/f4a04d2df710f81515df576b2de06bdeee518b83", 1759 | "reference": "f4a04d2df710f81515df576b2de06bdeee518b83", 1760 | "shasum": "" 1761 | }, 1762 | "require": { 1763 | "php": ">=5.5.9", 1764 | "symfony/polyfill-mbstring": "~1.0" 1765 | }, 1766 | "conflict": { 1767 | "symfony/config": "<2.8" 1768 | }, 1769 | "require-dev": { 1770 | "psr/log": "~1.0", 1771 | "symfony/config": "~2.8|~3.0", 1772 | "symfony/intl": "^2.8.18|^3.2.5", 1773 | "symfony/yaml": "~2.8|~3.0" 1774 | }, 1775 | "suggest": { 1776 | "psr/log": "To use logging capability in translator", 1777 | "symfony/config": "", 1778 | "symfony/yaml": "" 1779 | }, 1780 | "type": "library", 1781 | "extra": { 1782 | "branch-alias": { 1783 | "dev-master": "3.2-dev" 1784 | } 1785 | }, 1786 | "autoload": { 1787 | "psr-4": { 1788 | "Symfony\\Component\\Translation\\": "" 1789 | }, 1790 | "exclude-from-classmap": [ 1791 | "/Tests/" 1792 | ] 1793 | }, 1794 | "notification-url": "https://packagist.org/downloads/", 1795 | "license": [ 1796 | "MIT" 1797 | ], 1798 | "authors": [ 1799 | { 1800 | "name": "Fabien Potencier", 1801 | "email": "fabien@symfony.com" 1802 | }, 1803 | { 1804 | "name": "Symfony Community", 1805 | "homepage": "https://symfony.com/contributors" 1806 | } 1807 | ], 1808 | "description": "Symfony Translation Component", 1809 | "homepage": "https://symfony.com", 1810 | "time": "2017-04-12T14:13:17+00:00" 1811 | }, 1812 | { 1813 | "name": "tymon/jwt-auth", 1814 | "version": "0.5.11", 1815 | "source": { 1816 | "type": "git", 1817 | "url": "https://github.com/tymondesigns/jwt-auth.git", 1818 | "reference": "807de0561c40c9a924783d2e30036b635cebf03c" 1819 | }, 1820 | "dist": { 1821 | "type": "zip", 1822 | "url": "https://api.github.com/repos/tymondesigns/jwt-auth/zipball/807de0561c40c9a924783d2e30036b635cebf03c", 1823 | "reference": "807de0561c40c9a924783d2e30036b635cebf03c", 1824 | "shasum": "" 1825 | }, 1826 | "require": { 1827 | "illuminate/http": "~5.0", 1828 | "illuminate/support": "~5.0", 1829 | "namshi/jose": "5.0.*", 1830 | "nesbot/carbon": "~1.0", 1831 | "php": ">=5.4.0" 1832 | }, 1833 | "require-dev": { 1834 | "illuminate/auth": "~5.0", 1835 | "illuminate/console": "~5.0", 1836 | "illuminate/database": "~5.0", 1837 | "mockery/mockery": "0.9.*", 1838 | "phpunit/phpunit": "4.*" 1839 | }, 1840 | "type": "library", 1841 | "extra": { 1842 | "branch-alias": { 1843 | "dev-develop": "0.5-dev" 1844 | } 1845 | }, 1846 | "autoload": { 1847 | "psr-4": { 1848 | "Tymon\\JWTAuth\\": "src" 1849 | } 1850 | }, 1851 | "notification-url": "https://packagist.org/downloads/", 1852 | "license": [ 1853 | "MIT" 1854 | ], 1855 | "authors": [ 1856 | { 1857 | "name": "Sean Tymon", 1858 | "email": "tymon148@gmail.com", 1859 | "homepage": "http://tymondesigns.com", 1860 | "role": "Developer" 1861 | } 1862 | ], 1863 | "description": "JSON Web Token Authentication for Laravel 4 and 5", 1864 | "homepage": "https://github.com/tymondesigns/jwt-auth", 1865 | "keywords": [ 1866 | "Authentication", 1867 | "JSON Web Token", 1868 | "auth", 1869 | "jwt", 1870 | "laravel", 1871 | "tymon" 1872 | ], 1873 | "time": "2017-04-06T19:57:45+00:00" 1874 | }, 1875 | { 1876 | "name": "webmozart/assert", 1877 | "version": "1.2.0", 1878 | "source": { 1879 | "type": "git", 1880 | "url": "https://github.com/webmozart/assert.git", 1881 | "reference": "2db61e59ff05fe5126d152bd0655c9ea113e550f" 1882 | }, 1883 | "dist": { 1884 | "type": "zip", 1885 | "url": "https://api.github.com/repos/webmozart/assert/zipball/2db61e59ff05fe5126d152bd0655c9ea113e550f", 1886 | "reference": "2db61e59ff05fe5126d152bd0655c9ea113e550f", 1887 | "shasum": "" 1888 | }, 1889 | "require": { 1890 | "php": "^5.3.3 || ^7.0" 1891 | }, 1892 | "require-dev": { 1893 | "phpunit/phpunit": "^4.6", 1894 | "sebastian/version": "^1.0.1" 1895 | }, 1896 | "type": "library", 1897 | "extra": { 1898 | "branch-alias": { 1899 | "dev-master": "1.3-dev" 1900 | } 1901 | }, 1902 | "autoload": { 1903 | "psr-4": { 1904 | "Webmozart\\Assert\\": "src/" 1905 | } 1906 | }, 1907 | "notification-url": "https://packagist.org/downloads/", 1908 | "license": [ 1909 | "MIT" 1910 | ], 1911 | "authors": [ 1912 | { 1913 | "name": "Bernhard Schussek", 1914 | "email": "bschussek@gmail.com" 1915 | } 1916 | ], 1917 | "description": "Assertions to validate method input/output with nice error messages.", 1918 | "keywords": [ 1919 | "assert", 1920 | "check", 1921 | "validate" 1922 | ], 1923 | "time": "2016-11-23T20:04:58+00:00" 1924 | } 1925 | ], 1926 | "packages-dev": [], 1927 | "aliases": [], 1928 | "minimum-stability": "stable", 1929 | "stability-flags": { 1930 | "dingo/api": 20 1931 | }, 1932 | "prefer-stable": false, 1933 | "prefer-lowest": false, 1934 | "platform": { 1935 | "php": ">=5.5.9" 1936 | }, 1937 | "platform-dev": [] 1938 | } 1939 | --------------------------------------------------------------------------------