- Changed view extends from "admin.main" to "administrator.layout.master" across multiple files. - Updated route names in admin.php and administrator.php to reflect new structure for user, order, invoice, and other management functionalities. - Adjusted view includes to point to the new directory structure for blocks and components. - Ensured all permission checks remain intact while refactoring the views.
237 lines
7.1 KiB
PHP
237 lines
7.1 KiB
PHP
<?php
|
|
|
|
namespace App\Http\Controllers\admin;
|
|
|
|
use App\Http\Controllers\Controller;
|
|
use App\Models\User;
|
|
use Carbon\Carbon;
|
|
use Exception;
|
|
use Illuminate\Http\Request;
|
|
use Illuminate\Support\Facades\DB;
|
|
use Illuminate\Support\Facades\Hash;
|
|
use Illuminate\Support\Facades\Validator;
|
|
use Spatie\Permission\Models\Role;
|
|
|
|
class UserController extends Controller
|
|
{
|
|
public function index()
|
|
{
|
|
$title = 'Administrators';
|
|
$users = User::with('roles')->paginate(15);
|
|
|
|
return view('administrator.pages.user.index', compact('title', 'users'));
|
|
}
|
|
|
|
public function store(Request $request)
|
|
{
|
|
|
|
|
|
$request->validate(
|
|
[
|
|
'username' => 'required',
|
|
'administrator_roles' => 'required',
|
|
'firstname' => 'required',
|
|
'email' => 'required',
|
|
'password' => 'required',
|
|
'password_confirm' => 'required',
|
|
],
|
|
[
|
|
'username' => [
|
|
'required' => 'Please enter Username'
|
|
],
|
|
'administrator_roles' => [
|
|
'required' => 'Please select roles'
|
|
],
|
|
'firstname' => [
|
|
'required' => 'Please enter your firstname'
|
|
],
|
|
'email' => [
|
|
'required' => 'Please enter your email'
|
|
],
|
|
'password' => [
|
|
'required' => 'Please enter Password'
|
|
],
|
|
'password_confirm' => [
|
|
'required' => 'Please enter Confirm Password'
|
|
]
|
|
]);
|
|
|
|
|
|
$CheckUsername = User::where('username', $request->username)->first();
|
|
|
|
if ($CheckUsername) {
|
|
return back()->withErrors('Username already exists');
|
|
}
|
|
|
|
$CheckEmail = User::where('email', $request->email)->first();
|
|
|
|
if ($CheckEmail) {
|
|
return back()->withErrors('Email already exists');
|
|
}
|
|
|
|
if ($request->password !== $request->password_confirm) {
|
|
return back()->withErrors('Incorrect Confirm Password');
|
|
}
|
|
|
|
$data = [
|
|
'firstname' => $request->firstname,
|
|
'lastname' => $request->lastname,
|
|
'username' => $request->username,
|
|
'email' => $request->email,
|
|
'password' => Hash::make($request->password),
|
|
'email_verified_at' => Carbon::now(),
|
|
];
|
|
// dd($data);
|
|
try {
|
|
|
|
DB::beginTransaction();
|
|
|
|
$user = User::create($data);
|
|
|
|
$user->assignRole($request->administrator_roles);
|
|
|
|
DB::commit();
|
|
|
|
} catch (Exception $exception) {
|
|
DB::rollBack();
|
|
return back()->withErrors($exception->getMessage());
|
|
}
|
|
return redirect()->route('administrator.pages.user.index')->with('success', 'New account added successfully');
|
|
}
|
|
|
|
public function create()
|
|
{
|
|
$roles = Role::select('name')->get();
|
|
$title = "Add new Administrator";
|
|
|
|
return view('administrator.pages.user.add', compact('roles', 'title'));
|
|
|
|
}
|
|
|
|
public function edit(Request $request)
|
|
{
|
|
$request->validate(
|
|
[
|
|
'id' => 'required|numeric|not__in:0'
|
|
],
|
|
[
|
|
'id' => [
|
|
'required' => 'Please choose Administrator'
|
|
]
|
|
]
|
|
);
|
|
$user = User::with('roles')->find($request->id);
|
|
|
|
if (!$user) {
|
|
return back()->withErrors("Invalidate Request");
|
|
}
|
|
$roles = Role::select('name')->get();
|
|
$title = 'Edit admin information';
|
|
|
|
return view('administrator.pages.user.edit', compact('user', 'title', 'roles'));
|
|
}
|
|
|
|
public function update(Request $request)
|
|
{
|
|
$validator = Validator::make($request->all(),
|
|
[
|
|
'username' => 'required',
|
|
'administrator_roles' => 'required',
|
|
'firstname' => 'required',
|
|
'email' => 'required',
|
|
'id' => 'required|numeric|not__in:0'
|
|
],
|
|
[
|
|
'username' => [
|
|
'required' => 'Please enter Username'
|
|
],
|
|
'administrator_roles' => [
|
|
'required' => 'Please select roles'
|
|
],
|
|
'firstname' => [
|
|
'required' => 'Please enter your firstname'
|
|
],
|
|
'email' => [
|
|
'required' => 'Please enter your email'
|
|
],
|
|
'id' => [
|
|
'required' => 'Invalidate request'
|
|
],
|
|
]
|
|
);
|
|
if ($validator->fails()) {
|
|
return back()->withErrors($validator);
|
|
}
|
|
$user = User::with('roles')->find($request->id);
|
|
if (!$user) {
|
|
return back()->withErrors('Invalidate request');
|
|
}
|
|
$data = $request->except(['_token', '_method', 'password', 'password_confirm_2', 'password_confirm', 'id']);
|
|
|
|
if (!empty($request->password_confirm_2)) {
|
|
|
|
$validator_2 = Validator::make($request->all(),
|
|
[
|
|
'password' => 'required',
|
|
'password_confirm' => 'required',
|
|
],
|
|
[
|
|
'password.required' => 'Please enter your password',
|
|
'password_confirm.required' => 'Please enter password confirm 2'
|
|
]
|
|
);
|
|
|
|
if ($validator_2->fails()) {
|
|
return back()->withErrors($validator_2);
|
|
}
|
|
if (!Hash::check($request->password_confirm_2, $user->password)) {
|
|
return back()->withErrors("Incorrect password");
|
|
}
|
|
if (!empty($request->password_confirm) && $request->password_confirm !== $request->password) {
|
|
return back()->withErrors("Incorrect Confirm Password");
|
|
}
|
|
$data['password'] = Hash::make($request->password_confirm);
|
|
}
|
|
|
|
try {
|
|
DB::beginTransaction();
|
|
$user->update($data);
|
|
$user->syncRoles($request->administrator_roles);
|
|
DB::commit();
|
|
} catch (Exception $error) {
|
|
DB::rollBack();
|
|
return back()->withErrors($error->getMessage());
|
|
}
|
|
return back()->with('success', 'Update new information for administrator account success');
|
|
}
|
|
|
|
public function destroy(Request $request)
|
|
{
|
|
$request->validate(
|
|
[
|
|
'id' => 'required'
|
|
],
|
|
[
|
|
'id' => [
|
|
'required' => 'Please choose Administrator'
|
|
]
|
|
]
|
|
);
|
|
$user = User::with('roles')->find($request->id);
|
|
|
|
if (!$user) {
|
|
return back()->withErrors("Invalidate Request");
|
|
}
|
|
|
|
if ((int)$request->id === 1) {
|
|
return back()->withErrors("Invalidate Request");
|
|
}
|
|
|
|
$user->removeRole($user->roles->first()->name);
|
|
$user->delete();
|
|
|
|
return back()->with('success', 'Delete success');
|
|
}
|
|
|
|
}
|