Skip to content

Commit 40a17d5

Browse files
authored
upgrade to laravel 12.x (#58)
1 parent 103cf0b commit 40a17d5

67 files changed

Lines changed: 3870 additions & 2458 deletions

File tree

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

app/Exceptions/QuizVerificationException.php

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@ public function render($request)
1212
return response()->json([
1313
'status' => 'error',
1414
'message' => $this->getMessage()
15-
], 401);
15+
], 403);
1616
}
1717

1818
flash($this->getMessage())->warning();

app/Http/Controllers/PagesController.php

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,14 +2,14 @@
22

33
namespace App\Http\Controllers;
44

5-
use Carbon\Carbon;
5+
use Illuminate\Support\Facades\Date;
66

77
class PagesController extends Controller
88
{
99
public function index()
1010
{
1111
return view('welcome', [
12-
'timeLeft' => max(0, Carbon::now()->diffInSeconds(Carbon::parse(env('SANKALAN_START_TIME')), false)),
12+
'timeLeft' => max(0, Date::now()->diffInSeconds(Date::parse(env('SANKALAN_START_TIME')), false)),
1313
]);
1414
}
1515

app/Http/Controllers/QuestionResponseController.php

Lines changed: 43 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -4,9 +4,8 @@
44

55
use App\Models\QuestionResponse;
66
use App\Models\Quiz;
7-
use Auth;
7+
use Illuminate\Support\Facades\Auth;
88
use Illuminate\Http\Request;
9-
use Illuminate\Support\Facades\Session;
109
use Symfony\Component\HttpFoundation\Response;
1110

1211
class QuestionResponseController extends Controller
@@ -20,30 +19,46 @@ public function store(Request $request, Quiz $quiz)
2019
if ($quiz->isTimeLimitExceeded($team)) {
2120
flash('Your time limit exceeded!')->error();
2221

23-
return $this->getJsonOrRedirect(Response::HTTP_UNAUTHORIZED);
22+
if ($request->expectsJson()) {
23+
return response()->json([
24+
'status' => 'error',
25+
'message' => 'Your time limit exceeded!'
26+
], Response::HTTP_FORBIDDEN);
27+
}
28+
29+
return redirect()->back();
2430
}
2531

2632
flash('Your response has been recorded! All The Best!')->success();
2733

28-
return $this->getJsonOrRedirect(Response::HTTP_ACCEPTED);
29-
}
30-
31-
private function getJsonOrRedirect($status = 202)
32-
{
33-
if (! request()->expectsJson()) {
34-
return redirect()->back();
34+
if ($request->expectsJson()) {
35+
return response()->json([
36+
'status' => 'success',
37+
'message' => 'Your response has been recorded! All The Best!'
38+
], Response::HTTP_OK);
3539
}
3640

37-
return response()->json([
38-
'message' => Session::pull('flash_notification')->toArray()[0],
39-
], $status);
41+
return redirect()->back();
4042
}
4143

4244
public function saveQuestionResponse(Request $request, Quiz $quiz)
4345
{
4446
$team = $quiz->event->participatingTeamByUser(Auth::user());
45-
$quizResponseId = $quiz->participationByTeam($team)->id;
4647

48+
if (!$quiz->isVerified()) {
49+
50+
if ($request->expectsJson()) {
51+
return response()->json([
52+
'status' => 'error',
53+
'message' => 'Quiz must be verified before submitting responses.'
54+
], Response::HTTP_FORBIDDEN);
55+
}
56+
57+
flash('Quiz must be verified before submitting responses.')->error();
58+
return redirect()->back();
59+
}
60+
61+
$quizResponseId = $quiz->participationByTeam($team)->id;
4762
$questionId = $request->question_id;
4863
$responseKey = $request->response_key;
4964

@@ -52,13 +67,19 @@ public function saveQuestionResponse(Request $request, Quiz $quiz)
5267
['response_keys' => $responseKey]
5368
);
5469

55-
return response()->json([
56-
'message' => 'Your response has been saved!',
57-
'question_response' => [
58-
'question_id' => $questionId,
59-
'question_response_id' => $questionResponse->id,
60-
'response_key' => $responseKey,
61-
],
62-
]);
70+
71+
if ($request->expectsJson()) {
72+
return response()->json([
73+
'message' => 'Your response has been saved!',
74+
'question_response' => [
75+
'question_id' => $questionId,
76+
'question_response_id' => $questionResponse->id,
77+
'response_key' => $responseKey,
78+
]
79+
]);
80+
}
81+
82+
flash('Your response has been saved!')->success();
83+
return redirect()->back();
6384
}
6485
}

app/Http/Kernel.php

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -14,11 +14,11 @@ class Kernel extends HttpKernel
1414
* @var array
1515
*/
1616
protected $middleware = [
17-
\App\Http\Middleware\CheckForMaintenanceMode::class,
17+
\App\Http\Middleware\TrustProxies::class,
1818
\Illuminate\Foundation\Http\Middleware\ValidatePostSize::class,
19+
\Illuminate\Foundation\Http\Middleware\PreventRequestsDuringMaintenance::class,
1920
\App\Http\Middleware\TrimStrings::class,
2021
\Illuminate\Foundation\Http\Middleware\ConvertEmptyStringsToNull::class,
21-
\App\Http\Middleware\TrustProxies::class,
2222
];
2323

