fix error

This commit is contained in:
ghozahimma65 2026-02-14 05:47:34 +07:00
parent f78cfcc90c
commit eb37501373
7 changed files with 119 additions and 30 deletions

View File

@ -10,17 +10,27 @@ class AuthController extends Controller
{
public function login(Request $request)
{
\Log::info('Login Request Recieved', $request->all());
$credentials = $request->only('email', 'password');
if (Auth::attempt($credentials)) {
\Log::info('Auth::attempt success');
$user = Auth::user();
\Log::info('User retrieved', ['id' => $user->id]);
$token = $user->createToken('auth_token')->plainTextToken;
\Log::info('Token created');
return response()->json([
'success' => true,
'message' => 'Login Berhasil',
'user' => $user
'user' => $user,
'token' => $token
], 200);
}
\Log::info('Auth::attempt failed');
return response()->json([
'success' => false,
'message' => 'Email atau Password salah'

View File

@ -7,6 +7,7 @@
use App\Models\Anekdot;
use App\Models\HasilKarya;
use App\Models\Penjemputan;
use App\Models\PenilaianCeklis;
use Illuminate\Support\Facades\Storage;
class GuruController extends Controller
@ -58,6 +59,34 @@ public function storeKarya(Request $request)
return response()->json(['success' => true, 'message' => 'Karya berhasil disimpan']);
}
public function storeCeklis(Request $request)
{
// Validasi disesuaikan dengan struktur tabel penilaian_ceklis kamu
$request->validate([
'siswa_id' => 'required|exists:siswas,id',
'tanggal' => 'required|date',
'indikator' => 'required|string',
'hasil' => 'required|in:BB,MB,BSH,BSB', // Validasi skala PAUD
'keterangan'=> 'nullable|string',
]);
// Simpan data ke database
$ceklis = PenilaianCeklis::create([
'siswa_id' => $request->siswa_id,
'guru_id' => $request->user()->id, // Ambil ID dari Guru yang login
'tanggal' => $request->tanggal,
'indikator' => $request->indikator,
'hasil' => $request->hasil,
'keterangan'=> $request->keterangan,
]);
return response()->json([
'success' => true,
'message' => 'Penilaian Ceklis berhasil disimpan',
'data' => $ceklis
], 201);
}
// 3. Input Penjemputan (Scan QR)
public function storePenjemputan(Request $request)
{

View File

@ -4,15 +4,42 @@
use App\Http\Controllers\Controller;
use App\Models\Siswa;
use App\Models\WaliMurid; // Tambahkan Model Wali Murid
use Illuminate\Http\Request;
use Illuminate\Support\Facades\Auth; // Tambahkan Auth
class SiswaController extends Controller
{
public function index()
{
// Mengambil semua data siswa beserta data walinya
$siswa = Siswa::with(['wali_murid', 'kelompok'])->get();
// 1. Cek siapa yang sedang login (ambil dari Token)
$user = Auth::user();
// 2. Logika Pembeda Data
if ($user->role == 'guru') {
// --- JIKA GURU ---
// Ambil SEMUA data siswa (untuk menu "Data Kelas")
$siswa = Siswa::with(['wali_murid', 'kelompok'])->latest()->get();
} else {
// --- JIKA WALI MURID ---
// Cari data profil Wali Murid yang sesuai dengan User ID yang login
// Asumsi: Tabel 'wali_murids' punya kolom 'user_id'
$wali = WaliMurid::where('user_id', $user->id)->first();
if ($wali) {
// Ambil siswa yang punya ID Wali Murid tersebut
$siswa = Siswa::with(['wali_murid', 'kelompok'])
->where('wali_murid_id', $wali->id)
->latest()
->get();
} else {
// Kalau data walinya belum di-link, kasih kosong aja biar gak error
$siswa = [];
}
}
// 3. Kirim hasilnya ke Flutter
return response()->json([
'success' => true,
'data' => $siswa

View File

@ -4,6 +4,7 @@
use Illuminate\Database\Eloquent\Factories\HasFactory;
use Illuminate\Database\Eloquent\Model;
use App\Models\Kelas;
class Siswa extends Model
{
@ -20,8 +21,9 @@ public function wali_murid()
// TAMBAHKAN INI: Relasi ke Kelompok/Kelas
public function kelompok()
{
// Ganti 'Kelas' jika nama model kelas kamu berbeda
return $this->belongsTo(Kelas::class, 'kelompok_id');
// 2. Hubungkan ke Model 'Kelas'
// 3. Pakai kunci 'kelas_id' (sesuai yang ada di file Kelas.php kamu)
return $this->belongsTo(Kelas::class, 'kelas_id');
}
public function anekdots()

View File

@ -2,29 +2,27 @@
namespace App\Models;
// use Illuminate\Contracts\Auth\MustVerifyEmail;
use Illuminate\Database\Eloquent\Factories\HasFactory;
use Illuminate\Foundation\Auth\User as Authenticatable;
use Illuminate\Notifications\Notifiable;
use Laravel\Sanctum\HasApiTokens;
class User extends Authenticatable
{
use HasApiTokens, HasFactory, Notifiable;
use HasApiTokens;
use HasFactory;
use Notifiable;
/**
* GANTI FILLABLE DENGAN GUARDED
* Agar kolom 'role' bisa diisi oleh Controller
* Kita pakai guarded kosong biar aman mass assignment
*/
// protected $fillable = [ ... ]; <-- HAPUS ATAU KOMENTAR INI
// ✅ PAKAI INI (Jurus Open Gate):
protected $guarded = [];
protected $guarded = [];
/**
* The attributes that should be hidden for serialization.
*
* @var array<int, string>
*/
protected $hidden = [
'password',
@ -33,20 +31,8 @@ class User extends Authenticatable
'two_factor_secret',
];
/**
* The accessors to append to the model's array form.
*
* @var array<int, string>
*/
protected $appends = [
'profile_photo_url',
];
/**
* Get the attributes that should be cast.
*
* @return array<string, string>
*/
protected function casts(): array
{
return [

View File

@ -0,0 +1,33 @@
<?php
use Illuminate\Database\Migrations\Migration;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Support\Facades\Schema;
return new class extends Migration
{
/**
* Run the migrations.
*/
public function up(): void
{
Schema::create('personal_access_tokens', function (Blueprint $table) {
$table->id();
$table->morphs('tokenable');
$table->text('name');
$table->string('token', 64)->unique();
$table->text('abilities')->nullable();
$table->timestamp('last_used_at')->nullable();
$table->timestamp('expires_at')->nullable()->index();
$table->timestamps();
});
}
/**
* Reverse the migrations.
*/
public function down(): void
{
Schema::dropIfExists('personal_access_tokens');
}
};

View File

@ -25,13 +25,14 @@
// --- KHUSUS WALI MURID (Lihat Data) ---
// Wali melihat daftar anaknya
Route::get('/siswa-saya', [SiswaController::class, 'index']);
// ==========================================
// 2. AREA TERKUNCI (BUTUH TOKEN)
// ==========================================
Route::middleware('auth:sanctum')->group(function () {
// --- UMUM ---
Route::get('/siswa-saya', [SiswaController::class, 'index']); // Pindah ke sini biar bisa baca Auth::user()
Route::post('/logout', [AuthController::class, 'logout']);
Route::get('/user', function (Request $request) {
return $request->user(); // Cek siapa yang login
@ -49,4 +50,5 @@
Route::post('/guru/anekdot', [GuruController::class, 'storeAnekdot']);
Route::post('/guru/karya', [GuruController::class, 'storeKarya']);
Route::post('/guru/penjemputan', [GuruController::class, 'storePenjemputan']);
});
Route::post('/guru/ceklis', [GuruController::class, 'storeCeklis']);
});