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'); } }