2424
/**
@@ -31,15 +31,14 @@ class Kernel extends HttpKernel
3131
\App\Http\Middleware\EncryptCookies::class,
3232
\Illuminate\Cookie\Middleware\AddQueuedCookiesToResponse::class,
3333
\Illuminate\Session\Middleware\StartSession::class,
34-
// \Illuminate\Session\Middleware\AuthenticateSession::class,
3534
\Illuminate\View\Middleware\ShareErrorsFromSession::class,
3635
\App\Http\Middleware\VerifyCsrfToken::class,
3736
\Illuminate\Routing\Middleware\SubstituteBindings::class,
3837
],
3938

4039
'api' => [
41-
'throttle:60,1',
42-
'bindings',
40+
\Illuminate\Routing\Middleware\ThrottleRequests::class . ':api',
41+
\Illuminate\Routing\Middleware\SubstituteBindings::class,
4342
],
4443
];
4544

@@ -53,10 +52,11 @@ class Kernel extends HttpKernel
5352
protected $routeMiddleware = [
5453
'auth' => \App\Http\Middleware\Authenticate::class,
5554
'auth.basic' => \Illuminate\Auth\Middleware\AuthenticateWithBasicAuth::class,
56-
'bindings' => \Illuminate\Routing\Middleware\SubstituteBindings::class,
5755
'cache.headers' => \Illuminate\Http\Middleware\SetCacheHeaders::class,
5856
'can' => \Illuminate\Auth\Middleware\Authorize::class,
5957
'guest' => \App\Http\Middleware\RedirectIfAuthenticated::class,
58+
'password.confirm' => \Illuminate\Auth\Middleware\RequirePassword::class,
59+
'precognitive' => \Illuminate\Foundation\Http\Middleware\HandlePrecognitiveRequests::class,
6060
'signed' => \Illuminate\Routing\Middleware\ValidateSignature::class,
6161
'throttle' => \Illuminate\Routing\Middleware\ThrottleRequests::class,
6262
'verified' => \Illuminate\Auth\Middleware\EnsureEmailIsVerified::class,

app/Http/Middleware/TrustProxies.php

Lines changed: 11 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -2,15 +2,15 @@
22

33
namespace App\Http\Middleware;
44

5-
use Fideloper\Proxy\TrustProxies as Middleware;
5+
use Illuminate\Http\Middleware\TrustProxies as Middleware;
66
use Illuminate\Http\Request;
77

88
class TrustProxies extends Middleware
99
{
1010
/**
1111
* The trusted proxies for this application.
1212
*
13-
* @var array
13+
* @var array|string|null
1414
*/
1515
protected $proxies;
1616

@@ -19,5 +19,13 @@ class TrustProxies extends Middleware
1919
*
2020
* @var int
2121
*/
22-
protected $headers = Request::HEADER_X_FORWARDED_ALL;
22+
protected $headers = [
23+
Request::HEADER_FORWARDED,
24+
Request::HEADER_X_FORWARDED_FOR,
25+
Request::HEADER_X_FORWARDED_HOST,
26+
Request::HEADER_X_FORWARDED_PORT,
27+
Request::HEADER_X_FORWARDED_PROTO,
28+
Request::HEADER_X_FORWARDED_PREFIX,
29+
Request::HEADER_X_FORWARDED_AWS_ELB,
30+
];
2331
}

app/Models/Event.php

Lines changed: 22 additions & 28 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@
55
use Illuminate\Database\Eloquent\Collection;
66
use Illuminate\Database\Eloquent\Factories\HasFactory;
77
use Illuminate\Database\Eloquent\Model;
8+
use Illuminate\Support\Facades\Date;
89

910
class Event extends Model
1011
{
@@ -13,21 +14,24 @@ class Event extends Model
1314
/**
1415
* The attributes that are NOT mass assignable.
1516
*
16-
* @var array
17+
* @var array<string>
1718
*/
1819
protected $guarded = [];
1920

2021
/**
21-
* The attributes that are of DateTime type, mutated to instance of Carbon.
22+
* The attributes that should be cast.
2223
*
23-
* @var array
24+
* @var array<string, string>
2425
*/
25-
protected $dates = ['started_at', 'ended_at'];
26+
protected $casts = [
27+
'started_at' => 'datetime',
28+
'ended_at' => 'datetime',
29+
];
2630

2731
/**
2832
* The attributes that are appended for array.
2933
*
30-
* @var array
34+
* @var array<string>
3135
*/
3236
protected $appends = ['isLive', 'hasEnded'];
3337

@@ -99,51 +103,41 @@ public function setLive()
99103
return true;
100104
}
101105

102-
return $this->update(['started_at' => now()]);
106+
return $this->update([
107+
'started_at' => Date::now(),
108+
]);
103109
}
104110

105111
/**
106-
* End this event (When the event gets over).
107-
*
108-
* @return bool
109-
*/
110-
public function end()
111-
{
112-
if ($this->isLive) {
113-
return $this->update(['ended_at' => now()]);
114-
}
115-
116-
return false;
117-
}
118-
119-
/**
120-
* Accessor to access isLive attribute.
112+
* Get is live attribute.
121113
*
122114
* @return bool
123115
*/
124116
public function getIsLiveAttribute()
125117
{
126-
return $this->hasStarted && !$this->hasEnded;
118+
return !is_null($this->started_at) && is_null($this->ended_at);
127119
}
128120

129121
/**
130-
* Has the event started?
122+
* Get has ended attribute.
131123
*
132124
* @return bool
133125
*/
134-
public function getHasStartedAttribute()
126+
public function getHasEndedAttribute()
135127
{
136-
return (bool) $this->started_at;
128+
return !is_null($this->ended_at);
137129
}
138130

139131
/**
140-
* Has the event ended?
132+
* End an event.
141133
*
142134
* @return bool
143135
*/
144-
public function getHasEndedAttribute()
136+
public function end()
145137
{
146-
return (bool) $this->ended_at;
138+
return $this->update([
139+
'ended_at' => Date::now(),
140+
]);
147141
}
148142

149143
/**

0 commit comments

Comments
 (0)