Je veux que seul l'utilisateur avec le même nom avec l'ID d'url puisse accéder à l'aide de condition if
Exemple
Utilisateur connecté avec le nom jer
Il ne doit accéder à l'URL qu'avec / User-Profile / jer
Et ne pas accéder à une autre page / profil utilisateur / abc qui ne sont pas égaux à son nom
Faire quelque chose comme Exemple:
<a href="/dashboard/User-Profile/{{ Auth::user()->name }}">{{ Auth::user()->name
}}</a>
Comment puis-je comparer {name} de l'url à {auth- > name} ?
Route
Route::get('/User-Profile/{name}/', 'AccountController@index');
Lame
if{id}!=={{auth->name}}
{
Route::get('NoPermission', 'Restriction@index');
}
else
{
Route::get('/User-Profile/{name}/', 'AccountController@index');
}
4 Réponses :
Autorisez l'accès à la page, mais avant d'afficher le contenu, vérifiez si le chemin de l'url est == vers le nom de l'ID.
Vous ne pouvez pas accéder à Auth comme ça dans vos itinéraires, comparez-le plutôt dans votre AccountController:
public function index($name){
if($name != Auth::user->name()) abort(403);
else...
}
Dans un fournisseur de services (peu importe lequel, mais ce serait plus clair si cela était fait dans RouteServiceProvider), ajoutez une liaison de route dans la méthode de démarrage comme documenté dans https://laravel.com/docs/6.x/routing#explicit-binding
{{-- Make sure the link is only visible for authenticated users https://laravel.com/docs/6.x/blade#if-statements --}}
@auth
<a href="{{ route('account_profile', ['name' => auth()->user()->name]) }}</a>
@endauth
En fait, vous pouvez vérifier vos itinéraires comme ceci:
Route::get('/profile/{name}', function(String $name) {
if (!Auth::check() || $name !== Auth::user()->name) {
abort(404);
}
return view("view.auth.profile", ['profile => App\Profile::where('user_id', '=', Auth::id())->first()]);
});
Cependant, si vous utilisez
Route :: get ('/ profile', ' AuthController @ profile ') -> middleware (' auth ');
et utilisez Auth :: user () dans votre contrôleur pour sélectionner le profil correct.
L'avantage ici est que tous les utilisateurs non authentifiés seront automatiquement redirigés vers votre page de connexion, et il n'est pas nécessaire d'inclure le nom sur le lien de votre profil.