Hi thanks for your answer.
i'll show you.
<?php
namespace App\Policies;
use App\Models\User;
use Illuminate\Auth\Access\HandlesAuthorization;
class UserPolicy
{
use HandlesAuthorization;
/**
* Determine whether the user can view any models.
*
* @param User $user
* @return mixed
*/
public function viewAny(User $user)
{
return true;
}
/**
* Determine whether the user can view the model.
*
* @param User $user
* @param User $model
* @return mixed
*/
public function view(User $user, User $model)
{
return true;
}
/**
* Determine whether the user can create models.
*
* @param User $user
* @return mixed
*/
public function create(User $user)
{
//
}
/**
* Determine whether the user can update the model.
*
* @param User $user
* @param User $model
* @return mixed
*/
public function update(User $user, User $model)
{
return true;
}
/**
* Determine whether the user can delete the model.
*
* @param User $user
* @param User $model
* @return mixed
*/
public function delete(User $user, User $model)
{
//
}
/**
* Determine whether the user can restore the model.
*
* @param User $user
* @param User $model
* @return mixed
*/
public function restore(User $user, User $model)
{
//
}
/**
* Determine whether the user can permanently delete the model.
*
* @param User $user
* @param User $model
* @return mixed
*/
public function forceDelete(User $user, User $model)
{
//
}
}
The AuthServiceProvider :
<?php
namespace App\Providers;
use App\Models\User;
use App\Policies\UserPolicy;
use Illuminate\Foundation\Support\Providers\AuthServiceProvider as ServiceProvider;
class AuthServiceProvider extends ServiceProvider
{
/**
* The policy mappings for the application.
*
* @var array
*/
protected $policies = [
User::class => UserPolicy::class
];
/**
* Register any authentication / authorization services.
*
* @return void
*/
public function boot()
{
$this->registerPolicies();
//
}
}
And my Controller :
<?php
namespace App\Http\Controllers\User;
use App\Http\Controllers\HomeController as Controller;
use App\Http\Requests\StoreUser;
use App\Models\User;
use Faker\Factory;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\Hash;
use Illuminate\View\View;
class UserController extends Controller
{
public function __construct()
{
parent::__construct();
$this->authorizeResource(User::class, 'users');
}
/**
* Liste de tous les utilisateurs
* @return \Illuminate\Contracts\View\Factory|View
*/
public function index()
{
$users = User::All();
return view('users.listing', [
'users' => $users
]);
}
public function create()
{
return view('users.add');
}
public function store(StoreUser $request)
{
$request->validated();
$datas = $request->except(['_token']);
$datas['password'] = Hash::make($datas['password']);
$datas['email'] = Factory::create()->safeEmail;
$user = new User();
$user->fill($datas);
$user->save();
return redirect()->route('users.index')->with('success', 'L\'utilisateur a bien été ajouté.');
}
/**
* Form Modifie un utilisateur
* @param $id
* @return \Illuminate\Contracts\View\Factory|View
*/
public function edit($id)
{
$user = User::findOrFail($id);
return view('users.update', [
'user' => $user
]);
}
public function update(StoreUser $request, $user)
{
/** @var User $user */
$userData = User::findOrFail($user);
$request->validated();
$datas = $request->except(['_token', '_method', 'password_confirmation']);
if ($request->has('password') && $request->input('password') !== null) {
$datas['password'] = Hash::make($datas['password']);
} else {
unset($datas['password']);
}
$userData->fill($datas);
$userData->update();
$request->session()->flash('success', 'Mise à jour effectuée.');
return redirect()->route('users.edit', ['user' => $userData->id])->with('success', 'L\'utlisateur a été modifié.');
}
/**
* Suppression d'un utilisateur
* @param $id
* @param Request $request
* @return \Illuminate\Http\RedirectResponse
*/
public function destroy($id, Request $request)
{
try {
User::findOrFail($id)->delete();
return redirect()->route('users.index')->with('success', 'L\'utilisateur a bien été supprimé.');
} catch (\Exception $exception) {
return redirect()->route('users.index')->with('success', 'Une erreur est survenue : '.$exception->getMessage());
}
}
}