Step1: composer create-project laravel/laravel canpac
Step2: cd canpac
Step3: composer require laravel/ui
Step4: php artisan ui bootstrap --auth
Step5: composer require laravel-frontend-presets/material-dashboard
Step6: php artisan ui material
Step7: composer dump-autoload
Step8: php artisan migrate
Step9: php artisan db:seed
Step10: php artisan storage:link
Step11: php artisan serve
Step12: composer require santigarcor/laratrust
Step13: php artisan vendor:publish --tag=laratrust-assets --force
Step14: php artisan optimize:clear
Step15: php artisan laratrust:setup
Step16: composer dump-autoload
Step17: php artisan migrate
Step18: php artisan laratrust:seeder
Step19: php artisan vendor:publish --tag="laratrust-seeder"
Step20: composer dump-autoload
Step21: php artisan db:seed --class=LaratrustSeeder
Step22: php artisan serve
Step23: npm install
npm run dev
http://*****/laratrust/roles-assignment
******************************************************************
User Model
Web.php
<?php
use Illuminate\Support\Facades\Route;
use App\Http\Controllers\DashboardController;
use App\Http\Controllers\ProfileController;
use App\Http\Controllers\RegisterController;
use App\Http\Controllers\SessionsController;
Route::get('/', function () { return redirect('sign-in');})->middleware('guest');
Route::get('/dashboard', [DashboardController::class, 'index'])->middleware('auth')->name('dashboard');
Route::get('sign-up', [RegisterController::class, 'create'])->middleware('guest')->name('register');
Route::post('sign-up', [RegisterController::class, 'store'])->middleware('guest');
Route::get('sign-in', [SessionsController::class, 'create'])->middleware('guest')->name('login');
Route::post('sign-in', [SessionsController::class, 'store'])->middleware('guest');
Route::post('verify', [SessionsController::class, 'show'])->middleware('guest');
Route::post('reset-password', [SessionsController::class, 'update'])->middleware('guest')->name('password.update');
Route::get('verify', function () { return view('sessions.password.verify'); })->middleware('guest')->name('verify');
Route::get('/reset-password/{token}', function ($token) { return view('sessions.password.reset', ['token' => $token]); })->middleware('guest')->name('password.reset');
Route::post('sign-out', [SessionsController::class, 'destroy'])->middleware('auth')->name('logout');
Route::get('profile', [ProfileController::class, 'create'])->middleware('auth')->name('profile');
Route::post('user-profile', [ProfileController::class, 'update'])->middleware('auth');
Route::group(['middleware' => 'auth'], function () {
Route::get('billing', function () { return view('pages.billing'); })->name('billing');
Route::get('tables', function () { return view('pages.tables'); })->name('tables');
Route::get('rtl', function () { return view('pages.rtl'); })->name('rtl');
Route::get('virtual-reality', function () { return view('pages.virtual-reality'); })->name('virtual-reality');
Route::get('notifications', function () { return view('pages.notifications'); })->name('notifications');
Route::get('static-sign-in', function () { return view('pages.static-sign-in'); })->name('static-sign-in');
Route::get('static-sign-up', function () { return view('pages.static-sign-up'); })->name('static-sign-up');
Route::get('user-management', function () { return view('pages.laravel-examples.user-management');})->name('user-management');
Route::get('user-profile', function () { return view('pages.laravel-examples.user-profile');})->name('user-profile');
});
*********************************************************************************
Laratrust->layout.blade.php
<x-layout bodyClass="g-sidenav-show bg-gray-200">
<x-navbars.sidebar activePage="roles-permissions"></x-navbars.sidebar>
<div class="main-content position-relative max-height-vh-100 h-100 border-radius-lg ">
<!-- Navbar -->
<x-navbars.navs.auth titlePage="Roles and Permissions"></x-navbars.navs.auth>
<!-- End Navbar -->
<link href="{{ mix('laratrust.css', 'vendor/laratrust') }}" rel="stylesheet">
<script src="https://cdn.jsdelivr.net/gh/alpinejs/alpine@v2.x.x/dist/alpine.min.js" defer> </script>
<div class="container-fluid py-4">
<div class="row">
<div class="col-12">
<div class="card my-4">
<div class="card-header p-0 position-relative mt-n4 mx-3 z-index-2">
<div class="bg-gradient-primary shadow-primary border-radius-lg pt-4 pb-3">
<div class="flex items-center justify-center h-16">
<div class="flex items-center">
<div class="flex items-baseline">
<a href="{{config('laratrust.panel.go_back_route')}}" class="nav-button">←
Go Back</a>
<a href="{{ route('laratrust.roles-assignment.index') }}"
class="ml-4 {{ request()->is('*roles-assignment*') ? 'nav-button-active' : 'nav-button' }}">
Roles & Permissions Assignment
</a>
<a href="{{route('laratrust.roles.index')}}"
class="ml-4 {{ request()->is('*roles') ? 'nav-button-active' : 'nav-button' }}">
Roles
</a>
<a href="{{ route('laratrust.permissions.index') }}"
class="ml-4 {{ request()->is('*permissions*') ? 'nav-button-active' : 'nav-button' }}">
Permissions
</a>
</div>
</div>
</div>
</div>
</div>
<div class="card-body p-3 pb-0">
@foreach (['error', 'warning', 'success'] as $msg)
@if(Session::has('laratrust-' . $msg))
<div class="alert alert-{{ $msg }} alert-dismissible text-white" role="alert">
<span class="text-sm">{{ Session::get('laratrust-' . $msg) }}</span>
<button type="button" class="btn-close text-lg py-3 opacity-10" data-bs-dismiss="alert"
aria-label="Close"><span aria-hidden="true">×</span>
</button>
</div>
@endif
@endforeach
</div>
<div class="card-body px-0 pb-2">
@yield('content')
</div>
</div>
</div>
</div>
</div>
<x-footers.auth></x-footers.auth>
</div>
<x-plugins></x-plugins>
</x-layout>
**********************************************************
Laratrust->permission->index.blade.php
@extends('laratrust::panel.layout')
@section('title', 'Permissions')
@section('content')
@if (config('laratrust.panel.create_permissions'))
<div class=" me-3 my-3 text-end">
<a href="{{route('laratrust.permissions.create')}}" class="btn bg-gradient-dark mb-0">+ New Permission</a>
</div>
@endif
<div class="table-responsive p-0">
<table class="table align-items-center mb-0">
<thead>
<tr>
<th class="text-uppercase text-secondary text-xxs font-weight-bolder opacity-7">Id</th>
<th class="text-uppercase text-secondary text-xxs font-weight-bolder opacity-7">Name/Code</th>
<th class="text-uppercase text-secondary text-xxs font-weight-bolder opacity-7">Display Name</th>
<th class="text-uppercase text-secondary text-xxs font-weight-bolder opacity-7">Description</th>
<th class="text-uppercase text-secondary text-xxs font-weight-bolder opacity-7"></th>
</tr>
</thead>
<tbody>
@foreach ($permissions as $permission)
<tr>
<td>
<div class="d-flex px-2 py-1">
<div class="d-flex flex-column justify-content-center">
<p class="mb-0 text-sm">{{$permission->getKey()}}</p>
</div>
</div>
</td>
<td>
<div class="d-flex flex-column justify-content-center">
<h6 class="mb-0 text-sm">{{$permission->name}}</h6>
</div>
</td>
<td>
<div class="d-flex flex-column justify-content-center">
<h6 class="mb-0 text-sm">{{$permission->display_name}}</h6>
</div>
</td>
<td>
<p class="text-xs text-secondary mb-0">{{$permission->description}}</p>
</td>
<td class="align-middle">
<a rel="tooltip" class="btn btn-success btn-link" href="{{route('laratrust.permissions.edit', $permission->getKey())}}" data-original-title="" title="">
<i class="material-icons">edit</i>
<div class="ripple-container"></div>
</a>
</td>
</tr>
@endforeach
</tbody>
</table>
</div>
{{ $permissions->links('laratrust::panel.pagination') }}
@endsection
*********************************************************************
Laratrust->Role->index.blade
@extends('laratrust::panel.layout')
@section('title', 'Roles')
@section('content')
@if (config('laratrust.panel.create_permissions'))
<div class=" me-3 my-3 text-end">
<a href="{{route('laratrust.roles.create')}}" class="btn bg-gradient-dark mb-0">+ New Role</a>
</div>
@endif
<div class="table-responsive p-0">
<table class="table align-items-center mb-0">
<thead>
<tr>
<th class="text-uppercase text-secondary text-xxs font-weight-bolder opacity-7">Id</th>
<th class="text-uppercase text-secondary text-xxs font-weight-bolder opacity-7">Name/Code</th>
<th class="text-uppercase text-secondary text-xxs font-weight-bolder opacity-7">Display Name</th>
<th class="text-uppercase text-secondary text-xxs font-weight-bolder opacity-7">Description Permission
</th>
<th class="text-uppercase text-secondary text-xxs font-weight-bolder opacity-7"></th>
</tr>
</thead>
<tbody>
@foreach ($roles as $role)
<tr>
<td>
<div class="d-flex px-2 py-1">
<div class="d-flex flex-column justify-content-center">
<p class="mb-0 text-sm">{{$role->getKey()}}</p>
</div>
</div>
</td>
<td>
<div class="d-flex flex-column justify-content-center">
<h6 class="mb-0 text-sm">{{$role->name}}</h6>
</div>
</td>
<td>
<div class="d-flex flex-column justify-content-center">
<h6 class="mb-0 text-sm">{{$role->display_name}}</h6>
</div>
</td>
<td>
<p class="text-xs text-secondary mb-0">
{{$role->description}} ({{$role->permissions_count}})</p>
</td>
<td class="justify-content-center" style="display:flex ">
@if (\Laratrust\Helper::roleIsEditable($role))
<a rel="tooltip" class="btn btn-success btn-link"
href="{{route('laratrust.roles.edit', $role->getKey())}}">Edit</a>
<form action="{{route('laratrust.roles.destroy', $role->getKey())}}" method="POST"
onsubmit="return confirm('Are you sure you want to delete the record?');">
@method('DELETE')
@csrf
<button type="submit" class="btn btn-danger btn-link" data-original-title="" title="">
<i class="material-icons">close</i>
<div class="ripple-container"></div>
</button>
</form>
@else
<a rel="tooltip" class="btn btn-success btn-link" href="{{route('laratrust.roles.show', $role->getKey())}}">Details</a>
@endif
</td>
</tr>
@endforeach
</tbody>
</table>
</div>
{{ $roles->links('laratrust::panel.pagination') }}
@endsection