aboutsummaryrefslogtreecommitdiff
path: root/app/Http/Controllers
diff options
context:
space:
mode:
authorryo <ryo@nopwd.lol>2025-03-11 16:15:29 +0000
committerryo <ryo@nopwd.lol>2025-03-11 16:15:29 +0000
commitfa4823dd632cad6a5736c1d900a064647bb72c20 (patch)
treea716b9d9f0ce62a9d2ca53f11d64b2a39b178d6c /app/Http/Controllers
parente1a48c8208c181fd40ecb065878ba9ea49b1f48f (diff)
Added admin user that can change usres teamHEADmain
Fixed: player login based on user and password Added: show errors to the user
Diffstat (limited to 'app/Http/Controllers')
-rw-r--r--app/Http/Controllers/PlayerController.php77
1 files changed, 68 insertions, 9 deletions
diff --git a/app/Http/Controllers/PlayerController.php b/app/Http/Controllers/PlayerController.php
index d39b177..d80c04e 100644
--- a/app/Http/Controllers/PlayerController.php
+++ b/app/Http/Controllers/PlayerController.php
@@ -4,38 +4,97 @@ namespace App\Http\Controllers;
use App\Models\Player;
use Illuminate\Http\Request;
+use Illuminate\Support\Facades\Auth;
+use Illuminate\Support\Facades\Hash;
use Symfony\Component\HttpFoundation\RedirectResponse;
class PlayerController extends Controller
{
public function register(Request $request): RedirectResponse
{
- Player::create([
+ $request->validate([
+ 'name' => ['required', 'string', 'min:3', 'max:20'],
+ 'password' => ['required', 'string', 'min:4'],
+ ]);
+ $player = Player::create([
'name' => $request->name,
- 'team' => $request->team,
- 'score' => 12,
+ 'password' => Hash::make($request->password),
+ 'team' => 'none',
+ 'score' => 0,
]);
- return redirect('/');
+ Auth::login($player);
+
+ return redirect('dashboard');
}
- public function login(Request $request)
+ public function login(Request $request): RedirectResponse
{
- if (! Player::where('name', $request->name)->exists()) {
- return redirect('/');
+ $credentials = $request->validate([
+ 'name' => 'required',
+ 'password' => 'required',
+ ]);
+
+ if (Auth::attempt($credentials)) {
+ $player = Auth::user();
+ if (isset($player->is_admin)) {
+ return redirect('/admin');
+ }
+
+ return redirect('/dashboard');
}
+ return back()->withErrors([
+ 'name' => 'The provided credentials do not match our records.',
+ ]);
+ }
+
+ public function profile()
+ {
+ $player = Auth::user();
+
+ return view('/dashboard', compact('player'));
+ }
+
+ public function admin()
+ {
+ $admin = Auth::user();
+ $players = Player::all();
+
+ return view('/admin', compact('admin'), compact('players'));
+ }
+
+ public function admin_team(Request $request): RedirectResponse
+ {
+ $request->validate([
+ 'name' => ['required'],
+ 'team' => ['required'],
+ ]);
$player = Player::where('name', $request->name)->first();
+ $player->team = $request->team;
+ $player->save();
- return view('dashboard', compact('player'));
+ return back();
}
public function score(Request $request): RedirectResponse
{
- $player = Player::find($request->id);
+ $request->validate([
+ 'score' => ['required', 'integer', 'gt:0'],
+ ]);
+ $player = Auth::user();
$player->score = $request->score;
$player->save();
return back();
}
+
+ public function logout(Request $request): RedirectResponse
+ {
+ Auth::logout();
+ $request->session()->invalidate();
+ $request->session()->regenerateToken();
+
+ return redirect('/');
+ }
}