Jaga-Jalan/app/Http/Controllers/UserController.php

129 lines
3.6 KiB
PHP

<?php
namespace App\Http\Controllers;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\Auth;
use Illuminate\Support\Facades\Hash;
use App\Models\Admin;
use App\Models\User;
class UserController extends Controller
{
public function profile()
{
$user = Auth::user();
return view('profile.index', compact('user'));
}
public function updateProfile(Request $request)
{
$user = Auth::user();
$request->validate([
'name' => 'required|string|max:255',
'email' => 'required|string|email|max:255|unique:admins,email,' . $user->id,
'alamat' => 'required|string',
'telepon' => 'required|string',
]);
Admin::where('id', $user->id)->update([
'name' => $request->name,
'email' => $request->email,
'alamat' => $request->alamat,
'telepon' => $request->telepon,
]);
return back()->with('success', 'Profile berhasil diperbarui.');
}
public function updatePassword(Request $request)
{
$request->validate([
'current_password' => 'required|string',
'password' => 'required|string|min:8|confirmed',
]);
$user = Auth::user();
if (!Hash::check($request->current_password, $user->password)) {
return back()->withErrors(['current_password' => 'Password saat ini tidak sesuai.']);
}
Admin::where('id', $user->id)->update([
'password' => Hash::make($request->password)
]);
return back()->with('success', 'Password berhasil diperbarui.');
}
// Admin management methods
public function index()
{
$users = User::where('tipe_pengguna', 'user')->get();
return view('users.index', compact('users'));
}
public function create()
{
return view('users.create');
}
public function store(Request $request)
{
$request->validate([
'name' => 'required|string|max:255',
'email' => 'required|string|email|max:255|unique:admins',
'password' => 'required|string|min:8|confirmed',
'alamat' => 'required|string',
'telepon' => 'required|string',
]);
Admin::create([
'name' => $request->name,
'email' => $request->email,
'password' => Hash::make($request->password),
'alamat' => $request->alamat,
'telepon' => $request->telepon,
'tipe_pengguna' => 'user',
]);
return redirect()->route('users.index')
->with('success', 'User berhasil ditambahkan.');
}
public function edit(Admin $user)
{
return view('users.edit', compact('user'));
}
public function update(Request $request, Admin $user)
{
$request->validate([
'name' => 'required|string|max:255',
'email' => 'required|string|email|max:255|unique:admins,email,' . $user->id,
'alamat' => 'required|string',
'telepon' => 'required|string',
]);
Admin::where('id', $user->id)->update([
'name' => $request->name,
'email' => $request->email,
'alamat' => $request->alamat,
'telepon' => $request->telepon,
]);
return redirect()->route('users.index')
->with('success', 'User berhasil diperbarui.');
}
public function destroy($id)
{
$user = User::find($id);
if ($user) {
$user->delete();
return response()->json(['success' => true]);
}
return response()->json(['success' => false]);
}
}