Views
Vejamos duas views como exemplo das views do pacote.
Nosso pacote conta com um layout customizado e também com as views home.blade.php e welcome.blade.php customizadas.
View index típica
Controle de acesso geral
O controle de acesso geral é para as 3 roles: super, manager e user
Controle de acesso específico
Mas o controle para todos os botões (new, view, edit e delete) e do form Search é permitido apenas para os users: super e manager. O user com role user não tem acesso a estes itens.
Customização
Logo que o ribafs/laravel-acl é instalado, publicado e inteiramente configurado, todas as permissões nas views estão assim
Assim somente um super ou admin tem acesso a tudo.
Então precisará ajustar de acordo com suas necessidades e usuários existentes.
Necessidades e criatividade
Estas motivarão você para as customizações.
Permissões default
Por padrão eu pensei assim nas permissões de cada role:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73 | - super: pode tudo, sem exceção no aplicativo
- admin: pode tudo mas somente nas tabelas administrativas: users, roles e permissions
- manager: pode tudo nas tabelas tipo de negócio: clients
- user: pode somente logar e acessar o index de clients e com restrições
@extends('layouts.app')
@section('content')
<div class="container">
<div class="row">
@include('includes.sidebar')
@role('super', 'manager', 'user')
<div class="col-md-9">
<div class="card">
@role('super', 'manager')
<div class="card-header">Clients</div>
<div class="card-body">
<a href="{{ url('/admin/clients/create') }}" class="btn btn-success btn-sm" title="Add New Client">
<i class="fa fa-plus" aria-hidden="true"></i> Add New
</a>
<form method="GET" action="{{ url('/admin/clients') }}" accept-charset="UTF-8" class="form-inline my-2 my-lg-0 float-right" role="search">
<div class="input-group">
<input type="text" class="form-control" name="search" placeholder="Search..." value="{{ request('search') }}">
<span class="input-group-append">
<button class="btn btn-secondary" type="submit">
<i class="fa fa-search"></i>
</button>
</span>
</div>
</form>
@endrole
<br/>
<br/>
<div class="table-responsive">
<table class="table table-sm">
<thead>
<tr>
<th>ID</th><th>Name</th><th>Email</th>@role('super', 'manager')<th>Actions</th>@endrole
</tr>
</thead>
<tbody>
@foreach($clients as $item)
<tr>
<td>{{ $item->id }}</td>
<td>{{ $item->name }}</td><td>{{ $item->email }}</td>
<td>
@role('super', 'manager')
<a href="{{ url('/admin/clients/' . $item->id) }}" title="View Client"><button class="btn btn-info btn-sm"><i class="fa fa-eye" aria-hidden="true"></i> View</button></a>
<a href="{{ url('/admin/clients/' . $item->id . '/edit') }}" title="Edit Client"><button class="btn btn-primary btn-sm"><i class="fa fa-pencil-square-o" aria-hidden="true"></i> Edit</button></a>
<form method="POST" action="{{ url('/admin/clients' . '/' . $item->id) }}" accept-charset="UTF-8" style="display:inline">
{{ method_field('DELETE') }}
{{ csrf_field() }}
<button type="submit" class="btn btn-danger btn-sm" title="Delete Client" onclick="return confirm("Confirm delete?")"><i class="fa fa-trash-o" aria-hidden="true"></i> Delete</button>
</form>
@endrole
</td>
</tr>
@endforeach
</tbody>
</table>
<div class="pagination-wrapper"> {!! $clients->appends(['search' => Request::get('search')])->render() !!} </div>
</div>
</div>
</div>
</div>
@endrole
</div>
</div>
@endsection
|
Uma típica edit.blade.php
Veja que o acesso desta view é somente para os users das roles super e manager. super pode tudo e manager pode tudo na clients.
Se fosse uma edit.blade.php da users, roles ou permissions eu mudaria o controle para:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41 | @role('super', 'admin')
@extends('layouts.app')
@section('content')
<div class="container">
<div class="row">
@include('includes.sidebar')
@role('super', 'manager')
<div class="col-md-9">
<div class="card">
<div class="card-header">Edit Client #{{ $client->id }}</div>
<div class="card-body">
<a href="{{ url('/admin/clients') }}" title="Back"><button class="btn btn-warning btn-sm"><i class="fa fa-arrow-left" aria-hidden="true"></i> Back</button></a>
<br />
<br />
@if ($errors->any())
<ul class="alert alert-danger">
@foreach ($errors->all() as $error)
<li>{{ $error }}</li>
@endforeach
</ul>
@endif
<form method="POST" action="{{ url('/admin/clients/' . $client->id) }}" accept-charset="UTF-8" class="form-horizontal" enctype="multipart/form-data">
{{ method_field('PATCH') }}
{{ csrf_field() }}
@include ('admin.clients.form', ['formMode' => 'edit'])
</form>
</div>
</div>
</div>
@endrole
</div>
</div>
@endsection
|