Browse Source

Laravel 5.3

pull/799/head
nanaya 2 years ago
parent
commit
a7a3bbd02a
70 changed files with 1077 additions and 1004 deletions
  1. 14
    0
      .env.example
  2. 2
    2
      app/Console/Commands/ModdingQueueUpdateCommand.php
  3. 2
    2
      app/Console/Commands/ModdingRankCommand.php
  4. 2
    2
      app/Console/Commands/ModdingScoreIndexCommand.php
  5. 2
    2
      app/Console/Commands/StoreCheckOrderTrackingStatus.php
  6. 2
    2
      app/Console/Commands/UserForumStatSyncCommand.php
  7. 10
    5
      app/Console/Kernel.php
  8. 0
    25
      app/Events/Event.php
  9. 1
    2
      app/Events/Forum/TopicUpdate.php
  10. 20
    11
      app/Exceptions/Handler.php
  11. 0
    27
      app/Exceptions/RequireLoginException.php
  12. 4
    7
      app/Http/Controllers/API/Controller.php
  13. 7
    3
      app/Http/Controllers/AccountController.php
  14. 7
    3
      app/Http/Controllers/Admin/Controller.php
  15. 1
    1
      app/Http/Controllers/Admin/Store/OrdersController.php
  16. 1
    1
      app/Http/Controllers/BeatmapsController.php
  17. 0
    2
      app/Http/Controllers/Controller.php
  18. 5
    3
      app/Http/Controllers/Forum/ForumCoversController.php
  19. 1
    1
      app/Http/Controllers/Forum/ForumsController.php
  20. 0
    148
      app/Http/Controllers/NotificationController.php
  21. 17
    17
      app/Http/Kernel.php
  22. 0
    63
      app/Http/Middleware/Authenticate.php
  23. 9
    5
      app/Http/Middleware/TurbolinksSupport.php
  24. 0
    29
      app/Jobs/Job.php
  25. 6
    5
      app/Jobs/RegenerateBeatmapsetCover.php
  26. 2
    2
      app/Libraries/AuthorizationResult.php
  27. 3
    4
      app/Models/Beatmapset.php
  28. 1
    1
      app/Models/Store/Product.php
  29. 1
    14
      app/Models/User.php
  30. 29
    0
      app/Providers/AuthServiceProvider.php
  31. 26
    0
      app/Providers/BroadcastServiceProvider.php
  32. 4
    5
      app/Providers/EventServiceProvider.php
  33. 7
    7
      app/Providers/RouteServiceProvider.php
  34. 3
    3
      artisan
  35. 2
    2
      composer.json
  36. 193
    114
      composer.lock
  37. 102
    70
      config/app.php
  38. 0
    5
      config/auth.php
  39. 58
    0
      config/broadcasting.php
  40. 19
    0
      config/cache.php
  41. 1
    1
      config/database.php
  42. 3
    3
      config/queue.php
  43. 12
    12
      config/services.php
  44. 43
    4
      config/session.php
  45. 34
    0
      database/migrations/2016_10_24_062803_update_jobs_table.php
  46. 1
    1
      public/index.php
  47. 2
    2
      resources/assets/coffee/react/_components/beatmapset-panel.coffee
  48. 1
    1
      resources/assets/coffee/react/beatmap-discussions/discussion.coffee
  49. 1
    1
      resources/assets/coffee/react/beatmap-discussions/main.coffee
  50. 3
    2
      resources/assets/coffee/react/beatmap-discussions/nominations.coffee
  51. 1
    1
      resources/assets/coffee/react/beatmap-discussions/overview.coffee
  52. 3
    3
      resources/assets/coffee/react/beatmap-discussions/post.coffee
  53. 1
    1
      resources/assets/coffee/react/beatmap-discussions/system-post.coffee
  54. 1
    1
      resources/assets/coffee/react/beatmapset-page/header.coffee
  55. 1
    1
      resources/assets/coffee/react/beatmapset-page/main.coffee
  56. 1
    1
      resources/assets/coffee/react/beatmapset-page/score-big.coffee
  57. 1
    1
      resources/assets/coffee/react/beatmapset-page/score.coffee
  58. 2
    2
      resources/assets/coffee/react/contest/entry/uploader.coffee
  59. 1
    1
      resources/assets/coffee/react/contest/entry/user-entry.coffee
  60. 1
    1
      resources/assets/coffee/react/contest/voting/voter.coffee
  61. 1
    1
      resources/assets/coffee/react/mp-history/content.coffee
  62. 1
    1
      resources/assets/coffee/react/mp-history/event.coffee
  63. 1
    1
      resources/assets/coffee/react/mp-history/game-header.coffee
  64. 1
    1
      resources/assets/coffee/react/mp-history/main.coffee
  65. 1
    1
      resources/assets/coffee/react/mp-history/score.coffee
  66. 2
    2
      resources/assets/coffee/react/profile-page/historical.coffee
  67. 1
    0
      resources/lang/en/layout.php
  68. 12
    0
      routes/console.php
  69. 50
    44
      routes/web.php
  70. 330
    318
      yarn.lock

+ 14
- 0
.env.example View File

@@ -3,6 +3,7 @@ APP_URL=http://localhost:8080
3 3
 APP_ENV=local
4 4
 APP_DEBUG=true
5 5
 APP_KEY=SomeRandomString
6
+APP_LOG_LEVEL=debug
6 7
 # APP_SENTRY=https://...
7 8
 
8 9
 DB_HOST=localhost
@@ -12,10 +13,19 @@ DB_USERNAME=osuweb
12 13
 
13 14
 # REDIS_HOST=127.0.0.1
14 15
 
16
+# MEMCACHED_PERSISTENT_ID=
17
+# MEMCACHED_USERNAME=
18
+# MEMCACHED_PASSWORD=
19
+# MEMCACHED_HOST=127.0.0.1
20
+# MEMCACHED_PORT=11211
21
+
15 22
 OSU_API_KEY=
16 23
 
24
+BROADCAST_DRIVER=log
17 25
 CACHE_DRIVER=file
18 26
 SESSION_DRIVER=file
27
+# SESSION_DOMAIN=
28
+# SESSION_SECURE_COOKIE=false
19 29
 
20 30
 # MAIL_DRIVER=log
21 31
 
@@ -53,3 +63,7 @@ SLACK_TOKEN=test
53 63
 # STATSD_HOST=127.0.0.1
54 64
 # STATSD_PORT=8125
55 65
 # STATSD_NAMESPACE=
66
+
67
+PUSHER_APP_ID=
68
+PUSHER_KEY=
69
+PUSHER_SECRET=

+ 2
- 2
app/Console/Commands/ModdingQueueUpdateCommand.php View File

@@ -30,7 +30,7 @@ class ModdingQueueUpdateCommand extends Command
30 30
      *
31 31
      * @var string
32 32
      */
33
-    protected $name = 'modding:queue-update';
33
+    protected $signature = 'modding:queue-update';
34 34
 
35 35
     /**
36 36
      * The console command description.
@@ -54,7 +54,7 @@ class ModdingQueueUpdateCommand extends Command
54 54
      *
55 55
      * @return mixed
56 56
      */
57
-    public function fire()
57
+    public function handle()
58 58
     {
59 59
         //
60 60
     }

+ 2
- 2
app/Console/Commands/ModdingRankCommand.php View File

@@ -28,7 +28,7 @@ class ModdingRankCommand extends Command
28 28
      *
29 29
      * @var string
30 30
      */
31
-    protected $name = 'modding:rank';
31
+    protected $signature = 'modding:rank';
32 32
 
33 33
     /**
34 34
      * The console command description.
@@ -52,7 +52,7 @@ class ModdingRankCommand extends Command
52 52
      *
53 53
      * @return mixed
54 54
      */
