MIF_E31220412/app/Http/Controllers/ProfileController.php

77 lines
2.3 KiB
PHP

<?php
namespace App\Http\Controllers;
use App\Http\Controllers\Controller;
use Illuminate\Http\Request;
use App\Models\User;
use Illuminate\Support\Facades\Hash;
use Illuminate\Support\Facades\Auth;
use Illuminate\Validation\Rule;
class ProfileController extends Controller
{
public function index()
{
$user = Auth::user();
return view('profile', compact('user'));
}
public function update(Request $request)
{
$user = Auth::user();
// Validasi input
$request->validate([
'username' => [
'required',
'string',
'max:255',
Rule::unique('users')->ignore($user->id)
],
'email' => [
'required',
'string',
'email',
'max:255',
Rule::unique('users')->ignore($user->id)
],
'phone' => ['required', 'string', 'max:15'],
'address' => ['required', 'string', 'max:255'],
'password' => ['nullable', 'string', 'min:8'],
], [
'username.required' => 'Username harus diisi',
'username.unique' => 'Username sudah digunakan',
'email.required' => 'Email harus diisi',
'email.email' => 'Format email tidak valid',
'email.unique' => 'Email sudah digunakan',
'phone.required' => 'Nomor telepon harus diisi',
'address.required' => 'Alamat harus diisi',
'password.min' => 'Password minimal 8 karakter',
]);
try {
// Update data user
$userData = [
'username' => $request->username,
'email' => $request->email,
'no_telp' => $request->phone,
'alamat' => $request->address,
];
// Update password jika diisi
if ($request->filled('password')) {
$userData['password'] = Hash::make($request->password);
}
$user->update($userData);
return redirect()->route('profile.index')
->with('success', 'Profil berhasil diperbarui');
} catch (\Exception $e) {
return redirect()->back()
->with('error', 'Terjadi kesalahan saat memperbarui profil')
->withInput();
}
}
}