6.3 KiB
6.3 KiB
🔐 Admin-Only System Setup Guide
📋 Ringkas
Sistem Klasifikasi Kematangan Tomat adalah sistem admin-only (bukan multi-user publik).
Fitur:
- ✅ Login dengan email & password untuk admin
- ✅ Dashboard untuk manage admin accounts
- ✅ Upload & klasifikasi tomat (hanya admin)
- ✅ View riwayat & statistik (hanya admin)
🗄️ Database Structure
Users Table
id (INT)
name (VARCHAR)
email (VARCHAR) - UNIQUE
password (VARCHAR) - hashed
role (VARCHAR) - always 'admin'
email_verified_at (TIMESTAMP)
remember_token (VARCHAR)
created_at (TIMESTAMP)
updated_at (TIMESTAMP)
Note: Hanya ada role 'admin', tidak ada role 'user'
🚀 Setup Steps
Step 1: Jalankan Migration Cleanup
php artisan migrate
Ini akan:
- ❌ Hapus semua user dengan role 'user'
- ✅ Set role 'admin' untuk semua user yang tersisa
Step 2: Verify Database
php artisan tinker
# Check existing admins
>>> User::all()
# Check total users
>>> User::count()
Step 3: Start Server
php artisan serve
Step 4: Login
URL: http://localhost:8000/admin/login
Email: admin1@gmail.com (atau admin yang ada di database)
Password: sesuai database
👨💼 Admin Management
Access Admin Panel
- Login dengan akun admin
- Pergi ke "Kelola Akun Admin"
- Kelola admin accounts
Tambah Admin Baru
1. Click "Tambah Admin"
2. Isi form:
- Nama: [nama lengkap]
- Email: [email admin]
- Password: [password admin]
- Role: Admin (fixed)
3. Click "Simpan"
Edit Admin
1. Click icon "Edit" di row admin
2. Update informasi
3. Click "Simpan"
Hapus Admin
1. Click icon "Trash" di row admin
2. Confirm delete
3. Admin account terhapus
🔒 Security Notes
Password Requirements
- Minimal 6 karakter (bisa custom di validation)
- Di-hash dengan bcrypt
- Tidak bisa di-reset via email (admin-only)
Admin-Only Access
Semua fitur dilindungi oleh session check:
if (!session('admin_logged_in')) {
return redirect()->route('admin.login');
}
Logout
- Hapus session: admin_logged_in, admin_user_id, admin_name
- Redirect ke login page
📁 Files Modified
Created
database/migrations/2025_02_05_cleanup_users_admin_only.phpADMIN_ONLY_SETUP.md(ini file)
Updated
app/Models/User.php- Tambah 'role' di fillableresources/views/login.blade.php- Update link
Existing (tidak diubah)
app/Http/Controllers/AdminController.php- Sudah mendukung admin-onlyapp/Http/Controllers/UploadController.php- Sudah session-protectedroutes/web.php- Sudah protected routes
✅ Verification Checklist
- Database migration sudah berjalan
- Tidak ada user dengan role 'user' di database
- Semua user punya role 'admin'
- Login berhasil dengan admin account
- Admin management panel accessible
- Bisa tambah/edit/hapus admin
- Upload & klasifikasi bekerja
- Logout bekerja dengan baik
📊 Database Query Examples
View semua admins
SELECT * FROM users WHERE role = 'admin';
Count total admins
SELECT COUNT(*) FROM users WHERE role = 'admin';
Delete user tertentu
DELETE FROM users WHERE id = 5;
Update user role
UPDATE users SET role = 'admin' WHERE id = 10;
🐛 Troubleshooting
❌ Login gagal
Check:
- Email ada di database
- Password sesuai (case-sensitive)
- Check logs:
storage/logs/laravel.log
❌ Admin panel tidak accessible
Check:
- Sudah login dulu
- Session active (check cookies)
- Cek middleware session di kernel
❌ Migration error
Check:
- Database connection di
.envbenar - Table users sudah ada
- Jalankan:
php artisan migrate:status
🎯 Workflow Aplikasi
┌─────────────────┐
│ Public Website │
│ (Upload/View) │
└────────┬────────┘
│
↓
┌─────────────────┐
│ Admin Login │
│ (Protected) │
└────────┬────────┘
│
Login Success
│
↓
┌─────────────────────────────────────┐
│ Admin Dashboard │
├─────────────────────────────────────┤
│ • Kelola Admin │
│ • Upload & Klasifikasi │
│ • Riwayat Klasifikasi │
│ • Statistik Sistem │
└────────┬────────────────────────────┘
│
Logout
│
↓
Back to Login
📋 Admin Responsibilities
Admin bertanggung jawab untuk:
- User Management - Tambah/edit/hapus admin
- Uploads - Upload gambar tomat & klasifikasi
- History - Monitor semua klasifikasi
- Statistics - Lihat statistik sistem
🔧 Kustomisasi
Ubah password requirement
File: app/Http/Controllers/AdminController.php
'password' => 'required|string|min:6', // Ubah min:6 ke min:8, dll
Ubah login session timeout
File: config/session.php
'lifetime' => 120, // Default 120 menit
Ubah table name atau columns
Update di:
User.phpmodel- Migration files
- AdminController.php
📞 Support
Jika ada masalah:
- Check file
ADMIN_ONLY_SETUP.md(ini file) - Check logs:
storage/logs/laravel.log - Debug dengan
php artisan tinker - Review
AdminController.php&UploadController.php
Status: ✅ Admin-Only System
Last Updated: February 2026
Version: 1.0
🎓 Quick Commands Reference
# Migrate database
php artisan migrate
# Start server
php artisan serve
# Debug dengan tinker
php artisan tinker
# View users
>>> User::all()
# Find user by email
>>> User::where('email', 'admin@gmail.com')->first()
# Create user
>>> User::create(['name' => 'Admin', 'email' => 'a@g.com', 'password' => Hash::make('pass'), 'role' => 'admin'])
# Clear app cache
php artisan cache:clear
# Clear config cache
php artisan config:clear
# View routes
php artisan route:list
Selamat! Aplikasi siap untuk development sebagai admin-only system. 🎉