diff --git a/app/Http/Controllers/Admin/SiswaController.php b/app/Http/Controllers/Admin/SiswaController.php index 431c7ef..cdfff82 100644 --- a/app/Http/Controllers/Admin/SiswaController.php +++ b/app/Http/Controllers/Admin/SiswaController.php @@ -71,9 +71,9 @@ public function store(Request $request) ->with('success', 'Data siswa berhasil ditambahkan!'); } - public function update(Request $request, $nisn) + public function update(Request $request, $id) { - $siswa = Siswa::findOrFail($nisn); + $siswa = Siswa::findOrFail($id); $validated = $request->validate([ 'nama' => 'required|string|max:100', @@ -105,9 +105,9 @@ public function update(Request $request, $nisn) ->with('success', 'Data siswa berhasil diupdate!'); } - public function destroy($nisn) + public function destroy($id) { - $siswa = Siswa::findOrFail($nisn); + $siswa = Siswa::findOrFail($id); $siswa->delete(); return redirect()->route('admin.siswa.index') diff --git a/app/Http/Controllers/Siswa/LoginController.php b/app/Http/Controllers/Siswa/LoginController.php new file mode 100644 index 0000000..12f3340 --- /dev/null +++ b/app/Http/Controllers/Siswa/LoginController.php @@ -0,0 +1,49 @@ +check()) { + return redirect()->route('siswa.dashboard'); + } + return view('auth.login-siswa'); + } + + public function login(Request $request) + { + $request->validate([ + 'nisn' => 'required|string', + 'password' => 'required|string', + ], [ + 'nisn.required' => 'NISN wajib diisi.', + 'password.required' => 'Password wajib diisi.', + ]); + + $credentials = $request->only('nisn', 'password'); + + if (Auth::guard('siswa')->attempt($credentials, $request->boolean('remember'))) { + $request->session()->regenerate(); + return redirect()->route('siswa.dashboard'); + } + + return back()->withErrors([ + 'nisn' => 'NISN atau password salah.', + ])->withInput($request->only('nisn')); + } + + public function logout(Request $request) + { + Auth::guard('siswa')->logout(); + $request->session()->invalidate(); + $request->session()->regenerateToken(); + return redirect()->route('siswa.login'); + } +} \ No newline at end of file diff --git a/app/Models/Siswa.php b/app/Models/Siswa.php index d413490..39d03d6 100644 --- a/app/Models/Siswa.php +++ b/app/Models/Siswa.php @@ -3,18 +3,15 @@ namespace App\Models; use Illuminate\Database\Eloquent\Factories\HasFactory; -use Illuminate\Database\Eloquent\Model; +use Illuminate\Foundation\Auth\User as Authenticatable; -class Siswa extends Model +class Siswa extends Authenticatable { use HasFactory; protected $table = 'siswas'; - protected $primaryKey = 'id_siswa'; - public $incrementing = true; - protected $keyType = 'int'; protected $fillable = [ @@ -28,11 +25,31 @@ class Siswa extends Model protected $hidden = [ 'password', + 'remember_token', ]; - // Relasi ke Kelas public function kelas() { return $this->belongsTo(Kelas::class, 'id_kelas', 'id_kelas'); } + + public function pengumpulanTugas() + { + return $this->hasMany(PengumpulanTugas::class, 'id_siswa', 'id_siswa'); + } + + public function badges() + { + return $this->hasMany(SiswaBadge::class, 'id_siswa', 'id_siswa'); + } + + public function leaderboards() + { + return $this->hasMany(Leaderboard::class, 'id_siswa', 'id_siswa'); + } + + public function pesertaChallenges() + { + return $this->hasMany(PesertaChallenge::class, 'id_siswa', 'id_siswa'); + } } \ No newline at end of file diff --git a/resources/views/auth/landing-page.blade.php b/resources/views/auth/landing-page.blade.php index 1f7b688..932b1d8 100644 --- a/resources/views/auth/landing-page.blade.php +++ b/resources/views/auth/landing-page.blade.php @@ -8,5 +8,6 @@
Ini halaman landing sederhana. Silakan pilih login sesuai role kamu.
Login Admin Login Guru + Login Siswa @endsection diff --git a/resources/views/auth/login-siswa.blade.php b/resources/views/auth/login-siswa.blade.php index 0668ddb..71d6860 100644 --- a/resources/views/auth/login-siswa.blade.php +++ b/resources/views/auth/login-siswa.blade.php @@ -3,49 +3,76 @@ @section('title', 'Login Siswa') @section('content') -