89 lines
2.6 KiB
PHP
89 lines
2.6 KiB
PHP
<?php
|
|
|
|
namespace App\Http\Controllers;
|
|
|
|
use App\Models\Pengaturan;
|
|
use Illuminate\Http\Request;
|
|
use Illuminate\Support\Facades\Auth;
|
|
use Illuminate\Support\Facades\Hash;
|
|
|
|
class AccountController extends Controller
|
|
{
|
|
/**
|
|
* Halaman My Profile
|
|
*/
|
|
public function profile()
|
|
{
|
|
$user = Auth::user();
|
|
return view('account.profile', compact('user'));
|
|
}
|
|
|
|
/**
|
|
* Update Data Profil (Nama, Username, Alamat, & Password)
|
|
*/
|
|
public function updateProfile(Request $request)
|
|
{
|
|
$user = Auth::user();
|
|
|
|
$request->validate([
|
|
'nama_lengkap' => 'required|string|max:255',
|
|
'username' => 'required|string|alpha_dash|unique:users,username,' . $user->id,
|
|
'alamat' => 'nullable|string',
|
|
'password_baru' => 'nullable|min:8|confirmed',
|
|
], [
|
|
'username.unique' => 'Username sudah digunakan.',
|
|
'password_baru.confirmed' => 'Konfirmasi password baru tidak cocok.'
|
|
]);
|
|
|
|
// Update data dasar
|
|
$user->nama_lengkap = $request->nama_lengkap;
|
|
$user->username = $request->username;
|
|
$user->alamat = $request->alamat;
|
|
|
|
// Update password jika diisi
|
|
if ($request->filled('password_baru')) {
|
|
$user->password = Hash::make($request->password_baru);
|
|
}
|
|
|
|
$user->save();
|
|
|
|
return back()->with('success', 'Profil Anda berhasil diperbarui!');
|
|
}
|
|
|
|
/**
|
|
* Halaman Account Settings (PIN Pakar)
|
|
*/
|
|
public function settings()
|
|
{
|
|
$user = Auth::user();
|
|
$pinPakar = Pengaturan::where('nama_pengaturan', 'pin_pakar')->first();
|
|
|
|
return view('account.settings', compact('user', 'pinPakar'));
|
|
}
|
|
|
|
/**
|
|
* Update PIN Pakar (Dibatasi hanya untuk Admin)
|
|
*/
|
|
public function updatePin(Request $request)
|
|
{
|
|
// Proteksi tambahan: hanya role admin yang boleh ubah PIN
|
|
if (Auth::user()->role !== 'admin') {
|
|
return back()->with('error', 'Hanya Admin yang dapat mengubah PIN Perbandingan.');
|
|
}
|
|
|
|
$request->validate([
|
|
'pin_baru' => 'required|numeric|digits:6',
|
|
], [
|
|
'pin_baru.digits' => 'PIN harus berupa 6 digit angka.'
|
|
]);
|
|
|
|
// PERBAIKAN: Gunakan updateOrCreate agar otomatis membuat data jika belum ada
|
|
Pengaturan::updateOrCreate(
|
|
['nama_pengaturan' => 'pin_pakar'], // Kriteria pencarian
|
|
['nilai_pengaturan' => $request->pin_baru] // Data yang diisi/diupdate
|
|
);
|
|
|
|
return back()->with('success', 'PIN Keamanan Pakar berhasil diperbarui!');
|
|
}
|
|
}
|