55
-    public function fire()
55
+    public function handle()
56 56
     {
57 57
         $rankable = Beatmapset::rankable();
58 58
 

+ 2
- 2
app/Console/Commands/ModdingScoreIndexCommand.php View File

@@ -30,7 +30,7 @@ class ModdingScoreIndexCommand extends Command
30 30
      *
31 31
      * @var string
32 32
      */
33
-    protected $name = 'modding:index';
33
+    protected $signature = 'modding:index';
34 34
 
35 35
     /**
36 36
      * The console command description.
@@ -54,7 +54,7 @@ class ModdingScoreIndexCommand extends Command
54 54
      *
55 55
      * @return mixed
56 56
      */
57
-    public function fire()
57
+    public function handle()
58 58
     {
59 59
         //
60 60
     }

+ 2
- 2
app/Console/Commands/StoreCheckOrderTrackingStatus.php View File

@@ -30,7 +30,7 @@ class StoreCheckOrderTrackingStatus extends Command
30 30
      *
31 31
      * @var string
32 32
      */
33
-    protected $name = 'store:tracking';
33
+    protected $signature = 'store:tracking';
34 34
 
35 35
     /**
36 36
      * The console command description.
@@ -52,7 +52,7 @@ class StoreCheckOrderTrackingStatus extends Command
52 52
      *
53 53
      * @return mixed
54 54
      */
55
-    public function fire()
55
+    public function handle()
56 56
     {
57 57
         $orders = Store\Order::where('status', '=', 'shipped')->where('tracking_code', '!=', '')->orderBy('updated_at')->get();
58 58
         $count = count($orders);

+ 2
- 2
app/Console/Commands/UserForumStatSyncCommand.php View File

@@ -29,7 +29,7 @@ class UserForumStatSyncCommand extends Command
29 29
      *
30 30
      * @var string
31 31
      */
32
-    protected $name = 'user:forumsync';
32
+    protected $signature = 'user:forumsync';
33 33
 
34 34
     /**
35 35
      * The console command description.
@@ -53,7 +53,7 @@ class UserForumStatSyncCommand extends Command
53 53
      *
54 54
      * @return mixed
55 55
      */
56
-    public function fire()
56
+    public function handle()
57 57
     {
58 58
         $this->info('Synchronising user post counts...');
59 59
 

+ 10
- 5
app/Console/Kernel.php View File

@@ -31,14 +31,14 @@ class Kernel extends ConsoleKernel
31 31
      */
32 32
     protected $commands = [
33 33
         // modding stuff
34
-        'App\Console\Commands\ModdingQueueUpdateCommand',
35
-        'App\Console\Commands\ModdingRankCommand',
36
-        'App\Console\Commands\ModdingScoreIndexCommand',
34
+        Commands\ModdingQueueUpdateCommand::class,
35
+        Commands\ModdingRankCommand::class,
36
+        Commands\ModdingScoreIndexCommand::class,
37 37
 
38
-        'App\Console\Commands\UserForumStatSyncCommand',
38
+        Commands\UserForumStatSyncCommand::class,
39 39
 
40 40
         // parsing html with regexp
41
-        'App\Console\Commands\StoreCheckOrderTrackingStatus',
41
+        Commands\StoreCheckOrderTrackingStatus::class,
42 42
     ];
43 43
 
44 44
     /**
@@ -53,4 +53,9 @@ class Kernel extends ConsoleKernel
53 53
         $schedule->command('store:tracking')
54 54
             ->cron('0 0,8,16 * * *');
55 55
     }
56
+
57
+    protected function commands()
58
+    {
59
+        require base_path('routes/console.php');
60
+    }
56 61
 }

+ 0
- 25
app/Events/Event.php View File

@@ -1,25 +0,0 @@
1
-<?php
2
-
3
-/**
4
- *    Copyright 2015 ppy Pty. Ltd.
5
- *
6
- *    This file is part of osu!web. osu!web is distributed with the hope of
7
- *    attracting more community contributions to the core ecosystem of osu!.
8
- *
9
- *    osu!web is free software: you can redistribute it and/or modify
10
- *    it under the terms of the Affero GNU General Public License version 3
11
- *    as published by the Free Software Foundation.
12
- *
13
- *    osu!web is distributed WITHOUT ANY WARRANTY; without even the implied
14
- *    warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
15
- *    See the GNU Affero General Public License for more details.
16
- *
17
- *    You should have received a copy of the GNU Affero General Public License
18
- *    along with osu!web.  If not, see <http://www.gnu.org/licenses/>.
19
- */
20
-namespace App\Events;
21
-
22
-abstract class Event
23
-{
24
-    //
25
-}

+ 1
- 2
app/Events/Forum/TopicUpdate.php View File

@@ -19,13 +19,12 @@
19 19
  */
20 20
 namespace App\Events\Forum;
21 21
 
22
-use App\Events\Event;
23 22
 use App\Models\Forum\Post;
24 23
 use App\Models\Forum\Topic;
25 24
 use App\Models\User;
26 25
 use Illuminate\Queue\SerializesModels;
27 26
 
28
-abstract class TopicUpdate extends Event
27
+abstract class TopicUpdate
29 28
 {
30 29
     use SerializesModels;
31 30
 

+ 20
- 11
app/Exceptions/Handler.php View File

@@ -23,6 +23,7 @@ use App;
23 23
 use Auth;
24 24
 use Exception;
25 25
 use Illuminate\Auth\Access\AuthorizationException as LaravelAuthorizationException;
26
+use Illuminate\Auth\AuthenticationException;
26 27
 use Illuminate\Database\Eloquent\ModelNotFoundException;
27 28
 use Illuminate\Foundation\Exceptions\Handler as ExceptionHandler;
28 29
 use Illuminate\Session\TokenMismatchException;
@@ -39,14 +40,17 @@ class Handler extends ExceptionHandler
39 40
      * @var array
40 41
      */
41 42
     protected $dontReport = [
42
-        AuthorizationException::class,
43
+        // laravel's
44
+        AuthenticationException::class,
43 45
         HttpException::class,
44 46
         LaravelAuthorizationException::class,
45 47
         ModelNotFoundException::class,
46
-        RequireLoginException::class,
47
-        SilencedException::class,
48
-        TokenMisMatchException::class,
48
+        TokenMismatchException::class,
49 49
         ValidationException::class,
50
+
51
+        // local
52
+        AuthorizationException::class,
53
+        SilencedException::class,
50 54
     ];
51 55
 
52 56
     /**
@@ -85,7 +89,7 @@ class Handler extends ExceptionHandler
85 89
             return 404;
86 90
         } elseif ($e instanceof TokenMismatchException) {
87 91
             return 403;
88
-        } elseif ($e instanceof RequireLoginException) {
92
+        } elseif ($e instanceof AuthenticationException) {
89 93
             return 401;
90 94
         } elseif ($e instanceof AuthorizationException) {
91 95
             return 403;
@@ -132,12 +136,8 @@ class Handler extends ExceptionHandler
132 136
             return $e->getResponse();
133 137
         }
134 138
 
135
-        if ($e instanceof RequireLoginException) {
136
-            if ($request->ajax()) {
137
-                return response(['authentication' => 'basic'], 401);
138
-            }
139
-
140
-            return response()->view('users.login');
139
+        if ($e instanceof AuthenticationException) {
140
+            return $this->unauthenticated($request, $e);
141 141
         }
142 142
 
143 143
         if (config('app.debug')) {
@@ -156,4 +156,13 @@ class Handler extends ExceptionHandler
156 156
 
157 157
         return $response->setStatusCode($this->statusCode($e));
158 158
     }
159
+
160
+    protected function unauthenticated($request, $exception)
161
+    {
162
+        if ($request->expectsJson()) {
163
+            return response(['authentication' => 'basic'], 401);
164
+        }
165
+
166
+        return response()->view('users.login')->setStatusCode(401);
167
+    }
159 168
 }

+ 0
- 27
app/Exceptions/RequireLoginException.php View File

@@ -1,27 +0,0 @@
1
-<?php
2
-
3
-/**
4
- *    Copyright 2015 ppy Pty. Ltd.
5
- *
6
- *    This file is part of osu!web. osu!web is distributed with the hope of
7
- *    attracting more community contributions to the core ecosystem of osu!.
8
- *
9
- *    osu!web is free software: you can redistribute it and/or modify
10
- *    it under the terms of the Affero GNU General Public License version 3
11
- *    as published by the Free Software Foundation.
12
- *
13
- *    osu!web is distributed WITHOUT ANY WARRANTY; without even the implied
14
- *    warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
15
- *    See the GNU Affero General Public License for more details.
16
- *
17
- *    You should have received a copy of the GNU Affero General Public License
18
- *    along with osu!web.  If not, see <http://www.gnu.org/licenses/>.
19
- */
20
-namespace App\Exceptions;
21
-
22
-use Exception;
23
-
24
-class RequireLoginException extends Exception
25
-{
26
-    // doesn't really contain anything
27
-}

+ 4
- 7
app/Http/Controllers/API/Controller.php View File

@@ -24,7 +24,6 @@ use Authorizer;
24 24
 use Illuminate\Foundation\Bus\DispatchesJobs;
25 25
 use Illuminate\Foundation\Validation\ValidatesRequests;
26 26
 use Illuminate\Routing\Controller as BaseController;
27
-use LucaDegasperi\OAuth2Server\Exceptions\NoActiveAccessTokenException;
28 27
 
29 28
 class Controller extends BaseController
30 29
 {
@@ -32,12 +31,10 @@ class Controller extends BaseController
32 31
 
33 32
     public function __construct()
34 33
     {
35
-        // allow route:list to work instead of failing from exception
36
-        // thrown by Authorizer.
37
-        try {
34
+        $this->middleware(function ($request, $next) {
38 35
             Auth::onceUsingId(Authorizer::getResourceOwnerId());
39
-        } catch (NoActiveAccessTokenException $_e) {
40
-            //
41
-        }
36
+
37
+            return $next($request);
38
+        });
42 39
     }
43 40
 }

+ 7
- 3
app/Http/Controllers/AccountController.php View File

@@ -35,9 +35,13 @@ class AccountController extends Controller
35 35
     {
36 36
         $this->middleware('auth', ['except' => 'logout']);
37 37
 
38
-        if (Auth::check() && Auth::user()->isSilenced()) {
39
-            abort(403);
40
-        }
38
+        $this->middleware(function ($request, $next) {
39
+            if (Auth::check() && Auth::user()->isSilenced()) {
40
+                return abort(403);
41
+            }
42
+
43
+            return $next($request);
44
+        });
41 45
 
42 46
         $this->middleware('verify-user');
43 47
 

+ 7
- 3
app/Http/Controllers/Admin/Controller.php View File

@@ -30,9 +30,13 @@ abstract class Controller extends BaseController
30 30
     {
31 31
         $this->middleware('auth');
32 32
 
33
-        if (Auth::check() === true && Auth::user()->isAdmin() !== true) {
34
-            abort(403);
35
-        }
33
+        $this->middleware(function ($request, $next) {
34
+            if (Auth::check() && !Auth::user()->isAdmin()) {
35
+                abort(403);
36
+            }
37
+
38
+            return $next($request);
39
+        });
36 40
 
37 41
         return parent::__construct();
38 42
     }

+ 1
- 1
app/Http/Controllers/Admin/Store/OrdersController.php View File

@@ -32,7 +32,7 @@ class OrdersController extends Controller
32 32
 
33 33
         $productId = (int) Request::input('product');
34 34
         if ($productId) {
35
-            $orders = array_where($orders, function ($_i, $order) use ($productId) {
35
+            $orders = array_where($orders, function ($order) use ($productId) {
36 36
                 return $order->items()->where('product_id', $productId)->exists();
37 37
             });
38 38
         }

+ 1
- 1
app/Http/Controllers/BeatmapsController.php View File

@@ -34,7 +34,7 @@ class BeatmapsController extends Controller
34 34
         $beatmap = Beatmap::findOrFail($id);
35 35
         $set = $beatmap->beatmapset;
36 36
 
37
-        return ujs_redirect(route('beatmapsets.show', ['id' => $set->beatmapset_id]).'#'.$beatmap->mode.'/'.$id);
37
+        return ujs_redirect(route('beatmapsets.show', ['beatmap' => $set->beatmapset_id]).'#'.$beatmap->mode.'/'.$id);
38 38
     }
39 39
 
40 40
     public function scores($id)

+ 0
- 2
app/Http/Controllers/Controller.php View File

@@ -19,8 +19,6 @@
19 19
  */
20 20
 namespace App\Http\Controllers;
21 21
 
22
-// use Illuminate\Foundation\Auth\Access\AuthorizesRequests;
23
-// use Illuminate\Foundation\Auth\Access\AuthorizesResources;
24 22
 use Illuminate\Contracts\Validation\Validator;
25 23
 use Illuminate\Foundation\Bus\DispatchesJobs;
26 24
 use Illuminate\Foundation\Validation\ValidatesRequests;

+ 5
- 3
app/Http/Controllers/Forum/ForumCoversController.php View File

@@ -42,9 +42,11 @@ class ForumCoversController extends Controller
42 42
             'update',
43 43
         ]]);
44 44
 
45
-        if (Auth::check() === true && Auth::user()->isAdmin() !== true) {
46
-            abort(403);
47
-        }
45
+        $this->middleware(function ($request, $next) {
46
+            if (Auth::check() && !Auth::user()->isAdmin()) {
47
+                abort(403);
48
+            }
49
+        });
48 50
     }
49 51
 
50 52
     public function store()

+ 1
- 1
app/Http/Controllers/Forum/ForumsController.php View File

@@ -40,7 +40,7 @@ class ForumsController extends Controller
40 40
     {
41 41
         $forums = Forum::where('parent_id', 0)->with('subForums')->orderBy('left_id')->get();
42 42
 
43
-        $forums = array_where($forums, function ($_i, $forum) {
43
+        $forums = $forums->filter(function ($forum) {
44 44
             return priv_check('ForumView', $forum)->can();
45 45
         });
46 46
 

+ 0
- 148
app/Http/Controllers/NotificationController.php View File

@@ -1,148 +0,0 @@
1
-<?php
2
-
3
-/**
4
- *    Copyright 2015 ppy Pty. Ltd.
5
- *
6
- *    This file is part of osu!web. osu!web is distributed with the hope of
7
- *    attracting more community contributions to the core ecosystem of osu!.
8
- *
9
- *    osu!web is free software: you can redistribute it and/or modify
10
- *    it under the terms of the Affero GNU General Public License version 3
11
- *    as published by the Free Software Foundation.
12
- *
13
- *    osu!web is distributed WITHOUT ANY WARRANTY; without even the implied
14
- *    warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
15
- *    See the GNU Affero General Public License for more details.
16
- *
17
- *    You should have received a copy of the GNU Affero General Public License
18
- *    along with osu!web.  If not, see <http://www.gnu.org/licenses/>.
19
- */
20
-namespace App\Http\Controllers;
21
-
22
-use Auth;
23
-use Illuminate\Database\Eloquent\ModelNotFoundException;
24
-use Input;
25
-
26
-class NotificationController extends Controller
27
-{
28
-    /*
29
-        NOTE: this file isnt meant for using in views; everything is JSON as it's a REST controller
30
-        Dont include CSRF protection in this or you'll break bancho.
31
-    */
32
-
33
-    protected $auth = false;
34
-    protected $user;
35
-
36
-    public function __construct()
37
-    {
38
-        if (!Auth::check()) {
39
-            $key = Input::server('X_BANCHO_AUTH', false) ? Input::server('X_BANCHO_AUTH') : Input::get('key', false);
40
-            $sender = Input::server('X_BANCHO_SENDER', false) ? Input::server('X_BANCHO_SENDER') : Input::get('sender', false);
41
-
42
-            if ($key && $sender && User::validate($sender)) {
43
-                try {
44
-                    $user = User::findOrFail($sender);
45
-
46
-                    if ($user->verify($key)) {
47
-                        $this->auth = true;
48
-                        $this->user = $user;
49
-
50
-                        return;
51
-                    }
52
-                } catch (ModelNotFoundException $e) {
53
-                }
54
-            }
55
-
56
-            $this->auth = false;
57
-        } else {
58
-            $this->auth = true;
59
-            $this->user = Auth::user();
60
-        }
61
-    }
62
-
63
-    public function getIndex()
64
-    {
65
-        if ($this->auth) {
66
-            return $this->getUser($this->user->user_id);
67
-        } else {
68
-            return $this->error('not authorized', 403);
69
-        }
70
-    }
71
-
72
-    // /notifications/group/11/50/1
73
-
74
-    public function getGroup($group, $limit = 20, $page = 0)
75
-    {
76
-        if (!$this->auth) {
77
-            return $this->error('not authorized', 401);
78
-        }
79
-
80
-        if (!$this->user->isDev() or !$this->user->isHax() or !$this->user->isGroup($group)) {
81
-            return $this->error('not authorized', 401);
82
-        }
83
-
84
-        try {
85
-            $group = Group::findOrFail($group);
86
-
87
-            $limit = ($limit > 50) ? 50 : $limit;
88
-
89
-            $offset = ($page <= 0) ? 0 : ($limit * $page);
90
-
91
-            $notifications = $group
92
-                ->notifications()
93
-                ->take($limit)
94
-                ->skip($offset);
95
-
96
-            return $this->response($notifications->get());
97
-        } catch (ModelNotFoundException $e) {
98
-            return $this->error('group not found', 404);
99
-        }
100
-    }
101
-
102
-    public function getUser($user, $limit = 20, $page = 0)
103
-    {
104
-        if ($this->user->user_id !== intval($user)) {
105
-            if (!$this->user->isHax() or !$this->user->isDev()) {
106
-                return $this->error('not authorized', 403);
107
-            }
108
-        }
109
-        try {
110
-            $user = User::findOrFail($user);
111
-
112
-            $limit = ($limit > 50) ? 50 : $limit;
113
-
114
-            $offset = ($page <= 0) ? 0 : ($limit * $page);
115
-
116
-            $notifications = $user
117
-                ->notifications()
118
-                ->take($limit)
119
-                ->skip($offset);
120
-
121
-            return $this->response($notifications->get());
122
-        } catch (ModelNotFoundException $e) {
123
-            return $this - error('group not found', 404);
124
-        }
125
-    }
126
-
127
-    public function missingMethod($parameters = [])
128
-    {
129
-        return $this->error('not found', 404);
130
-    }
131
-
132
-    protected function error($error, $code)
133
-    {
134
-        return $this->response(['error' => $error, 'code' => $code]);
135
-    }
136
-
137
-    protected function response($parameters = [])
138
-    {
139
-        $response = Response::json($parameters);
140
-
141
-        // JSON-P
142
-        if (Input::has('callback')) {
143
-            $response->setCallback(Input::get('callback'));
144
-        }
145
-
146
-        return $response;
147
-    }
148
-}

+ 17
- 17
app/Http/Kernel.php View File

@@ -29,19 +29,19 @@ class Kernel extends HttpKernel
29 29
      * @var array
30 30
      */
31 31
     protected $middleware = [
32
-        'Illuminate\Foundation\Http\Middleware\CheckForMaintenanceMode',
32
+        \Illuminate\Foundation\Http\Middleware\CheckForMaintenanceMode::class,
33 33
         Middleware\EncryptCookies::class,
34
-        'Illuminate\Cookie\Middleware\AddQueuedCookiesToResponse',
35
-        'Illuminate\Session\Middleware\StartSession',
34
+        \Illuminate\Cookie\Middleware\AddQueuedCookiesToResponse::class,
35
+        \Illuminate\Session\Middleware\StartSession::class,
36 36
         Middleware\SetLocale::class,
37
-        'Illuminate\View\Middleware\ShareErrorsFromSession',
38
-        'App\Http\Middleware\VerifyCsrfToken',
39
-        'App\Http\Middleware\AutologinFromLegacyCookie',
37
+        \Illuminate\View\Middleware\ShareErrorsFromSession::class,
38
+        Middleware\VerifyCsrfToken::class,
39
+        Middleware\AutologinFromLegacyCookie::class,
40 40
         Middleware\VerifyPrivilegedUser::class,
41
-        'App\Http\Middleware\CheckUserBanStatus',
42
-        'App\Http\Middleware\UpdateUserLastvisit',
43
-        'Clockwork\Support\Laravel\ClockworkMiddleware',
44
-        'LucaDegasperi\OAuth2Server\Middleware\OAuthExceptionHandlerMiddleware',
41
+        Middleware\CheckUserBanStatus::class,
42
+        Middleware\UpdateUserLastvisit::class,
43
+        \Clockwork\Support\Laravel\ClockworkMiddleware::class,
44
+        \LucaDegasperi\OAuth2Server\Middleware\OAuthExceptionHandlerMiddleware::class,
45 45
         Middleware\TurbolinksSupport::class,
46 46
     ];
47 47
 
@@ -51,14 +51,14 @@ class Kernel extends HttpKernel
51 51
      * @var array
52 52
      */
53 53
     protected $routeMiddleware = [
54
-        'auth' => 'App\Http\Middleware\Authenticate',
55
-        'auth.basic' => 'Illuminate\Auth\Middleware\AuthenticateWithBasicAuth',
56
-        'check-authorization-params' => 'LucaDegasperi\OAuth2Server\Middleware\CheckAuthCodeRequestMiddleware',
54
+        'auth' => \Illuminate\Auth\Middleware\Authenticate::class,
55
+        'auth.basic' => \Illuminate\Auth\Middleware\AuthenticateWithBasicAuth::class,
56
+        'check-authorization-params' => \LucaDegasperi\OAuth2Server\Middleware\CheckAuthCodeRequestMiddleware::class,
57 57
         'check-user-restricted' => Middleware\CheckUserRestricted::class,
58
-        'guest' => 'App\Http\Middleware\RedirectIfAuthenticated',
59
-        'oauth' => 'LucaDegasperi\OAuth2Server\Middleware\OAuthMiddleware',
60
-        'oauth-client' => 'LucaDegasperi\OAuth2Server\Middleware\OAuthClientOwnerMiddleware',
61
-        'oauth-user' => 'LucaDegasperi\OAuth2Server\Middleware\OAuthUserOwnerMiddleware',
58
+        'guest' => Middleware\RedirectIfAuthenticated::class,
59
+        'oauth' => \LucaDegasperi\OAuth2Server\Middleware\OAuthMiddleware::class,
60
+        'oauth-client' => \LucaDegasperi\OAuth2Server\Middleware\OAuthClientOwnerMiddleware::class,
61
+        'oauth-user' => \LucaDegasperi\OAuth2Server\Middleware\OAuthUserOwnerMiddleware::class,
62 62
         'verify-user' => Middleware\VerifyUser::class,
63 63
     ];
64 64
 }

+ 0
- 63
app/Http/Middleware/Authenticate.php View File

@@ -1,63 +0,0 @@
1
-<?php
2
-
3
-/**
4
- *    Copyright 2015 ppy Pty. Ltd.
5
- *
6
- *    This file is part of osu!web. osu!web is distributed with the hope of
7
- *    attracting more community contributions to the core ecosystem of osu!.
8
- *
9
- *    osu!web is free software: you can redistribute it and/or modify
10
- *    it under the terms of the Affero GNU General Public License version 3
11
- *    as published by the Free Software Foundation.
12
- *
13
- *    osu!web is distributed WITHOUT ANY WARRANTY; without even the implied
14
- *    warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
15
- *    See the GNU Affero General Public License for more details.
16
- *
17
- *    You should have received a copy of the GNU Affero General Public License
18
- *    along with osu!web.  If not, see <http://www.gnu.org/licenses/>.
19
- */
20
-namespace App\Http\Middleware;
21
-
22
-use App\Exceptions\RequireLoginException;
23
-use Closure;
24
-use Illuminate\Contracts\Auth\Guard;
25
-
26
-class Authenticate
27
-{
28
-    /**
29
-     * The Guard implementation.
30
-     *
31
-     * @var Guard
32
-     */
33
-    protected $auth;
34
-
35
-    /**
36
-     * Create a new filter instance.
37
-     *
38
-     * @param Guard $auth
39
-     *
40
-     * @return void
41
-     */
42
-    public function __construct(Guard $auth)
43
-    {
44
-        $this->auth = $auth;
45
-    }
46
-
47
-    /**
48
-     * Handle an incoming request.
49
-     *
50
-     * @param \Illuminate\Http\Request $request
51
-     * @param \Closure                 $next
52
-     *
53
-     * @return mixed
54
-     */
55
-    public function handle($request, Closure $next)
56
-    {
57
-        if ($this->auth->guest()) {
58
-            throw new RequireLoginException();
59
-        }
60
-
61
-        return $next($request);
62
-    }
63
-}

+ 9
- 5
app/Http/Middleware/TurbolinksSupport.php View File

@@ -16,12 +16,16 @@ class TurbolinksSupport
16 16
      */
17 17
     public function handle($request, Closure $next)
18 18
     {
19
-        $isTurbolinksRedirect = presence($request->header('Turbolinks-Referrer'));
19
+        $isTurbolinks = presence($request->header('Turbolinks-Referrer'));
20
+        $response = $next($request);
20 21
 
21
-        if ($isTurbolinksRedirect) {
22
-            return $next($request)->header('Turbolinks-Location', $request->fullUrl());
23
-        } else {
24
-            return $next($request);
22
+        // symphony responder (debug error page) doesn't have header method
23
+        $isNormalResponse = method_exists($response, 'header');
24
+
25
+        if ($isTurbolinks && $isNormalResponse) {
26
+            return $response->header('Turbolinks-Location', $request->fullUrl());
25 27
         }
28
+
29
+        return $response;
26 30
     }
27 31
 }

+ 0
- 29
app/Jobs/Job.php View File

@@ -1,29 +0,0 @@
1
-<?php
2
-
3
-/**
4
- *    Copyright 2015 ppy Pty. Ltd.
5
- *
6
- *    This file is part of osu!web. osu!web is distributed with the hope of
7
- *    attracting more community contributions to the core ecosystem of osu!.
8
- *
9
- *    osu!web is free software: you can redistribute it and/or modify
10
- *    it under the terms of the Affero GNU General Public License version 3
11
- *    as published by the Free Software Foundation.
12
- *
13
- *    osu!web is distributed WITHOUT ANY WARRANTY; without even the implied
14
- *    warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
15
- *    See the GNU Affero General Public License for more details.
16
- *
17
- *    You should have received a copy of the GNU Affero General Public License
18
- *    along with osu!web.  If not, see <http://www.gnu.org/licenses/>.
19
- */
20
-namespace App\Jobs;
21
-
22
-use Illuminate\Bus\Queueable;
23
-
24
-abstract class Job
25
-{
26
-    //
27
-
28
-    use Queueable;
29
-}

+ 6
- 5
app/Jobs/RegenerateBeatmapsetCover.php View File

@@ -2,18 +2,19 @@
2 2
 
3 3
 namespace App\Jobs;
4 4
 
5
+use App\Exceptions\SilencedException;
5 6
 use App\Models\Beatmapset;
6
-use Illuminate\Queue\SerializesModels;
7
-use Illuminate\Queue\InteractsWithQueue;
7
+use Illuminate\Bus\Queueable;
8 8
 use Illuminate\Contracts\Bus\SelfHandling;
9 9
 use Illuminate\Contracts\Queue\ShouldQueue;
10
+use Illuminate\Queue\InteractsWithQueue;
11
+use Illuminate\Queue\SerializesModels;
10 12
 use Raven_Client;
11
-use App\Exceptions\SilencedException;
12 13
 use Statsd;
13 14
 
14
-class RegenerateBeatmapsetCover extends Job implements SelfHandling, ShouldQueue
15
+class RegenerateBeatmapsetCover implements SelfHandling, ShouldQueue
15 16
 {
16
-    use InteractsWithQueue, SerializesModels;
17
+    use InteractsWithQueue, Queueable, SerializesModels;
17 18
     protected $beatmapset;
18 19
 
19 20
     /**

+ 2
- 2
app/Libraries/AuthorizationResult.php View File

@@ -20,7 +20,7 @@
20 20
 namespace App\Libraries;
21 21
 
22 22
 use App\Exceptions\AuthorizationException;
23
-use App\Exceptions\RequireLoginException;
23
+use Illuminate\Auth\AuthenticationException;
24 24
 
25 25
 class AuthorizationResult
26 26
 {
@@ -61,7 +61,7 @@ class AuthorizationResult
61 61
         }
62 62
 
63 63
         if ($this->rawMessage() === 'require_login') {
64
-            $class = RequireLoginException::class;
64
+            $class = AuthenticationException::class;
65 65
         } else {
66 66
             $class = AuthorizationException::class;
67 67
         }

+ 3
- 4
app/Models/Beatmapset.php View File

@@ -826,11 +826,10 @@ class Beatmapset extends Model
826 826
         $userRatings = $this->userRatings()
827 827
             ->select('rating', \DB::raw('count(*) as count'))
828 828
             ->groupBy('rating')
829
-            ->lists('count', 'rating')
830
-            ->all();
829
+            ->get();
831 830
 
832
-        foreach ($userRatings as $rating => $count) {
833
-            $ratings[$rating] = $count;
831
+        foreach ($userRatings as $rating) {
832
+            $ratings[$rating->rating] = $rating->count;
834 833
         }
835 834
 
836 835
         return $ratings;

+ 1
- 1
app/Models/Store/Product.php View File

@@ -65,7 +65,7 @@ class Product extends Model
65 65
         if ($inStock === false && $includeVariations === true) {
66 66
             $inStock = ($this->masterProduct ?? $this)
67 67
                 ->variations
68
-                ->contains(function ($_, $variation) use ($quantity) {
68
+                ->contains(function ($variation) use ($quantity) {
69 69
                     return $variation->inStock($quantity);
70 70
                 });
71 71
         }

+ 1
- 14
app/Models/User.php View File

@@ -136,7 +136,7 @@ class User extends Model implements AuthenticatableContract, Messageable
136 136
             return ['Please use either underscores or spaces, not both!'];
137 137
         }
138 138
 
139
-        foreach (DB::table('phpbb_disallow')->lists('disallow_username') as $check) {
139
+        foreach (model_pluck(DB::table('phpbb_disallow'), 'disallow_username') as $check) {
140 140
             if (preg_match('#^'.str_replace('%', '.*?', preg_quote($check, '#')).'$#i', $username)) {
141 141
                 return ['This username choice is not allowed.'];
142 142
             }
@@ -173,19 +173,6 @@ class User extends Model implements AuthenticatableContract, Messageable
173 173
         return self::validateUsername($username);
174 174
     }
175 175
 
176
-    // verifies that a user is valid (makes code neater)
177
-
178
-    public static function validate($user)
179
-    {
180
-        try {
181
-            $user = static::findOrFail($user);
182
-
183
-            return true;
184
-        } catch (ModelNotFoundException $e) {
185
-            return false;
186
-        }
187
-    }
188
-
189 176
     // verify that an api key is correct
190 177
 
191 178
     public function verify($key)

+ 29
- 0
app/Providers/AuthServiceProvider.php View File

@@ -0,0 +1,29 @@
1
+<?php
2
+
3
+namespace App\Providers;
4
+
5
+use Illuminate\Foundation\Support\Providers\AuthServiceProvider as ServiceProvider;
6
+
7
+class AuthServiceProvider extends ServiceProvider
8
+{
9
+    /**
10
+     * The policy mappings for the application.
11
+     *
12
+     * @var array
13
+     */
14
+    protected $policies = [
15
+        'App\Model' => 'App\Policies\ModelPolicy',
16
+    ];
17
+
18
+    /**
19
+     * Register any authentication / authorization services.
20
+     *
21
+     * @return void
22
+     */
23
+    public function boot()
24
+    {
25
+        $this->registerPolicies();
26
+
27
+        //
28
+    }
29
+}

+ 26
- 0
app/Providers/BroadcastServiceProvider.php View File

@@ -0,0 +1,26 @@
1
+<?php
2
+
3
+namespace App\Providers;
4
+
5
+use Illuminate\Support\ServiceProvider;
6
+use Illuminate\Support\Facades\Broadcast;
7
+
8
+class BroadcastServiceProvider extends ServiceProvider
9
+{
10
+    /**
11
+     * Bootstrap any application services.
12
+     *
13
+     * @return void
14
+     */
15
+    public function boot()
16
+    {
17
+        Broadcast::routes();
18
+
19
+        /*
20
+         * Authenticate the user's personal channel...
21
+         */
22
+        Broadcast::channel('App.User.*', function ($user, $userId) {
23
+            return (int) $user->id === (int) $userId;
24
+        });
25
+    }
26
+}

+ 4
- 5
app/Providers/EventServiceProvider.php View File

@@ -20,7 +20,6 @@
20 20
 namespace App\Providers;
21 21
 
22 22
 use App\Listeners;
23
-use Illuminate\Contracts\Events\Dispatcher as DispatcherContract;
24 23
 use Illuminate\Foundation\Support\Providers\EventServiceProvider as ServiceProvider;
25 24
 
26 25
 class EventServiceProvider extends ServiceProvider
@@ -34,9 +33,9 @@ class EventServiceProvider extends ServiceProvider
34 33
     ];
35 34
 
36 35
     protected $subscribe = [
37
-        "App\Listeners\Forum\MarkTopicRead",
38
-        "App\Listeners\Forum\NotifySlack",
36
+        Listeners\Forum\MarkTopicRead::class,
39 37
         Listeners\Forum\NotifyEmail::class,
38
+        Listeners\Forum\NotifySlack::class,
40 39
     ];
41 40
 
42 41
     /**
@@ -46,9 +45,9 @@ class EventServiceProvider extends ServiceProvider
46 45
      *
47 46
      * @return void
48 47
      */
49
-    public function boot(DispatcherContract $events)
48
+    public function boot()
50 49
     {
51
-        parent::boot($events);
50
+        parent::boot();
52 51
 
53 52
         //
54 53
     }

+ 7
- 7
app/Providers/RouteServiceProvider.php View File

@@ -20,7 +20,7 @@
20 20
 namespace App\Providers;
21 21
 
22 22
 use Illuminate\Foundation\Support\Providers\RouteServiceProvider as ServiceProvider;
23
-use Illuminate\Routing\Router;
23
+use Illuminate\Support\Facades\Route;
24 24
 
25 25
 class RouteServiceProvider extends ServiceProvider
26 26
 {
@@ -40,11 +40,11 @@ class RouteServiceProvider extends ServiceProvider
40 40
      *
41 41
      * @return void
42 42
      */
43
-    public function boot(Router $router)
43
+    public function boot()
44 44
     {
45
-        parent::boot($router);
46
-
47 45
         //
46
+
47
+        parent::boot();
48 48
     }
49 49
 
50 50
     /**
@@ -54,10 +54,10 @@ class RouteServiceProvider extends ServiceProvider
54 54
      *
55 55
      * @return void
56 56
      */
57
-    public function map(Router $router)
57
+    public function map()
58 58
     {
59
-        $router->group(['namespace' => $this->namespace], function ($router) {
60
-            require app_path('Http/routes.php');
59
+        Route::group(['namespace' => $this->namespace], function ($router) {
60
+            require base_path('routes/web.php');
61 61
         });
62 62
     }
63 63
 }

+ 3
- 3
artisan View File

@@ -28,11 +28,11 @@ $app = require_once __DIR__.'/bootstrap/app.php';
28 28
 |
29 29
 */
30 30
 
31
-$kernel = $app->make('Illuminate\Contracts\Console\Kernel');
31
+$kernel = $app->make(Illuminate\Contracts\Console\Kernel::class);
32 32
 
33 33
 $status = $kernel->handle(
34
-	$input = new Symfony\Component\Console\Input\ArgvInput,
35
-	new Symfony\Component\Console\Output\ConsoleOutput
34
+    $input = new Symfony\Component\Console\Input\ArgvInput,
35
+    new Symfony\Component\Console\Output\ConsoleOutput
36 36
 );
37 37
 
38 38
 /*

+ 2
- 2
composer.json View File

@@ -9,8 +9,8 @@
9 9
     "issues": "https://github.com/ppy/osu-web/issues"
10 10
   },
11 11
   "require": {
12
-    "laravel/framework": "5.2.*",
13
-    "laravelcollective/html": "5.2.*",
12
+    "laravel/framework": "5.3.*",
13
+    "laravelcollective/html": "5.3.*",
14 14
     "predis/predis": "~1.0",
15 15
     "doctrine/dbal": "*",
16 16
     "graham-campbell/markdown": "*",

+ 193
- 114
composer.lock View File

@@ -4,21 +4,21 @@
4 4
         "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#composer-lock-the-lock-file",
5 5
         "This file is @generated automatically"
6 6
     ],
7
-    "hash": "ea0743dc82d3babc01fee2356fb9a15b",
8
-    "content-hash": "800712bbeaa1e2dfa7053d8ce4161600",
7
+    "hash": "78a15de30d076bddc974ce6ce7e172a1",
8
+    "content-hash": "175f20f83ebac4cf75c4191f2cd66485",
9 9
     "packages": [
10 10
         {
11 11
             "name": "aws/aws-sdk-php",
12
-            "version": "3.19.16",
12
+            "version": "3.19.17",
13 13
             "source": {
14 14
                 "type": "git",
15 15
                 "url": "https://github.com/aws/aws-sdk-php.git",
16
-                "reference": "5161b8956e0c0f8e4260edbfe36c1a78392e4934"
16
+                "reference": "089ce29c428ce330b8e9eba8bbe8f2bdbb8b8af5"
17 17
             },
18 18
             "dist": {
19 19
                 "type": "zip",
20
-                "url": "https://api.github.com/repos/aws/aws-sdk-php/zipball/5161b8956e0c0f8e4260edbfe36c1a78392e4934",
21
-                "reference": "5161b8956e0c0f8e4260edbfe36c1a78392e4934",
20
+                "url": "https://api.github.com/repos/aws/aws-sdk-php/zipball/089ce29c428ce330b8e9eba8bbe8f2bdbb8b8af5",
21
+                "reference": "089ce29c428ce330b8e9eba8bbe8f2bdbb8b8af5",
22 22
                 "shasum": ""
23 23
             },
24 24
             "require": {
@@ -85,7 +85,7 @@
85 85
                 "s3",
86 86
                 "sdk"
87 87
             ],
88
-            "time": "2016-10-17 20:08:45"
88
+            "time": "2016-10-18 20:29:12"
89 89
         },
90 90
         {
91 91
             "name": "classpreloader/classpreloader",
@@ -1260,16 +1260,16 @@
1260 1260
         },
1261 1261
         {
1262 1262
             "name": "laravel/framework",
1263
-            "version": "v5.2.45",
1263
+            "version": "v5.3.19",
1264 1264
             "source": {
1265 1265
                 "type": "git",
1266 1266
                 "url": "https://github.com/laravel/framework.git",
1267
-                "reference": "2a79f920d5584ec6df7cf996d922a742d11095d1"
1267
+                "reference": "f1a5bb417b3e0d1949fe84617eacd1a14d75d7f1"
1268 1268
             },
1269 1269
             "dist": {
1270 1270
                 "type": "zip",
1271
-                "url": "https://api.github.com/repos/laravel/framework/zipball/2a79f920d5584ec6df7cf996d922a742d11095d1",
1272
-                "reference": "2a79f920d5584ec6df7cf996d922a742d11095d1",
1271
+                "url": "https://api.github.com/repos/laravel/framework/zipball/f1a5bb417b3e0d1949fe84617eacd1a14d75d7f1",
1272
+                "reference": "f1a5bb417b3e0d1949fe84617eacd1a14d75d7f1",
1273 1273
                 "shasum": ""
1274 1274
             },
1275 1275
             "require": {
@@ -1282,20 +1282,20 @@
1282 1282
                 "monolog/monolog": "~1.11",
1283 1283
                 "mtdowling/cron-expression": "~1.0",
1284 1284
                 "nesbot/carbon": "~1.20",
1285
-                "paragonie/random_compat": "~1.4",
1286
-                "php": ">=5.5.9",
1285
+                "paragonie/random_compat": "~1.4|~2.0",
1286
+                "php": ">=5.6.4",
1287 1287
                 "psy/psysh": "0.7.*",
1288
+                "ramsey/uuid": "~3.0",
1288 1289
                 "swiftmailer/swiftmailer": "~5.1",
1289
-                "symfony/console": "2.8.*|3.0.*",
1290
-                "symfony/debug": "2.8.*|3.0.*",
1291
-                "symfony/finder": "2.8.*|3.0.*",
1292
-                "symfony/http-foundation": "2.8.*|3.0.*",
1293
-                "symfony/http-kernel": "2.8.*|3.0.*",
1294
-                "symfony/polyfill-php56": "~1.0",
1295
-                "symfony/process": "2.8.*|3.0.*",
1296
-                "symfony/routing": "2.8.*|3.0.*",
1297
-                "symfony/translation": "2.8.*|3.0.*",
1298
-                "symfony/var-dumper": "2.8.*|3.0.*",
1290
+                "symfony/console": "3.1.*",
1291
+                "symfony/debug": "3.1.*",
1292
+                "symfony/finder": "3.1.*",
1293
+                "symfony/http-foundation": "3.1.*",
1294
+                "symfony/http-kernel": "3.1.*",
1295
+                "symfony/process": "3.1.*",
1296
+                "symfony/routing": "3.1.*",
1297
+                "symfony/translation": "3.1.*",
1298
+                "symfony/var-dumper": "3.1.*",
1299 1299
                 "vlucas/phpdotenv": "~2.2"
1300 1300
             },
1301 1301
             "replace": {
@@ -1317,6 +1317,7 @@
1317 1317
                 "illuminate/http": "self.version",
1318 1318
                 "illuminate/log": "self.version",
1319 1319
                 "illuminate/mail": "self.version",
1320
+                "illuminate/notifications": "self.version",
1320 1321
                 "illuminate/pagination": "self.version",
1321 1322
                 "illuminate/pipeline": "self.version",
1322 1323
                 "illuminate/queue": "self.version",
@@ -1333,10 +1334,10 @@
1333 1334
                 "aws/aws-sdk-php": "~3.0",
1334 1335
                 "mockery/mockery": "~0.9.4",
1335 1336
                 "pda/pheanstalk": "~3.0",
1336
-                "phpunit/phpunit": "~4.1",
1337
+                "phpunit/phpunit": "~5.4",
1337 1338
                 "predis/predis": "~1.0",
1338
-                "symfony/css-selector": "2.8.*|3.0.*",
1339
-                "symfony/dom-crawler": "2.8.*|3.0.*"
1339
+                "symfony/css-selector": "3.1.*",
1340
+                "symfony/dom-crawler": "3.1.*"
1340 1341
             },
1341 1342
             "suggest": {
1342 1343
                 "aws/aws-sdk-php": "Required to use the SQS queue driver and SES mail driver (~3.0).",
@@ -1348,20 +1349,17 @@
1348 1349
                 "pda/pheanstalk": "Required to use the beanstalk queue driver (~3.0).",
1349 1350
                 "predis/predis": "Required to use the redis cache and queue drivers (~1.0).",
1350 1351
                 "pusher/pusher-php-server": "Required to use the Pusher broadcast driver (~2.0).",
1351
-                "symfony/css-selector": "Required to use some of the crawler integration testing tools (2.8.*|3.0.*).",
1352
-                "symfony/dom-crawler": "Required to use most of the crawler integration testing tools (2.8.*|3.0.*).",
1352
+                "symfony/css-selector": "Required to use some of the crawler integration testing tools (3.1.*).",
1353
+                "symfony/dom-crawler": "Required to use most of the crawler integration testing tools (3.1.*).",
1353 1354
                 "symfony/psr-http-message-bridge": "Required to use psr7 bridging features (0.2.*)."
1354 1355
             },
1355 1356
             "type": "library",
1356 1357
             "extra": {
1357 1358
                 "branch-alias": {
1358
-                    "dev-master": "5.2-dev"
1359
+                    "dev-master": "5.3-dev"
1359 1360
                 }
1360 1361
             },
1361 1362
             "autoload": {
1362
-                "classmap": [
1363
-                    "src/Illuminate/Queue/IlluminateQueueClosure.php"
1364
-                ],
1365 1363
                 "files": [
1366 1364
                     "src/Illuminate/Foundation/helpers.php",
1367 1365
                     "src/Illuminate/Support/helpers.php"
@@ -1377,43 +1375,43 @@
1377 1375
             "authors": [
1378 1376
                 {
1379 1377
                     "name": "Taylor Otwell",
1380
-                    "email": "taylorotwell@gmail.com"
1378
+                    "email": "taylor@laravel.com"
1381 1379
                 }
1382 1380
             ],
1383 1381
             "description": "The Laravel Framework.",
1384
-            "homepage": "http://laravel.com",
1382
+            "homepage": "https://laravel.com",
1385 1383
             "keywords": [
1386 1384
                 "framework",
1387 1385
                 "laravel"
1388 1386
             ],
1389
-            "time": "2016-08-26 11:44:52"
1387
+            "time": "2016-10-17 19:35:14"
1390 1388
         },
1391 1389
         {
1392 1390
             "name": "laravelcollective/html",
1393
-            "version": "v5.2.4",
1391
+            "version": "v5.3.0",
1394 1392
             "source": {
1395 1393
                 "type": "git",
1396 1394
                 "url": "https://github.com/LaravelCollective/html.git",
1397
-                "reference": "3a312d39ffe37da0f57b602618b61fd07c1fcec5"
1395
+                "reference": "961ce141c16c6b085128f209496c26efd3e681ca"
1398 1396
             },
1399 1397
             "dist": {
1400 1398
                 "type": "zip",
1401
-                "url": "https://api.github.com/repos/LaravelCollective/html/zipball/3a312d39ffe37da0f57b602618b61fd07c1fcec5",
1402
-                "reference": "3a312d39ffe37da0f57b602618b61fd07c1fcec5",
1399
+                "url": "https://api.github.com/repos/LaravelCollective/html/zipball/961ce141c16c6b085128f209496c26efd3e681ca",
1400
+                "reference": "961ce141c16c6b085128f209496c26efd3e681ca",
1403 1401
                 "shasum": ""
1404 1402
             },
1405 1403
             "require": {
1406
-                "illuminate/http": "5.2.*",
1407
-                "illuminate/routing": "5.2.*",
1408
-                "illuminate/session": "5.2.*",
1409
-                "illuminate/support": "5.2.*",
1410
-                "illuminate/view": "5.2.*",
1411
-                "php": ">=5.5.9"
1404
+                "illuminate/http": "5.3.*",
1405
+                "illuminate/routing": "5.3.*",
1406
+                "illuminate/session": "5.3.*",
1407
+                "illuminate/support": "5.3.*",
1408
+                "illuminate/view": "5.3.*",
1409
+                "php": ">=5.6.4"
1412 1410
             },
1413 1411
             "require-dev": {
1414
-                "illuminate/database": "5.2.*",
1415
-                "mockery/mockery": "~0.9",
1416
-                "phpunit/phpunit": "~4.0"
1412
+                "illuminate/database": "5.3.*",
1413
+                "mockery/mockery": "~0.9.4",
1414
+                "phpunit/phpunit": "~5.4"
1417 1415
             },
1418 1416
             "type": "library",
1419 1417
             "autoload": {
@@ -1440,7 +1438,7 @@
1440 1438
             ],
1441 1439
             "description": "HTML and Form Builders for the Laravel Framework",
1442 1440
             "homepage": "http://laravelcollective.com",
1443
-            "time": "2016-01-27 22:29:54"
1441
+            "time": "2016-08-27 23:52:43"
1444 1442
         },
1445 1443
         {
1446 1444
             "name": "league/commonmark",
@@ -1563,20 +1561,20 @@
1563 1561
         },
1564 1562
         {
1565 1563
             "name": "league/flysystem",
1566
-            "version": "1.0.29",
1564
+            "version": "1.0.32",
1567 1565
             "source": {
1568 1566
                 "type": "git",
1569 1567
                 "url": "https://github.com/thephpleague/flysystem.git",
1570
-                "reference": "b732cc946c48cf102ddffd41ffcd54901a28ccdb"
1568
+                "reference": "1b5c4a0031697f46e779a9d1b309c2e1b24daeab"
1571 1569
             },
1572 1570
             "dist": {
1573 1571
                 "type": "zip",
1574
-                "url": "https://api.github.com/repos/thephpleague/flysystem/zipball/b732cc946c48cf102ddffd41ffcd54901a28ccdb",
1575
-                "reference": "b732cc946c48cf102ddffd41ffcd54901a28ccdb",
1572
+                "url": "https://api.github.com/repos/thephpleague/flysystem/zipball/1b5c4a0031697f46e779a9d1b309c2e1b24daeab",
1573
+                "reference": "1b5c4a0031697f46e779a9d1b309c2e1b24daeab",
1576 1574
                 "shasum": ""
1577 1575
             },
1578 1576
             "require": {
1579
-                "php": ">=5.6.0"
1577
+                "php": ">=5.5.9"
1580 1578
             },
1581 1579
             "conflict": {
1582 1580
                 "league/flysystem-sftp": "<1.0.6"
@@ -1642,7 +1640,7 @@
1642 1640
                 "sftp",
1643 1641
                 "storage"
1644 1642
             ],
1645
-            "time": "2016-10-17 23:14:19"
1643
+            "time": "2016-10-19 20:38:46"
1646 1644
         },
1647 1645
         {
1648 1646
             "name": "league/flysystem-aws-s3-v3",
@@ -2385,16 +2383,16 @@
2385 2383
         },
2386 2384
         {
2387 2385
             "name": "paragonie/random_compat",
2388
-            "version": "v1.4.1",
2386
+            "version": "v2.0.3",
2389 2387
             "source": {
2390 2388
                 "type": "git",
2391 2389
                 "url": "https://github.com/paragonie/random_compat.git",
2392
-                "reference": "c7e26a21ba357863de030f0b9e701c7d04593774"
2390
+                "reference": "c0125896dbb151380ab47e96c621741e79623beb"
2393 2391
             },
2394 2392
             "dist": {
2395 2393
                 "type": "zip",
2396
-                "url": "https://api.github.com/repos/paragonie/random_compat/zipball/c7e26a21ba357863de030f0b9e701c7d04593774",
2397
-                "reference": "c7e26a21ba357863de030f0b9e701c7d04593774",
2394
+                "url": "https://api.github.com/repos/paragonie/random_compat/zipball/c0125896dbb151380ab47e96c621741e79623beb",
2395
+                "reference": "c0125896dbb151380ab47e96c621741e79623beb",
2398 2396
                 "shasum": ""
2399 2397
             },
2400 2398
             "require": {
@@ -2429,7 +2427,7 @@
2429 2427
                 "pseudorandom",
2430 2428
                 "random"
2431 2429
             ],
2432
-            "time": "2016-03-18 20:34:03"
2430
+            "time": "2016-10-17 15:23:22"
2433 2431
         },
2434 2432
         {
2435 2433
             "name": "pimple/pimple",
@@ -2697,6 +2695,86 @@
2697 2695
             "time": "2016-03-09 05:03:14"
2698 2696
         },
2699 2697
         {
2698
+            "name": "ramsey/uuid",
2699
+            "version": "3.5.1",
2700
+            "source": {
2701
+                "type": "git",
2702
+                "url": "https://github.com/ramsey/uuid.git",
2703
+                "reference": "a07797b986671b0dc823885a81d5e3516b931599"
2704
+            },
2705
+            "dist": {
2706
+                "type": "zip",
2707
+                "url": "https://api.github.com/repos/ramsey/uuid/zipball/a07797b986671b0dc823885a81d5e3516b931599",
2708
+                "reference": "a07797b986671b0dc823885a81d5e3516b931599",
2709
+                "shasum": ""
2710
+            },
2711
+            "require": {
2712
+                "paragonie/random_compat": "^1.0|^2.0",
2713
+                "php": ">=5.4"
2714
+            },
2715
+            "replace": {
2716
+                "rhumsaa/uuid": "self.version"
2717
+            },
2718
+            "require-dev": {
2719
+                "apigen/apigen": "^4.1",
2720
+                "codeception/aspect-mock": "1.0.0",
2721
+                "goaop/framework": "1.0.0-alpha.2",
2722
+                "ircmaxell/random-lib": "^1.1",
2723
+                "jakub-onderka/php-parallel-lint": "^0.9.0",
2724
+                "mockery/mockery": "^0.9.4",
2725
+                "moontoast/math": "^1.1",
2726
+                "phpunit/phpunit": "^4.7|>=5.0 <5.4",
2727
+                "satooshi/php-coveralls": "^0.6.1",
2728
+                "squizlabs/php_codesniffer": "^2.3"
2729
+            },
2730
+            "suggest": {
2731
+                "ext-libsodium": "Provides the PECL libsodium extension for use with the SodiumRandomGenerator",
2732
+                "ext-uuid": "Provides the PECL UUID extension for use with the PeclUuidTimeGenerator and PeclUuidRandomGenerator",
2733
+                "ircmaxell/random-lib": "Provides RandomLib for use with the RandomLibAdapter",
2734
+                "moontoast/math": "Provides support for converting UUID to 128-bit integer (in string form).",
2735
+                "ramsey/uuid-console": "A console application for generating UUIDs with ramsey/uuid",
2736
+                "ramsey/uuid-doctrine": "Allows the use of Ramsey\\Uuid\\Uuid as Doctrine field type."
2737
+            },
2738
+            "type": "library",
2739
+            "extra": {
2740
+                "branch-alias": {
2741
+                    "dev-master": "3.x-dev"
2742
+                }
2743
+            },
2744
+            "autoload": {
2745
+                "psr-4": {
2746
+                    "Ramsey\\Uuid\\": "src/"
2747
+                }
2748
+            },
2749
+            "notification-url": "https://packagist.org/downloads/",
2750
+            "license": [
2751
+                "MIT"
2752
+            ],
2753
+            "authors": [
2754
+                {
2755
+                    "name": "Marijn Huizendveld",
2756
+                    "email": "marijn.huizendveld@gmail.com"
2757
+                },
2758
+                {
2759
+                    "name": "Thibaud Fabre",
2760
+                    "email": "thibaud@aztech.io"
2761
+                },
2762
+                {
2763
+                    "name": "Ben Ramsey",
2764
+                    "email": "ben@benramsey.com",
2765
+                    "homepage": "https://benramsey.com"
2766
+                }
2767
+            ],
2768
+            "description": "Formerly rhumsaa/uuid. A PHP 5.4+ library for generating RFC 4122 version 1, 3, 4, and 5 universally unique identifiers (UUID).",
2769
+            "homepage": "https://github.com/ramsey/uuid",
2770
+            "keywords": [
2771
+                "guid",
2772
+                "identifier",
2773
+                "uuid"
2774
+            ],
2775
+            "time": "2016-10-02 15:51:17"
2776
+        },
2777
+        {
2700 2778
             "name": "sentry/sentry",
2701 2779
             "version": "1.5.0",
2702 2780
             "source": {
@@ -2901,20 +2979,21 @@
2901 2979
         },
2902 2980
         {
2903 2981
             "name": "symfony/console",
2904
-            "version": "v3.0.9",
2982
+            "version": "v3.1.5",
2905 2983
             "source": {
2906 2984
                 "type": "git",
2907 2985
                 "url": "https://github.com/symfony/console.git",
2908
-                "reference": "926061e74229e935d3c5b4e9ba87237316c6693f"
2986
+                "reference": "6cb0872fb57b38b3b09ff213c21ed693956b9eb0"
2909 2987
             },
2910 2988
             "dist": {
2911 2989
                 "type": "zip",
2912
-                "url": "https://api.github.com/repos/symfony/console/zipball/926061e74229e935d3c5b4e9ba87237316c6693f",
2913
-                "reference": "926061e74229e935d3c5b4e9ba87237316c6693f",
2990
+                "url": "https://api.github.com/repos/symfony/console/zipball/6cb0872fb57b38b3b09ff213c21ed693956b9eb0",
2991
+                "reference": "6cb0872fb57b38b3b09ff213c21ed693956b9eb0",
2914 2992
                 "shasum": ""
2915 2993
             },
2916 2994
             "require": {
2917 2995
                 "php": ">=5.5.9",
2996
+                "symfony/debug": "~2.8|~3.0",
2918 2997
                 "symfony/polyfill-mbstring": "~1.0"
2919 2998
             },
2920 2999
             "require-dev": {
@@ -2930,7 +3009,7 @@
2930 3009
             "type": "library",
2931 3010
             "extra": {
2932 3011
                 "branch-alias": {
2933
-                    "dev-master": "3.0-dev"
3012
+                    "dev-master": "3.1-dev"
2934 3013
                 }
2935 3014
             },
2936 3015
             "autoload": {
@@ -2957,20 +3036,20 @@
2957 3036
             ],
2958 3037
             "description": "Symfony Console Component",
2959 3038
             "homepage": "https://symfony.com",
2960
-            "time": "2016-07-30 07:22:48"
3039
+            "time": "2016-09-28 00:11:12"
2961 3040
         },
2962 3041
         {
2963 3042
             "name": "symfony/debug",
2964
-            "version": "v3.0.9",
3043
+            "version": "v3.1.5",
2965 3044
             "source": {
2966 3045
                 "type": "git",
2967 3046
                 "url": "https://github.com/symfony/debug.git",
2968
-                "reference": "697c527acd9ea1b2d3efac34d9806bf255278b0a"
3047
+                "reference": "e2b3f74a67fc928adc3c1b9027f73e1bc01190a8"
2969 3048
             },
2970 3049
             "dist": {
2971 3050
                 "type": "zip",
2972
-                "url": "https://api.github.com/repos/symfony/debug/zipball/697c527acd9ea1b2d3efac34d9806bf255278b0a",
2973
-                "reference": "697c527acd9ea1b2d3efac34d9806bf255278b0a",
3051
+                "url": "https://api.github.com/repos/symfony/debug/zipball/e2b3f74a67fc928adc3c1b9027f73e1bc01190a8",
3052
+                "reference": "e2b3f74a67fc928adc3c1b9027f73e1bc01190a8",
2974 3053
                 "shasum": ""
2975 3054
             },
2976 3055
             "require": {
@@ -2987,7 +3066,7 @@
2987 3066
             "type": "library",
2988 3067
             "extra": {
2989 3068
                 "branch-alias": {
2990
-                    "dev-master": "3.0-dev"
3069
+                    "dev-master": "3.1-dev"
2991 3070
                 }
2992 3071
             },
2993 3072
             "autoload": {
@@ -3014,7 +3093,7 @@
3014 3093
             ],
3015 3094
             "description": "Symfony Debug Component",
3016 3095
             "homepage": "https://symfony.com",
3017
-            "time": "2016-07-30 07:22:48"
3096
+            "time": "2016-09-06 11:02:40"
3018 3097
         },
3019 3098
         {
3020 3099
             "name": "symfony/event-dispatcher",
@@ -3078,16 +3157,16 @@
3078 3157
         },
3079 3158
         {
3080 3159
             "name": "symfony/finder",
3081
-            "version": "v3.0.9",
3160
+            "version": "v3.1.5",
3082 3161
             "source": {
3083 3162
                 "type": "git",
3084 3163
                 "url": "https://github.com/symfony/finder.git",
3085
-                "reference": "3eb4e64c6145ef8b92adefb618a74ebdde9e3fe9"
3164
+                "reference": "205b5ffbb518a98ba2ae60a52656c4a31ab00c6f"
3086 3165
             },
3087 3166
             "dist": {
3088 3167
                 "type": "zip",
3089
-                "url": "https://api.github.com/repos/symfony/finder/zipball/3eb4e64c6145ef8b92adefb618a74ebdde9e3fe9",
3090
-                "reference": "3eb4e64c6145ef8b92adefb618a74ebdde9e3fe9",
3168
+                "url": "https://api.github.com/repos/symfony/finder/zipball/205b5ffbb518a98ba2ae60a52656c4a31ab00c6f",
3169
+                "reference": "205b5ffbb518a98ba2ae60a52656c4a31ab00c6f",
3091 3170
                 "shasum": ""
3092 3171
             },
3093 3172
             "require": {
@@ -3096,7 +3175,7 @@
3096 3175
             "type": "library",
3097 3176
             "extra": {
3098 3177
                 "branch-alias": {
3099
-                    "dev-master": "3.0-dev"
3178
+                    "dev-master": "3.1-dev"
3100 3179
                 }
3101 3180
             },
3102 3181
             "autoload": {
@@ -3123,20 +3202,20 @@
3123 3202
             ],
3124 3203
             "description": "Symfony Finder Component",
3125 3204
             "homepage": "https://symfony.com",
3126
-            "time": "2016-06-29 05:40:00"
3205
+            "time": "2016-09-28 00:11:12"
3127 3206
         },
3128 3207
         {
3129 3208
             "name": "symfony/http-foundation",
3130
-            "version": "v3.0.9",
3209
+            "version": "v3.1.5",
3131 3210
             "source": {
3132 3211
                 "type": "git",
3133 3212
                 "url": "https://github.com/symfony/http-foundation.git",
3134
-                "reference": "49ba00f8ede742169cb6b70abe33243f4d673f82"
3213
+                "reference": "5114f1becca9f29e3af94374f1689c83c1aa3d97"
3135 3214
             },
3136 3215
             "dist": {
3137 3216
                 "type": "zip",
3138
-                "url": "https://api.github.com/repos/symfony/http-foundation/zipball/49ba00f8ede742169cb6b70abe33243f4d673f82",
3139
-                "reference": "49ba00f8ede742169cb6b70abe33243f4d673f82",
3217
+                "url": "https://api.github.com/repos/symfony/http-foundation/zipball/5114f1becca9f29e3af94374f1689c83c1aa3d97",
3218
+                "reference": "5114f1becca9f29e3af94374f1689c83c1aa3d97",
3140 3219
                 "shasum": ""
3141 3220
             },
3142 3221
             "require": {
@@ -3149,7 +3228,7 @@
3149 3228
             "type": "library",
3150 3229
             "extra": {
3151 3230
                 "branch-alias": {
3152
-                    "dev-master": "3.0-dev"
3231
+                    "dev-master": "3.1-dev"
3153 3232
                 }
3154 3233
             },
3155 3234
             "autoload": {
@@ -3176,20 +3255,20 @@
3176 3255
             ],
3177 3256
             "description": "Symfony HttpFoundation Component",
3178 3257
             "homepage": "https://symfony.com",
3179
-            "time": "2016-07-17 13:54:30"
3258
+            "time": "2016-09-21 20:55:10"
3180 3259
         },
3181 3260
         {
3182 3261
             "name": "symfony/http-kernel",
3183
-            "version": "v3.0.9",
3262
+            "version": "v3.1.5",
3184 3263
             "source": {
3185 3264
                 "type": "git",
3186 3265
                 "url": "https://github.com/symfony/http-kernel.git",
3187
-                "reference": "d97ba4425e36e79c794e7d14ff36f00f081b37b3"
3266
+                "reference": "dc339d6eebadfa6e39c52868b4d4a715eff13c69"
3188 3267
             },
3189 3268
             "dist": {
3190 3269
                 "type": "zip",
3191
-                "url": "https://api.github.com/repos/symfony/http-kernel/zipball/d97ba4425e36e79c794e7d14ff36f00f081b37b3",
3192
-                "reference": "d97ba4425e36e79c794e7d14ff36f00f081b37b3",
3270
+                "url": "https://api.github.com/repos/symfony/http-kernel/zipball/dc339d6eebadfa6e39c52868b4d4a715eff13c69",
3271
+                "reference": "dc339d6eebadfa6e39c52868b4d4a715eff13c69",
3193 3272
                 "shasum": ""
3194 3273
             },
3195 3274
             "require": {
@@ -3231,7 +3310,7 @@
3231 3310
             "type": "library",
3232 3311
             "extra": {
3233 3312
                 "branch-alias": {
3234
-                    "dev-master": "3.0-dev"
3313
+                    "dev-master": "3.1-dev"
3235 3314
                 }
3236 3315
             },
3237 3316
             "autoload": {
@@ -3258,7 +3337,7 @@
3258 3337
             ],
3259 3338
             "description": "Symfony HttpKernel Component",
3260 3339
             "homepage": "https://symfony.com",
3261
-            "time": "2016-07-30 09:10:37"
3340
+            "time": "2016-10-03 19:01:06"
3262 3341
         },
3263 3342
         {
3264 3343
             "name": "symfony/polyfill-mbstring",
@@ -3429,16 +3508,16 @@
3429 3508
         },
3430 3509
         {
3431 3510
             "name": "symfony/process",
3432
-            "version": "v3.0.9",
3511
+            "version": "v3.1.5",
3433 3512
             "source": {
3434 3513
                 "type": "git",
3435 3514
                 "url": "https://github.com/symfony/process.git",
3436
-                "reference": "768debc5996f599c4372b322d9061dba2a4bf505"
3515
+                "reference": "66de154ae86b1a07001da9fbffd620206e4faf94"
3437 3516
             },
3438 3517
             "dist": {
3439 3518
                 "type": "zip",
3440
-                "url": "https://api.github.com/repos/symfony/process/zipball/768debc5996f599c4372b322d9061dba2a4bf505",
3441
-                "reference": "768debc5996f599c4372b322d9061dba2a4bf505",
3519
+                "url": "https://api.github.com/repos/symfony/process/zipball/66de154ae86b1a07001da9fbffd620206e4faf94",
3520
+                "reference": "66de154ae86b1a07001da9fbffd620206e4faf94",
3442 3521
                 "shasum": ""
3443 3522
             },
3444 3523
             "require": {
@@ -3447,7 +3526,7 @@
3447 3526
             "type": "library",
3448 3527
             "extra": {
3449 3528
                 "branch-alias": {
3450
-                    "dev-master": "3.0-dev"
3529
+                    "dev-master": "3.1-dev"
3451 3530
                 }
3452 3531
             },
3453 3532
             "autoload": {
@@ -3474,20 +3553,20 @@
3474 3553
             ],
3475 3554
             "description": "Symfony Process Component",
3476 3555
             "homepage": "https://symfony.com",
3477
-            "time": "2016-07-28 11:13:34"
3556
+            "time": "2016-09-29 14:13:09"
3478 3557
         },
3479 3558
         {
3480 3559
             "name": "symfony/routing",
3481
-            "version": "v3.0.9",
3560
+            "version": "v3.1.5",
3482 3561
             "source": {
3483 3562
                 "type": "git",
3484 3563
                 "url": "https://github.com/symfony/routing.git",
3485
-                "reference": "9038984bd9c05ab07280121e9e10f61a7231457b"
3564
+                "reference": "8edf62498a1a4c57ba317664a4b698339c10cdf6"
3486 3565
             },
3487 3566
             "dist": {
3488 3567
                 "type": "zip",
3489
-                "url": "https://api.github.com/repos/symfony/routing/zipball/9038984bd9c05ab07280121e9e10f61a7231457b",
3490
-                "reference": "9038984bd9c05ab07280121e9e10f61a7231457b",
3568
+                "url": "https://api.github.com/repos/symfony/routing/zipball/8edf62498a1a4c57ba317664a4b698339c10cdf6",
3569
+                "reference": "8edf62498a1a4c57ba317664a4b698339c10cdf6",
3491 3570
                 "shasum": ""
3492 3571
             },
3493 3572
             "require": {
@@ -3516,7 +3595,7 @@
3516 3595
             "type": "library",
3517 3596
             "extra": {
3518 3597
                 "branch-alias": {
3519
-                    "dev-master": "3.0-dev"
3598
+                    "dev-master": "3.1-dev"
3520 3599
                 }
3521 3600
             },
3522 3601
             "autoload": {
@@ -3549,20 +3628,20 @@
3549 3628
                 "uri",
3550 3629
                 "url"
3551 3630
             ],
3552
-            "time": "2016-06-29 05:40:00"
3631
+            "time": "2016-08-16 14:58:24"
3553 3632
         },
3554 3633
         {
3555 3634
             "name": "symfony/translation",
3556
-            "version": "v3.0.9",
3635
+            "version": "v3.1.5",
3557 3636
             "source": {
3558 3637
                 "type": "git",
3559 3638
                 "url": "https://github.com/symfony/translation.git",
3560
-                "reference": "eee6c664853fd0576f21ae25725cfffeafe83f26"
3639
+                "reference": "93013a18d272e59dab8e67f583155b78c68947eb"
3561 3640
             },
3562 3641
             "dist": {
3563 3642
                 "type": "zip",
3564
-                "url": "https://api.github.com/repos/symfony/translation/zipball/eee6c664853fd0576f21ae25725cfffeafe83f26",
3565
-                "reference": "eee6c664853fd0576f21ae25725cfffeafe83f26",
3643
+                "url": "https://api.github.com/repos/symfony/translation/zipball/93013a18d272e59dab8e67f583155b78c68947eb",
3644
+                "reference": "93013a18d272e59dab8e67f583155b78c68947eb",
3566 3645
                 "shasum": ""
3567 3646
             },
3568 3647
             "require": {
@@ -3586,7 +3665,7 @@
3586 3665
             "type": "library",
3587 3666
             "extra": {
3588 3667
                 "branch-alias": {
3589
-                    "dev-master": "3.0-dev"
3668
+                    "dev-master": "3.1-dev"
3590 3669
                 }
3591 3670
             },
3592 3671
             "autoload": {
@@ -3613,20 +3692,20 @@
3613 3692
             ],
3614 3693
             "description": "Symfony Translation Component",
3615 3694
             "homepage": "https://symfony.com",
3616
-            "time": "2016-07-30 07:22:48"
3695
+            "time": "2016-09-06 11:02:40"
3617 3696
         },
3618 3697
         {
3619 3698
             "name": "symfony/var-dumper",
3620
-            "version": "v3.0.9",
3699
+            "version": "v3.1.5",
3621 3700
             "source": {
3622 3701
                 "type": "git",
3623 3702
                 "url": "https://github.com/symfony/var-dumper.git",
3624
-                "reference": "1f7e071aafc6676fcb6e3f0497f87c2397247377"
3703
+                "reference": "70bfe927b86ba9999aeebd829715b0bb2cd39a10"
3625 3704
             },
3626 3705
             "dist": {
3627 3706
                 "type": "zip",
3628
-                "url": "https://api.github.com/repos/symfony/var-dumper/zipball/1f7e071aafc6676fcb6e3f0497f87c2397247377",
3629
-                "reference": "1f7e071aafc6676fcb6e3f0497f87c2397247377",
3707
+                "url": "https://api.github.com/repos/symfony/var-dumper/zipball/70bfe927b86ba9999aeebd829715b0bb2cd39a10",
3708
+                "reference": "70bfe927b86ba9999aeebd829715b0bb2cd39a10",
3630 3709
                 "shasum": ""
3631 3710
             },
3632 3711
             "require": {
@@ -3642,7 +3721,7 @@
3642 3721
             "type": "library",
3643 3722
             "extra": {
3644 3723
                 "branch-alias": {
3645
-                    "dev-master": "3.0-dev"
3724
+                    "dev-master": "3.1-dev"
3646 3725
                 }
3647 3726
             },
3648 3727
             "autoload": {
@@ -3676,7 +3755,7 @@
3676 3755
                 "debug",
3677 3756
                 "dump"
3678 3757
             ],
3679
-            "time": "2016-07-26 08:03:56"
3758
+            "time": "2016-09-29 14:13:09"
3680 3759
         },
3681 3760
         {
3682 3761
             "name": "tedivm/jshrink",

+ 102
- 70
config/app.php View File

@@ -2,7 +2,30 @@
2 2
 
3 3
 return [
4 4
 
5
+    /*
6
+    |--------------------------------------------------------------------------
7
+    | Application Name
8
+    |--------------------------------------------------------------------------
9
+    |
10
+    | This value is the name of your application. This value is used when the
11
+    | framework needs to place the application's name in a notification or
12
+    | any other location as required by the application or its packages.
13
+    */
14
+
15
+    'name' => 'osu!web',
16
+
17
+    /*
18
+    |--------------------------------------------------------------------------
19
+    | Application Environment
20
+    |--------------------------------------------------------------------------
21
+    |
22
+    | This value determines the "environment" your application is currently
23
+    | running in. This may determine how you prefer to configure various
24
+    | services your application utilizes. Set this in your ".env" file.
25
+    |
26
+    */
5 27
     'env' => env('APP_ENV', 'production'),
28
+
6 29
     /*
7 30
     |--------------------------------------------------------------------------
8 31
     | Application Debug Mode
@@ -87,9 +110,9 @@ return [
87 110
     |
88 111
     */
89 112
 
90
-    'key' => env('APP_KEY', 'jBCqqbqVgZGBZfErQXk2IzqGafe9Az9z'),
113
+    'key' => env('APP_KEY', 'base64:q7U5qyAkedR1F6UhN0SQlUxBpAMDyfHy3NNFkqmiMqA='),
91 114
 
92
-    'cipher' => MCRYPT_RIJNDAEL_128,
115
+    'cipher' => 'AES-256-CBC',
93 116
 
94 117
     /*
95 118
     |--------------------------------------------------------------------------
@@ -104,7 +127,9 @@ return [
104 127
     |
105 128
     */
106 129
 
107
-    'log' => 'daily',
130
+    'log' => env('APP_LOG', 'daily'),
131
+
132
+    'log_level' => env('APP_LOG_LEVEL', 'debug'),
108 133
 
109 134
     /*
110 135
     |--------------------------------------------------------------------------
@@ -122,44 +147,51 @@ return [
122 147
         /*
123 148
          * Laravel Framework Service Providers...
124 149
          */
125
-        'Illuminate\Auth\AuthServiceProvider',
126
-        'Illuminate\Bus\BusServiceProvider',
127
-        'Illuminate\Cache\CacheServiceProvider',
128
-        'Illuminate\Foundation\Providers\ConsoleSupportServiceProvider',
129
-        'Illuminate\Cookie\CookieServiceProvider',
130
-        'Illuminate\Database\DatabaseServiceProvider',
131
-        'Illuminate\Encryption\EncryptionServiceProvider',
132
-        'Illuminate\Filesystem\FilesystemServiceProvider',
133
-        'Illuminate\Foundation\Providers\FoundationServiceProvider',
134
-        // 'Illuminate\Hashing\HashServiceProvider',
135
-        'Illuminate\Mail\MailServiceProvider',
136
-        'Illuminate\Pagination\PaginationServiceProvider',
137
-        'Illuminate\Pipeline\PipelineServiceProvider',
138
-        'Illuminate\Queue\QueueServiceProvider',
139
-        'Illuminate\Redis\RedisServiceProvider',
140
-        'Illuminate\Auth\Passwords\PasswordResetServiceProvider',
141
-        'Illuminate\Session\SessionServiceProvider',
142
-        'Illuminate\Translation\TranslationServiceProvider',
143
-        'Illuminate\Validation\ValidationServiceProvider',
144
-        'Illuminate\View\ViewServiceProvider',
145
-
146
-        'Collective\Html\HtmlServiceProvider',
150
+        Illuminate\Auth\AuthServiceProvider::class,
151
+        Illuminate\Bus\BusServiceProvider::class,
152
+        Illuminate\Cache\CacheServiceProvider::class,
153
+        Illuminate\Foundation\Providers\ConsoleSupportServiceProvider::class,
154
+        Illuminate\Cookie\CookieServiceProvider::class,
155
+        Illuminate\Database\DatabaseServiceProvider::class,
156
+        Illuminate\Encryption\EncryptionServiceProvider::class,
157
+        Illuminate\Filesystem\FilesystemServiceProvider::class,
158
+        Illuminate\Foundation\Providers\FoundationServiceProvider::class,
159
+        // Illuminate\Hashing\HashServiceProvider::class,
160
+        Illuminate\Mail\MailServiceProvider::class,
161
+        Illuminate\Notifications\NotificationServiceProvider::class,
162
+        Illuminate\Pagination\PaginationServiceProvider::class,
163
+        Illuminate\Pipeline\PipelineServiceProvider::class,
164
+        Illuminate\Queue\QueueServiceProvider::class,
165
+        Illuminate\Redis\RedisServiceProvider::class,
166
+        Illuminate\Auth\Passwords\PasswordResetServiceProvider::class,
167
+        Illuminate\Session\SessionServiceProvider::class,
168
+        Illuminate\Translation\TranslationServiceProvider::class,
169
+        Illuminate\Validation\ValidationServiceProvider::class,
170
+        Illuminate\View\ViewServiceProvider::class,
171
+
172
+        Collective\Html\HtmlServiceProvider::class,
147 173
         /*
148
-         * Application Service Providers...
174
+         * Package Service Providers...
149 175
          */
150
-        'App\Providers\AppServiceProvider',
151
-        'App\Providers\EventServiceProvider',
152
-        'App\Providers\RouteServiceProvider',
153
-        'Clockwork\Support\Laravel\ClockworkServiceProvider',
154
-        'GrahamCampbell\Markdown\MarkdownServiceProvider',
155
-        'Maknz\Slack\SlackServiceProvider',
156
-        'Mariuzzo\LaravelJsLocalization\LaravelJsLocalizationServiceProvider',
157
-        'Shift31\LaravelElasticsearch\ElasticsearchServiceProvider',
158
-        'League\StatsD\Laravel5\Provider\StatsdServiceProvider',
159
-        'LucaDegasperi\OAuth2Server\Storage\FluentStorageServiceProvider',
160
-        'LucaDegasperi\OAuth2Server\OAuth2ServerServiceProvider',
161
-        'Lord\Laroute\LarouteServiceProvider',
176
+        Clockwork\Support\Laravel\ClockworkServiceProvider::class,
177
+        GrahamCampbell\Markdown\MarkdownServiceProvider::class,
178
+        Maknz\Slack\SlackServiceProvider::class,
179
+        Mariuzzo\LaravelJsLocalization\LaravelJsLocalizationServiceProvider::class,
180
+        Shift31\LaravelElasticsearch\ElasticsearchServiceProvider::class,
181
+        League\StatsD\Laravel5\Provider\StatsdServiceProvider::class,
182
+        LucaDegasperi\OAuth2Server\Storage\FluentStorageServiceProvider::class,
183
+        LucaDegasperi\OAuth2Server\OAuth2ServerServiceProvider::class,
184
+        Lord\Laroute\LarouteServiceProvider::class,
162 185
         Sentry\SentryLaravel\SentryLaravelServiceProvider::class,
186
+
187
+        /*
188
+         * Application Service Providers...
189
+         */
190
+        App\Providers\AppServiceProvider::class,
191
+        // App\Providers\AuthServiceProvider::class,
192
+        // App\Providers\BroadcastServiceProvider::class,
193
+        App\Providers\EventServiceProvider::class,
194
+        App\Providers\RouteServiceProvider::class,
163 195
     ],
164 196
 
165 197
     /*
@@ -175,38 +207,38 @@ return [
175 207
 
176 208
     'aliases' => [
177 209
 
178
-        'App' => 'Illuminate\Support\Facades\App',
179
-        'Artisan' => 'Illuminate\Support\Facades\Artisan',
180
-        'Auth' => 'Illuminate\Support\Facades\Auth',
181
-        'Blade' => 'Illuminate\Support\Facades\Blade',
182
-        'Bus' => 'Illuminate\Support\Facades\Bus',
183
-        'Cache' => 'Illuminate\Support\Facades\Cache',
184
-        'Config' => 'Illuminate\Support\Facades\Config',
185
-        'Cookie' => 'Illuminate\Support\Facades\Cookie',
186
-        'Crypt' => 'Illuminate\Support\Facades\Crypt',
187
-        'DB' => 'Illuminate\Support\Facades\DB',
188
-        'Eloquent' => 'Illuminate\Database\Eloquent\Model',
189
-        'Event' => 'Illuminate\Support\Facades\Event',
190
-        'File' => 'Illuminate\Support\Facades\File',
191
-        'Hash' => 'Illuminate\Support\Facades\Hash',
192
-        'Input' => 'Illuminate\Support\Facades\Input',
193
-        'Inspiring' => 'Illuminate\Foundation\Inspiring',
194
-        'Lang' => 'Illuminate\Support\Facades\Lang',
195
-        'Log' => 'Illuminate\Support\Facades\Log',
196
-        'Mail' => 'Illuminate\Support\Facades\Mail',
197
-        'Password' => 'Illuminate\Support\Facades\Password',
198
-        'Queue' => 'Illuminate\Support\Facades\Queue',
199
-        'Redirect' => 'Illuminate\Support\Facades\Redirect',
200
-        'Redis' => 'Illuminate\Support\Facades\Redis',
201
-        'Request' => 'Illuminate\Support\Facades\Request',
202
-        'Response' => 'Illuminate\Support\Facades\Response',
203
-        'Route' => 'Illuminate\Support\Facades\Route',
204
-        'Schema' => 'Illuminate\Support\Facades\Schema',
205
-        'Session' => 'Illuminate\Support\Facades\Session',
206
-        'Storage' => 'Illuminate\Support\Facades\Storage',
207
-        'URL' => 'Illuminate\Support\Facades\URL',
208
-        'Validator' => 'Illuminate\Support\Facades\Validator',
209
-        'View' => 'Illuminate\Support\Facades\View',
210
+        'App' => Illuminate\Support\Facades\App::class,
211
+        'Artisan' => Illuminate\Support\Facades\Artisan::class,
212
+        'Auth' => Illuminate\Support\Facades\Auth::class,
213
+        'Blade' => Illuminate\Support\Facades\Blade::class,
214
+        'Bus' => Illuminate\Support\Facades\Bus::class,
215
+        'Cache' => Illuminate\Support\Facades\Cache::class,
216
+        'Config' => Illuminate\Support\Facades\Config::class,
217
+        'Cookie' => Illuminate\Support\Facades\Cookie::class,
218
+        'Crypt' => Illuminate\Support\Facades\Crypt::class,
219
+        'DB' => Illuminate\Support\Facades\DB::class,
220
+        'Eloquent' => Illuminate\Database\Eloquent\Model::class,
221
+        'Event' => Illuminate\Support\Facades\Event::class,
222
+        'File' => Illuminate\Support\Facades\File::class,
223
+        'Gate' => Illuminate\Support\Facades\Gate::class,
224
+        'Hash' => Illuminate\Support\Facades\Hash::class,
225
+        'Lang' => Illuminate\Support\Facades\Lang::class,
226
+        'Log' => Illuminate\Support\Facades\Log::class,
227
+        'Mail' => Illuminate\Support\Facades\Mail::class,
228
+        'Notification' => Illuminate\Support\Facades\Notification::class,
229
+        'Password' => Illuminate\Support\Facades\Password::class,
230
+        'Queue' => Illuminate\Support\Facades\Queue::class,
231
+        'Redirect' => Illuminate\Support\Facades\Redirect::class,
232
+        'Redis' => Illuminate\Support\Facades\Redis::class,
233
+        'Request' => Illuminate\Support\Facades\Request::class,
234
+        'Response' => Illuminate\Support\Facades\Response::class,
235
+        'Route' => Illuminate\Support\Facades\Route::class,
236
+        'Schema' => Illuminate\Support\Facades\Schema::class,
237
+        'Session' => Illuminate\Support\Facades\Session::class,
238
+        'Storage' => Illuminate\Support\Facades\Storage::class,
239
+        'URL' => Illuminate\Support\Facades\URL::class,
240
+        'Validator' => Illuminate\Support\Facades\Validator::class,
241
+        'View' => Illuminate\Support\Facades\View::class,
210 242
 
211 243
         'Form' => 'Collective\Html\FormFacade',
212 244
         'Html' => 'Collective\Html\HtmlFacade',

+ 0
- 5
config/auth.php View File

@@ -81,10 +81,6 @@ return [
81 81
     | Resetting Passwords
82 82
     |--------------------------------------------------------------------------
83 83
     |
84
-    | Here you may set the options for resetting passwords including the view
85
-    | that is your password reset e-mail. You may also set the name of the
86
-    | table that maintains all of the reset tokens for your application.
87
-    |
88 84
     | You may specify multiple password reset configurations if you have more
89 85
     | than one user table or model in the application and you want to have
90 86
     | separate password reset settings based on the specific user types.
@@ -98,7 +94,6 @@ return [
98 94
     // 'passwords' => [
99 95
     //     'users' => [
100 96
     //         'provider' => 'users',
101
-    //         'email' => 'auth.emails.password',
102 97
     //         'table' => 'password_resets',
103 98
     //         'expire' => 60,
104 99
     //     ],

+ 58
- 0
config/broadcasting.php View File

@@ -0,0 +1,58 @@
1
+<?php
2
+
3
+return [
4
+
5
+    /*
6
+    |--------------------------------------------------------------------------
7
+    | Default Broadcaster
8
+    |--------------------------------------------------------------------------
9
+    |
10
+    | This option controls the default broadcaster that will be used by the
11
+    | framework when an event needs to be broadcast. You may set this to
12
+    | any of the connections defined in the "connections" array below.
13
+    |
14
+    | Supported: "pusher", "redis", "log", "null"
15
+    |
16
+    */
17
+
18
+    'default' => env('BROADCAST_DRIVER', 'null'),
19
+
20
+    /*
21
+    |--------------------------------------------------------------------------
22
+    | Broadcast Connections
23
+    |--------------------------------------------------------------------------
24
+    |
25
+    | Here you may define all of the broadcast connections that will be used
26
+    | to broadcast events to other systems or over websockets. Samples of
27
+    | each available type of connection are provided inside this array.
28
+    |
29
+    */
30
+
31
+    'connections' => [
32
+
33
+        'pusher' => [
34
+            'driver' => 'pusher',
35
+            'key' => env('PUSHER_KEY'),
36
+            'secret' => env('PUSHER_SECRET'),
37
+            'app_id' => env('PUSHER_APP_ID'),
38
+            'options' => [
39
+                //
40
+            ],
41
+        ],
42
+
43
+        'redis' => [
44
+            'driver' => 'redis',
45
+            'connection' => 'default',
46
+        ],
47
+
48
+        'log' => [
49
+            'driver' => 'log',
50
+        ],
51
+
52
+        'null' => [
53
+            'driver' => 'null',
54
+        ],
55
+
56
+    ],
57
+
58
+];

+ 19
- 0
config/cache.php View File

@@ -37,6 +37,25 @@ return [
37 37
             'path' => storage_path().'/framework/cache',
38 38
         ],
39 39
 
40
+         'memcached' => [
41
+            'driver' => 'memcached',
42
+            'persistent_id' => env('MEMCACHED_PERSISTENT_ID'),
43
+            'sasl' => [
44
+                env('MEMCACHED_USERNAME'),
45
+                env('MEMCACHED_PASSWORD'),
46
+            ],
47
+            'options' => [
48
+                // Memcached::OPT_CONNECT_TIMEOUT  => 2000,
49
+            ],
50
+            'servers' => [
51
+                [
52
+                    'host' => env('MEMCACHED_HOST', '127.0.0.1'),
53
+                    'port' => env('MEMCACHED_PORT', 11211),
54
+                    'weight' => 100,
55
+                ],
56
+            ],
57
+        ],
58
+
40 59
         'redis' => [
41 60
             'driver' => 'redis',
42 61
             'connection' => 'default',

+ 1
- 1
config/database.php View File

@@ -22,7 +22,7 @@ return [
22 22
     |
23 23
     */
24 24
 
25
-    'fetch' => PDO::FETCH_CLASS,
25
+    'fetch' => PDO::FETCH_OBJ,
26 26
 
27 27
     /*
28 28
     |--------------------------------------------------------------------------

+ 3
- 3
config/queue.php View File

@@ -39,14 +39,14 @@ return [
39 39
             'driver' => 'database',
40 40
             'table' => 'jobs',
41 41
             'queue' => 'default',
42
-            'expire' => 60,
42
+            'retry_after' => 90,
43 43
         ],
44 44
 
45 45
         'beanstalkd' => [
46 46
             'driver' => 'beanstalkd',
47 47
             'host' => 'localhost',
48 48
             'queue' => 'default',
49
-            'ttr' => 60,
49
+            'retry_after' => 90,
50 50
         ],
51 51
 
52 52
         'sqs' => [
@@ -69,7 +69,7 @@ return [
69 69
         'redis' => [
70 70
             'driver' => 'redis',
71 71
             'queue' => 'default',
72
-            'expire' => 60,
72
+            'retry_after' => 90,
73 73
         ],
74 74
 
75 75
     ],

+ 12
- 12
config/services.php View File

@@ -8,34 +8,34 @@ return [
8 8
     |--------------------------------------------------------------------------
9 9
     |
10 10
     | This file is for storing the credentials for third party services such
11
-    | as Stripe, Mailgun, Mandrill, and others. This file provides a sane
11
+    | as Stripe, Mailgun, SparkPost and others. This file provides a sane
12 12
     | default location for this type of information, allowing packages
13 13
     | to have a conventional place to find your various credentials.
14 14
     |
15 15
     */
16 16
 
17 17
     'mailgun' => [
18
-        'domain' => '',
19
-        'secret' => '',
20
-    ],
21
-
22
-    'mandrill' => [
23
-        'secret' => '',
18
+        'domain' => env('MAILGUN_DOMAIN'),
19
+        'secret' => env('MAILGUN_SECRET'),
24 20
     ],
25 21
 
26 22
     'ses' => [
27
-        'key' => '',
28
-        'secret' => '',
23
+        'key' => env('SES_KEY'),
24
+        'secret' => env('SES_SECRET'),
29 25
         'region' => 'us-east-1',
30 26
     ],
31 27
 
28
+    'sparkpost' => [
29
+        'secret' => env('SPARKPOST_SECRET'),
30
+    ],
31
+
32 32
     'stripe' => [
33
-        'model' => 'User',
34
-        'secret' => '',
33
+        'model' => App\Models\User::class,
34
+        'key' => env('STRIPE_KEY'),
35
+        'secret' => env('STRIPE_SECRET'),
35 36
     ],
36 37
 
37 38
     'ga' => [
38 39
         'tracking_id' => env('GA_TRACKING_ID', ''),
39 40
     ],
40
-
41 41
 ];

+ 43
- 4
config/session.php View File

@@ -57,7 +57,7 @@ return [
57 57
     |
58 58
     */
59 59
 
60
-    'files' => storage_path().'/framework/sessions',
60
+    'files' => storage_path('framework/sessions'),
61 61
 
62 62
     /*
63 63
     |--------------------------------------------------------------------------
@@ -70,7 +70,33 @@ return [
70 70
     |
71 71
     */
72 72
 
73
-    'connection' => 'default',
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,
74 100
 
75 101
     /*
76 102
     |--------------------------------------------------------------------------
@@ -122,7 +148,7 @@ return [
122 148
     |
123 149
     */
124 150
 
125
-    'domain' => null,
151
+    'domain' => env('SESSION_DOMAIN', null),
126 152
 
127 153
     /*
128 154
     |--------------------------------------------------------------------------
@@ -135,6 +161,19 @@ return [
135 161
     |
136 162
     */
137 163
 
138
-    'secure' => false,
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,
139 178
 
140 179
 ];

+ 34
- 0
database/migrations/2016_10_24_062803_update_jobs_table.php View File

@@ -0,0 +1,34 @@
1
+<?php
2
+
3
+use Illuminate\Support\Facades\Schema;
4
+use Illuminate\Database\Schema\Blueprint;
5
+use Illuminate\Database\Migrations\Migration;
6
+
7
+class UpdateJobsTable extends Migration
8
+{
9
+    public function up()
10
+    {
11
+        Schema::table('jobs', function (Blueprint $table) {
12
+            $table->dropIndex('jobs_queue_reserved_reserved_at_index');
13
+            $table->dropColumn('reserved');
14
+            $table->index(['queue', 'reserved_at']);
15
+        });
16
+
17
+        Schema::table('failed_jobs', function (Blueprint $table) {
18
+            $table->longText('exception')->after('payload');
19
+        });
20
+    }
21
+
22
+    public function down()
23
+    {
24
+        Schema::table('jobs', function (Blueprint $table) {
25
+            $table->tinyInteger('reserved')->unsigned();
26
+            $table->index(['queue', 'reserved', 'reserved_at']);
27
+            $table->dropIndex('jobs_queue_reserved_at_index');
28
+        });
29
+
30
+        Schema::table('failed_jobs', function (Blueprint $table) {
31
+            $table->dropColumn('exception');
32
+        });
33
+    }
34
+}

+ 1
- 1
public/index.php View File

@@ -3,7 +3,7 @@
3 3
 /**
4 4
  * Laravel - A PHP Framework For Web Artisans.
5 5
  *
6
- * @author   Taylor Otwell <taylorotwell@gmail.com>
6
+ * @author   Taylor Otwell <taylor@laravel.com>
7 7
  */
8 8
 
9 9
 /*

+ 2
- 2
resources/assets/coffee/react/_components/beatmapset-panel.coffee View File

@@ -41,7 +41,7 @@ class @BeatmapsetPanel extends React.Component
41 41
       div className: 'beatmapset-panel__panel',
42 42
         div className: 'beatmapset-panel__header',
43 43
           a
44
-            href: laroute.route 'beatmapsets.show', beatmapsets: beatmap.id
44
+            href: laroute.route 'beatmapsets.show', beatmapset: beatmap.id
45 45
             target: '_blank', className: 'beatmapset-panel__thumb'
46 46
             style: {backgroundImage: "url(#{beatmap.covers.card})"}
47 47
             div className: 'beatmapset-panel__title-artist-box',
@@ -61,7 +61,7 @@ class @BeatmapsetPanel extends React.Component
61 61
 
62 62
         div className: 'beatmapset-panel__mapper-source-box',
63 63
           span className: 'hidden', ref: beatmap.id, beatmap.id
64
-          div className: 'creator', dangerouslySetInnerHTML: { __html: osu.trans('beatmaps.listing.mapped-by', mapper: laroute.link_to_route('users.show', beatmap.creator, users: beatmap.user_id)) }
64
+          div className: 'creator', dangerouslySetInnerHTML: { __html: osu.trans('beatmaps.listing.mapped-by', mapper: laroute.link_to_route('users.show', beatmap.creator, user: beatmap.user_id)) }
65 65
           div className: 'source', beatmap.source
66 66
 
67 67
         div className: 'beatmapset-panel__icons-box',

+ 1
- 1
resources/assets/coffee/react/beatmap-discussions/discussion.coffee View File

@@ -95,7 +95,7 @@ BeatmapDiscussions.Discussion = React.createClass
95 95
   doVote: (score) ->
96 96
     LoadingOverlay.show()
97 97
 
98
-    $.ajax laroute.route('beatmap-discussions.vote', beatmap_discussions: @props.discussion.id),
98
+    $.ajax laroute.route('beatmap-discussions.vote', beatmap_discussion: @props.discussion.id),
99 99
       method: 'PUT',
100 100
       data:
101 101
         beatmap_discussion_vote:

+ 1
- 1
resources/assets/coffee/react/beatmap-discussions/main.coffee View File

@@ -81,7 +81,7 @@ BeatmapDiscussions.Main = React.createClass
81 81
             h1
82 82
               className: 'forum-category-header__title'
83 83
               a
84
-                href: laroute.route('beatmapsets.show', beatmapsets: @state.beatmapset.id)
84
+                href: laroute.route('beatmapsets.show', beatmapset: @state.beatmapset.id)
85 85
                 className: 'link link--white link--no-underline'
86 86
                 @state.beatmapset.title
87 87
 

+ 3
- 2
resources/assets/coffee/react/beatmap-discussions/nominations.coffee View File

@@ -39,9 +39,10 @@ BeatmapDiscussions.Nominations = React.createClass
39 39
       method: 'PUT'
40 40
 
41 41
     if comment
42
-      params['data'] = {'comment': comment}
42
+      params.data =
43
+        comment: comment
43 44
 
44
-    $.ajax laroute.route("beatmapsets.#{action}", beatmapsets: @props.beatmapset.id), params
45
+    $.ajax laroute.route("beatmapsets.#{action}", beatmapset: @props.beatmapset.id), params
45 46
 
46 47
     .done (response) =>
47 48
       $.publish 'beatmapset:update', beatmapset: response.beatmapset

+ 1
- 1
resources/assets/coffee/react/beatmap-discussions/overview.coffee View File

@@ -70,7 +70,7 @@ BeatmapDiscussions.Overview = React.createClass
70 70
             className: "#{bn}__meta-text"
71 71
             dangerouslySetInnerHTML:
72 72
               __html: osu.trans 'beatmaps.listing.mapped-by',
73
-                mapper: "<strong>#{laroute.link_to_route('users.show', user.username, users: user.id)}</strong>"
73
+                mapper: "<strong>#{laroute.link_to_route('users.show', user.username, user: user.id)}</strong>"
74 74
 
75 75
         div className: 'text-right',
76 76
           @stats()

+ 3
- 3
resources/assets/coffee/react/beatmap-discussions/post.coffee View File

@@ -80,7 +80,7 @@ BeatmapDiscussions.Post = React.createClass
80 80
 
81 81
     LoadingOverlay.show()
82 82
 
83
-    $.ajax laroute.route('beatmap-discussion-posts.update', beatmap_discussion_posts: @props.post.id),
83
+    $.ajax laroute.route('beatmap-discussion-posts.update', beatmap_discussion_post: @props.post.id),
84 84
       method: 'PUT'
85 85
       data:
86 86
         beatmap_discussion_post:
@@ -111,14 +111,14 @@ BeatmapDiscussions.Post = React.createClass
111 111
         span
112 112
           className: "#{bn}__info"
113 113
           dangerouslySetInnerHTML:
114
-            __html: "#{laroute.link_to_route('users.show', @props.user.username, users: @props.user.id)}, #{osu.timeago @props.post.created_at}"
114
+            __html: "#{laroute.link_to_route('users.show', @props.user.username, user: @props.user.id)}, #{osu.timeago @props.post.created_at}"
115 115
 
116 116
         if @props.post.updated_at != @props.post.created_at
117 117
           span
118 118
             className: "#{bn}__info #{bn}__info--edited"
119 119
             dangerouslySetInnerHTML:
120 120
               __html: osu.trans 'beatmaps.discussions.edited',
121
-                editor: laroute.link_to_route('users.show', @props.lastEditor.username, users: @props.lastEditor.id)
121
+                editor: laroute.link_to_route('users.show', @props.lastEditor.username, user: @props.lastEditor.id)
122 122
                 update_time: osu.timeago @props.post.updated_at
123 123
 
124 124
         if @props.canBeEdited

+ 1
- 1
resources/assets/coffee/react/beatmap-discussions/system-post.coffee View File

@@ -29,7 +29,7 @@ BeatmapDiscussions.SystemPost = React.createClass
29 29
       switch @props.post.message.type
30 30
         when 'resolved'
31 31
           osu.trans "beatmap_discussions.system.resolved.#{@props.post.message.value}",
32
-            user: laroute.link_to_route('users.show', @props.user.username, users: @props.user.id)
32
+            user: laroute.link_to_route('users.show', @props.user.username, user: @props.user.id)
33 33
 
34 34
     div
35 35
       className: bn

+ 1
- 1
resources/assets/coffee/react/beatmapset-page/header.coffee View File

@@ -90,7 +90,7 @@ class BeatmapsetPage.Header extends React.Component
90 90
                 osu.trans 'beatmaps.beatmapset.show.details.made-by'
91 91
                 a
92 92
                   className: '