Update source into github
This commit is contained in:
@@ -0,0 +1,236 @@
|
||||
<?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('admin.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('admin.user.index')->with('success', 'New account added successfully');
|
||||
}
|
||||
|
||||
public function create()
|
||||
{
|
||||
$roles = Role::select('name')->get();
|
||||
$title = "Add new Administrator";
|
||||
|
||||
return view('admin.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('admin.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');
|
||||
}
|
||||
|
||||
}
|
||||
Reference in New Issue
Block a user