fix error
This commit is contained in:
parent
f78cfcc90c
commit
eb37501373
|
|
@ -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'
|
||||
|
|
|
|||
|
|
@ -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)
|
||||
{
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
|
|
|||
|
|
@ -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()
|
||||
|
|
|
|||
|
|
@ -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 [
|
||||
|
|
|
|||
|
|
@ -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');
|
||||
}
|
||||
};
|
||||
|
|
@ -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']);
|
||||
});
|
||||
|
|
|
|||
Loading…
Reference in New Issue