Home
Button Mobile Webdesign em Foco
Newsletter Webdesign em Foco
Support Webdesign em Foco
Contribuition Webdesign em Foco
Doe para a Webdesign em Foco
Suporte da Webdesign em Foco
Fechar

Cadastro e Login com Laravel - #04 Níveis de Acesso

10/07/2021

Na aula de hoje aprenderemos como estabelecer permissões e níveis de acesso de forma simplificado utilizando Laravel e Spatie.

Usando Spatie com Laravel

Para facilitar o uso de níveis de acesso no Laravel, usaremos a lib Spatie.

composer require spatie/laravel-permission
php artisan vendor:publish --provider="Spatie\Permission\PermissionServiceProvider"
php artisan optimize:clear
php artisan migrate

app/Models/User.php

Vamos adicionar agora as permissões no model de usuário:

<?php

namespace App\Models;

use Illuminate\Contracts\Auth\MustVerifyEmail;
use Illuminate\Database\Eloquent\Factories\HasFactory;
use Illuminate\Foundation\Auth\User as Authenticatable;
use Illuminate\Notifications\Notifiable;
use Spatie\Permission\Traits\HasRoles;

class User extends Authenticatable
{
    use HasFactory, Notifiable, HasRoles;

Para criar permissões podemos usar comandos do Laravel e Spatie no terminal de comandos:

php artisan permission:create-permission "admin"
php artisan permission:create-permission "user"

app/Http/Controllers/Auth/RegisteredUserController.php

No controller de inserção de usuários, assim que criarmos um novo usuário já vamos setar a permissão para ele:

 public function store(Request $request)
{
    $request->validate([
        'name' => 'required|string|max:255',
        'email' => 'required|string|email|max:255|unique:users',
        'password' => ['required', 'confirmed', Rules\Password::defaults()],
    ]);

    $user = User::create([
        'name' => $request->name,
        'email' => $request->email,
        'password' => Hash::make($request->password),
    ])->givePermissionTo('user');

    event(new Registered($user));

    Auth::login($user);

    return redirect(RouteServiceProvider::HOME);
}

resources/views/dashboard.blade.php

Para limitar o acesso dos usuários de acordo com a permissão podemos usar a diretiva @can:

<div class="p-6 bg-white border-b border-gray-200">
    @can('user')
        Dados do usuário
    @elsecan('admin')
        Somente o administrador pode isso
    @endcan
</div>

Para testar não esqueça de rodar no terminal o comando do servidor Laravel:

php artisan serve

Sucesso nos códigos e na vida!

Precisa de aulas particulares? webdesignemfoco@gmail.com

Receba as aulas da Webdesign em Foco em Seu Email
Suporte Webdesign em Foco

Posts Relacionados

Cadastro e Login com Laravel - #03 Entendendo o Sistema
Nesse tutorial vamos passar pelas rotas e diretórios do Laravel Breeze para entender um pouco mais sobre o kit de autenticação do framework.
Saiba mais!
Cadastro e Login com Laravel - #05 Customizações
Nesse tutorial vamos aprender como fazer algumas customizações no seu sistema de login para deixá-lo com a aparência desejada.
Saiba mais!
Crud
Nesse curso aprenderemos como desenvolver uma ClassCrud com conexão ao banco de dados mysql através dos conectores PDO e MYSQLi.
Saiba mais!