CoderFunda
  • Home
  • About us
    • Contact Us
    • Disclaimer
    • Privacy Policy
    • About us
  • Home
  • Php
  • HTML
  • CSS
  • JavaScript
    • JavaScript
    • Jquery
    • JqueryUI
    • Stock
  • SQL
  • Vue.Js
  • Python
  • Wordpress
  • C++
    • C++
    • C
  • Laravel
    • Laravel
      • Overview
      • Namespaces
      • Middleware
      • Routing
      • Configuration
      • Application Structure
      • Installation
    • Overview
  • DBMS
    • DBMS
      • PL/SQL
      • SQLite
      • MongoDB
      • Cassandra
      • MySQL
      • Oracle
      • CouchDB
      • Neo4j
      • DB2
      • Quiz
    • Overview
  • Entertainment
    • TV Series Update
    • Movie Review
    • Movie Review
  • More
    • Vue. Js
    • Php Question
    • Php Interview Question
    • Laravel Interview Question
    • SQL Interview Question
    • IAS Interview Question
    • PCS Interview Question
    • Technology
    • Other

17 May, 2022

limit the view depending on the values - Laravel - Spatie

 Programing Coderfunda     May 17, 2022     Laravel, php     No comments   

I need, depending on the role/permission of each user, to limit the database records that are displayed in the view index.

For example, I need a certain user to only be able to see the records with the "pendiente" value in the "estado" column.

code of my controller index function:

public function index()
    {
        $siniestros = Siniestro::paginate(50);

          //return DB::select('select localidad from siniestros'); //---> Devuelve los datos de la columna estados
    
        
        return view('siniestros.index', compact('siniestros'));

        $now = Carbon::now();
    }

code of my index.blade view

@extends('layouts.app')


@section('content')
 



    <section class="section">
        <div class="section-header">
            <h3 class="page__heading">Siniestros</h3>
        </div>
        <div class="section-body">
            <div class="row">
                <div class="col-lg-12">
                    <div class="card">
                        <div class="card-body">
                
            
                        @can('crear-siniestro')
                        <a class="btn btn-primary" href="{{ route('siniestros.create') }}">Nuevo</a>
                        @endcan
            
                        <table class="table table-sm m-1 p-1 table-bordered table-hover table-striped tablita" style="width:100%">
                                <thead style="background-color:hsl(213, 99%, 49%)">                                     
                                    <th style="display: none;">ID</th>
                                    <th style="color:#fff;">Siniestro</th>
                                    <th style="color:#fff;">Coordinador</th>
                                    <th style="color:#fff;">Actualizado</th>                                    
                                    <th style="color:#fff;">Patente</th>
                                    <th style="color:#fff;">Cliente</th>
                                    <th style="color:#fff;">Fecha ingreso</th>
                                    <th style="color:#fff;">Fecha gestión</th>
                                    <th style="color:#fff;">Captura de pantalla</th>
                                    <th style="color:#fff;">Estado</th>
                                    <th style="color:#fff;">Modalidad</th>
                                    <th style="color:#fff;">Observaciones</th>
                                    @can('derivar-siniestro')
                                    <!-- <th style="color:#fff;">Screenshot</th> -->
                                    <th style="color:#fff;">Dirección</th>
                                    <th style="color:#fff;">Localidad</th>
                                    <th style="color:#fff;">Inspector</th>
                                    <th style="color:#fff;">Motivo</th>
                                    <th style="color:#fff;">Enviar Orden</th>
                                    @endcan
                                    <th style="color:#fff;">Acciones</th>                                                                   
                              </thead>
                              <tbody>
                            @foreach ($siniestros as $siniestro)
                            <tr>
                                <td style="display: none;">{{ $siniestro->id }}</td>                                
                                <td>{{ $siniestro->siniestro }}</td>
                                <td>{{ $siniestro->creator->name }}</td>
                                <td>{{ $siniestro->editor->name }}</td>
                                <td>{{ $siniestro->patente }}</td>
                                <td>{{ $siniestro->cliente }}</td>
                                <td>{{ $siniestro->created_at }}</td>
                                <td>{{ $siniestro->updated_at }}</td>
                                <td><img alt="img" src="/img/{{ $siniestro->imagen }}" width="100px"></td>
                                <td>{{ $siniestro->estado }}</td>
                                <td>{{ $siniestro->modalidad }}</td>
                                <td>{{ $siniestro->observaciones }}</td>
                                @can('derivar-siniestro')
                                <!-- <td><a href="{{ $siniestro->url }}" target="blank_" >Ver documento</a></td> -->
                                <td>{{ $siniestro->direccion }}</td>
                                <td>{{ $siniestro->localidad }}</td>
                                <td>{{ $siniestro->inspector }}</td>
                                <td>{{ $siniestro->motivo }}</td>
                                <td>{{ $siniestro->enviarorden }}</td>
                                @endcan
                                <td>
                                    <form action="{{ route('siniestros.destroy',$siniestro->id) }}" method="POST">                                        
                                        @can('editar-siniestro')
                                        <a class="btn btn-outline-success btn-sm" href="{{ route('siniestros.edit',$siniestro->id) }}">Editar</a>
                                        @endcan
                                        
                                        
                                      
                                        @csrf
                                        @method('DELETE')
                                        @can('borrar-siniestro')
                                        <button type="submit" class="btn btn-outline-danger btn-sm">Borrar</button>
                                        @endcan

                                    </form>
                                    
                                </td>
                            </tr>
                            @endforeach
                            </tbody>
                        </table>

                        <!-- Paginacion a la derecha -->
                        <div class="pagination justify-content-end">
                            {!! $siniestros->links() !!}
                        </div>
                        </div>
                    </div>
                </div>
            </div>
        </div>
    </section>
   

    
@endsection

@section('javas')

<script>
    $(document).ready(function() {
    $('.tablita').DataTable({
        responsive: true,
        processing: true,

        
    });
})
</script>
<!-- DataTables JS -->

<script src="{{ asset('assets/js/jquery.min.js') }}"></script>
<script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/pdfmake/0.1.36/pdfmake.min.js"></script>
<script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/pdfmake/0.1.36/vfs_fonts.js"></script>
<script type="text/javascript" src="https://cdn.datatables.net/v/bs4/jszip-2.5.0/dt-1.11.5/b-2.2.2/b-colvis-2.2.2/b-html5-2.2.2/b-print-2.2.2/r-2.2.9/datatables.min.js"></script>
<script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/twitter-bootstrap/4.6.0/js/bootstrap.min.js"></script>
<script>
        $(function() {
            const languages = {
                'es': 'https://cdn.datatables.net/plug-ins/1.10.19/i18n/Spanish.json'
            };

            $.extend(true, $.fn.dataTable.Buttons.defaults.dom.button, {
                className: 'btn btn-sm'
            })
            $.extend(true, $.fn.dataTable.defaults, {
                responsive: true,
                language: {
                    url: languages['es']
                },
                pageLength: 25,
                dom: 'lBfrtip',
                buttons: [{
                        extend: 'copy',
                        className: 'btn-light',
                        text: 'Copiar',
                        exportOptions: {
                            columns: ':visible'
                        }
                    },
                    {
                        extend: 'csv',
                        className: 'btn-light',
                        text: 'CSV',
                        exportOptions: {
                            columns: ':visible'
                        }
                    },
                    {
                        extend: 'excel',
                        className: 'btn-light',
                        text: 'Excel',
                        exportOptions: {
                            columns: ':visible'
                        }
                    },
                    {
                        extend: 'pdf',
                        className: 'btn-light',
                        text: 'PDF',
                        exportOptions: {
                            columns: ':visible'
                        }
                    },
                    {
                        extend: 'print',
                        className: 'btn-light',
                        text: 'Imprimir',
                        exportOptions: {
                            columns: ':visible'
                        }
                    },
                    {
                        extend: 'colvis',
                        className: 'btn-light',
                        text: 'Visibilidad Columnas',
                        exportOptions: {
                            columns: ':visible'
                        }
                    }
                ]
            });
        });
    </script>

@endsection

Attached screenshot of my index.blade view

index.blade view

Of course I can filter with my DataTable, but the idea is that for security reasons, each user can only view the records according to their "estado"/value

I thank you in advance, and tell me if it is relevant that I attach other information

I need to do this, but in the backend, with the roles/permissions

Model Siniestro.php

<?php

namespace App\Models;

use Illuminate\Database\Eloquent\Factories\HasFactory;
use Illuminate\Database\Eloquent\Model;
use Wildside\Userstamps\Userstamps;



class Siniestro extends Model
{
    use HasFactory;
    use Userstamps;
   
    protected $fillable = ['created_by', 'imagen', 'updated_by', 'deleted_by', 'siniestro', 'patente', 'cliente', 'fechaip', 'estado', 'modalidad',
    'observaciones', 'fechacierre', 'compania', 'contacto', 'codigoinspeccion', 'inspector', 'direccion', 'localidad', 'telefono', 'motivo', 'link', 'enviarorden', 'email'];


   public function archivos()
   {
       return $this->hasMany(Archivo::class);
   }



}



1 Answer

0

After your edit, I am writing this controller for you:

public function index()
    {

        $siniestros = Siniestro::paginate(50);

        if($user->hasDirectPermission('crear-siniestro')){
            $siniestros->makeHidden(['estado']);
        }
        
        return view('siniestros.index', compact('siniestros'));

        $now = Carbon::now();
    }

This should work if I'm not mistaken.

  • Share This:  
  •  Facebook
  •  Twitter
  •  Google+
  •  Stumble
  •  Digg
Email ThisBlogThis!Share to XShare to Facebook
Newer Post Older Post Home

0 comments:

Post a Comment

Thanks

Meta

Popular Posts

  • Generate Migrations from an Existing Database With the Migration Generator Package
    Laravel Migration Generator Migration Generator for Laravel is a package by Bennett Treptow to generate migrations from existing database ...
  • Search Through Models with Laravel Searchable
      Laravel Searchable   is a package by   Spatie   to search through models and other sources pragmatically. Using this package, you can get ...
  • Laravel Razorpay Integration | Payment gateway integration Laravel in 30 mins | Laravel Razorpay
    1 Integration of Razorpay with Laravel. In this tutorial, I have taught how to integrate payment gateway with laravel with mini-project. If...
  • .Net 8 XUnit: Use an In-Memory DBConnection for testing as a replacement for the real MySqlConnection
    I'm creating tests for my .Net 8 API, and as I want to test with fake self created data (instead of using the real MySql connection) I...
  • Tailwindcss best practices for responsive design
    Tailwind CSS provides powerful utilities for responsive design out of the box. To use it effectively and maintain clean, scalable code, here...

Categories

  • Ajax (26)
  • Bootstrap (30)
  • DBMS (42)
  • HTML (12)
  • HTML5 (45)
  • JavaScript (10)
  • Jquery (34)
  • Jquery UI (2)
  • JqueryUI (32)
  • Laravel (1017)
  • Laravel Tutorials (23)
  • Laravel-Question (6)
  • Magento (9)
  • Magento 2 (95)
  • MariaDB (1)
  • MySql Tutorial (2)
  • PHP-Interview-Questions (3)
  • Php Question (13)
  • Python (36)
  • RDBMS (13)
  • SQL Tutorial (79)
  • Vue.js Tutorial (69)
  • Wordpress (150)
  • Wordpress Theme (3)
  • codeigniter (108)
  • oops (4)
  • php (853)

Social Media Links

  • Follow on Twitter
  • Like on Facebook
  • Subscribe on Youtube
  • Follow on Instagram

Pages

  • Home
  • Contact Us
  • Privacy Policy
  • About us

Blog Archive

  • ►  2026 (12)
    • ►  07/26 - 08/02 (11)
    • ►  06/28 - 07/05 (1)
  • ►  2025 (4)
    • ►  07/06 - 07/13 (2)
    • ►  06/29 - 07/06 (2)
  • ►  2024 (486)
    • ►  09/15 - 09/22 (30)
    • ►  09/08 - 09/15 (35)
    • ►  09/01 - 09/08 (35)
    • ►  08/11 - 08/18 (2)
    • ►  08/04 - 08/11 (33)
    • ►  07/28 - 08/04 (30)
    • ►  07/07 - 07/14 (11)
    • ►  06/30 - 07/07 (35)
    • ►  06/23 - 06/30 (5)
    • ►  06/02 - 06/09 (31)
    • ►  05/26 - 06/02 (20)
    • ►  05/05 - 05/12 (29)
    • ►  04/28 - 05/05 (26)
    • ►  04/07 - 04/14 (10)
    • ►  03/31 - 04/07 (34)
    • ►  03/24 - 03/31 (10)
    • ►  03/03 - 03/10 (35)
    • ►  02/25 - 03/03 (15)
    • ►  02/04 - 02/11 (22)
    • ►  01/28 - 02/04 (30)
    • ►  01/07 - 01/14 (8)
  • ►  2023 (484)
    • ►  12/31 - 01/07 (35)
    • ►  12/24 - 12/31 (10)
    • ►  12/03 - 12/10 (33)
    • ►  11/26 - 12/03 (20)
    • ►  11/05 - 11/12 (35)
    • ►  10/29 - 11/05 (20)
    • ►  10/22 - 10/29 (9)
    • ►  10/15 - 10/22 (7)
    • ►  10/08 - 10/15 (9)
    • ►  10/01 - 10/08 (10)
    • ►  09/24 - 10/01 (9)
    • ►  09/17 - 09/24 (9)
    • ►  09/10 - 09/17 (7)
    • ►  09/03 - 09/10 (9)
    • ►  08/27 - 09/03 (9)
    • ►  08/20 - 08/27 (8)
    • ►  08/13 - 08/20 (8)
    • ►  08/06 - 08/13 (8)
    • ►  07/30 - 08/06 (8)
    • ►  07/23 - 07/30 (7)
    • ►  07/16 - 07/23 (8)
    • ►  07/09 - 07/16 (7)
    • ►  07/02 - 07/09 (8)
    • ►  06/25 - 07/02 (7)
    • ►  06/18 - 06/25 (7)
    • ►  06/11 - 06/18 (7)
    • ►  06/04 - 06/11 (11)
    • ►  05/28 - 06/04 (7)
    • ►  05/21 - 05/28 (8)
    • ►  05/14 - 05/21 (11)
    • ►  05/07 - 05/14 (7)
    • ►  04/30 - 05/07 (7)
    • ►  04/23 - 04/30 (8)
    • ►  04/16 - 04/23 (9)
    • ►  04/09 - 04/16 (7)
    • ►  04/02 - 04/09 (4)
    • ►  03/26 - 04/02 (21)
    • ►  03/19 - 03/26 (2)
    • ►  03/12 - 03/19 (9)
    • ►  03/05 - 03/12 (26)
    • ►  02/26 - 03/05 (25)
    • ►  01/15 - 01/22 (7)
    • ►  01/08 - 01/15 (1)
  • ▼  2022 (1037)
    • ►  12/11 - 12/18 (13)
    • ►  12/04 - 12/11 (1)
    • ►  11/27 - 12/04 (40)
    • ►  11/06 - 11/13 (1)
    • ►  10/16 - 10/23 (13)
    • ►  09/04 - 09/11 (5)
    • ►  08/21 - 08/28 (24)
    • ►  08/14 - 08/21 (24)
    • ►  07/03 - 07/10 (9)
    • ►  06/19 - 06/26 (3)
    • ►  05/29 - 06/05 (3)
    • ►  05/22 - 05/29 (3)
    • ▼  05/15 - 05/22 (109)
      • Signed Route In Larave 9
      • Laravel Backpack - File upload is not triggering m...
      • 404 Not found in Laravel when I try to make edit a...
      • Laravel 9 Localization got error Missing parameter...
      • Making ViewMenuComposer
      • SQLSTATE[42S22]: Column not found: 1054 Unknown co...
      • SQLSTATE[42S02]: Base table or view not found: 114...
      • Get current logged in user's user role from a lara...
      • Laravel time Validation
      • Laravel Nova 4 conditionally show field on preview
      • Compare two columns from two related tables using ...
      • Method Illuminate\Auth\SessionGuard::users does no...
      • Custom rule for validation laravel
      • select multiselect values from ajax resonse after ...
      • Compile Error: Cannot use positional argument afte...
      • Laravel 9 - CORS is not working (Access to XMLHttp...
      • Assigning a id+index value to a form field for man...
      • Make a file visible at view but not downloadable [...
      • Laravel- json_decode returns array but cannot echo...
      • Subdomain for Laravel Rest API not working correct...
      • Vuejs Laravel always returns validation messages i...
      • Pass dynamic controller in route in laravel
      • Laravel returns request content with response
      • Php artisan make:auth not defined in Laravel 9
      • Laravel 9 Getting error Upload Form Submit to Data...
      • Laravel Breeze API login controller errors
      • Storing attributes of a multiple models, to single...
      • Assign a default value for NULL variables properly...
      • Laravel 9 - ERROR: The body of "Symfony\Component\...
      • Laravel Desktop Notifier
      • Magento 2 Add Products To Category Programmatically
      • How to import products in category by programmatic...
      • How to Import Categories in Magento 2 Programmatic...
      • Create a function that can be used by other functions
      • File encryption in Laravel and sudo users
      • Laravel Custom Facade New Instance
      • cannot upload mp4 file manager in laravel 8 error ...
      • vlaue of checkbox to database in vue laravel
      • Resizing images of related model laravel-admin
      • Laravel excel combining multiple value into 1 cell
      • the search button is not working after I deploy
      • Send variable to terminate in middleware
      • Response_type=token in auth0 custom social login
      • Why notification event is not triggered in pusher?
      • multiple orderby sorting with pagination in larave...
      • Converting Sql query to Laravel 8 Query Showing error
      • Laravel 9 Undefined class 'MainController' once un...
      • Laravel looks to insert records in a table that do...
      • Laravel 9 on PHP 8.1 slow responses - out of the box
      • No alive nodes. All the 1 nodes seem to be down
      • How to make Laravel's dependency injection work in...
      • Laravel 9 mutators colon
      • Laravel 9: Custom login
      • Laravel 9 | Mailgun saying "Password is not set"
      • how to generate short link in laravel framework an...
      • Getting an average rating of a TV show using avera...
      • how to create favourite system in laravel with rel...
      • Laravel says application is in production but APP_...
      • Laravel validation rule for one item which can be ...
      • Unable to send file using laravel http client to t...
      • Laravel maintenance mode refresh and render parameter
      • Pusher receive the data but not in the Echo callba...
      • how to connect SQL server with php web application...
      • Laravel show my Posts, Followed user posts and Sha...
      • Show page numbers as navigation in Laravel pagination
      • Laravel collection not saving added data
      • Can't reach css files laravel-9
      • Problems in Laravel when logging in
      • How To Access A Column In M-M Relationship Table I...
      • Laravel - Is it possible to validate a get wildcar...
      • Laravel Composer could not install tymon/jwt-auth
      • redirect from the controller, depending on the rol...
      • How to get query log of events run by admins
      • Carbon generated datetime not stored correctly int...
      • Enters the if statement where it shouldn't php Lar...
      • How to print route lists in Blade
      • Can't send mail with Lumen framework and no error ...
      • Would like a php version of php 8.1 for a specific...
      • Laravel 9/Passport not working in production
      • limit the view depending on the values - Laravel -...
      • Extract Untranslated Strings from Laravel Projects
      • In Laravel 9, how to insert data into a database [...
      • Can't send mail with Lumen framework and no error ...
      • Problem at startup laravel9 system after git clone
      • I can't concatenate correctly to the source of the...
      • How to create a multi language website with Laravel 9
      • Laravel 9: change table and fields for authenticat...
      • Would like a php version of php 8.1 for a specific...
      • Laravel 9 - Passport custom api for Authorization
      • After Login/Signup, Laravel returns "419 PAGE EXPI...
      • Downloading 1000s of images using php , how to byp...
      • Order payment status check failing when waiting fo...
      • What would be a proper way to handle tokens in mon...
      • Limit of log line written to Apache Errorlog from ...
      • Filter WooCommerce products with post__in and addi...
      • WooCommerce shop loop random array function not sa...
      • Adding hreflang tags automatically in WordPress su...
      • httpful POST request: get raw HTTP message
      • How does this Facade works
      • Socialite Implementation for Laravel Jetstream
      • Bandwagon is a Social Proof Package for Laravel
      • Snappy Image Wrapper for Laravel
      • Organize Laravel Applications With Actions
      • Squire: Static Eloquent Model Library
      • OpenAPI Initializer
      • Simplifying Service Providers With Laravel Package...
      • Use Basecamp’s Hotwire in Laravel
      • Laravel Console Wizard
      • CLI to Check For PHP Security Vulnerabilities
    • ►  05/01 - 05/08 (7)
    • ►  04/24 - 05/01 (7)
    • ►  04/17 - 04/24 (64)
    • ►  04/10 - 04/17 (115)
    • ►  04/03 - 04/10 (73)
    • ►  03/27 - 04/03 (77)
    • ►  03/13 - 03/20 (2)
    • ►  03/06 - 03/13 (25)
    • ►  02/27 - 03/06 (18)
    • ►  02/20 - 02/27 (153)
    • ►  02/13 - 02/20 (187)
    • ►  01/30 - 02/06 (45)
    • ►  01/23 - 01/30 (15)
    • ►  01/16 - 01/23 (1)
  • ►  2021 (412)
    • ►  10/24 - 10/31 (2)
    • ►  07/25 - 08/01 (1)
    • ►  07/11 - 07/18 (10)
    • ►  06/13 - 06/20 (29)
    • ►  05/23 - 05/30 (1)
    • ►  05/02 - 05/09 (24)
    • ►  04/25 - 05/02 (24)
    • ►  04/18 - 04/25 (112)
    • ►  04/11 - 04/18 (1)
    • ►  04/04 - 04/11 (6)
    • ►  03/28 - 04/04 (86)
    • ►  03/21 - 03/28 (19)
    • ►  03/14 - 03/21 (2)
    • ►  03/07 - 03/14 (10)
    • ►  02/28 - 03/07 (1)
    • ►  02/21 - 02/28 (29)
    • ►  02/14 - 02/21 (13)
    • ►  02/07 - 02/14 (12)
    • ►  01/31 - 02/07 (6)
    • ►  01/17 - 01/24 (2)
    • ►  01/10 - 01/17 (8)
    • ►  01/03 - 01/10 (14)
  • ►  2020 (376)
    • ►  12/27 - 01/03 (37)
    • ►  12/20 - 12/27 (92)
    • ►  12/13 - 12/20 (29)
    • ►  12/06 - 12/13 (37)
    • ►  11/29 - 12/06 (4)
    • ►  11/15 - 11/22 (14)
    • ►  11/08 - 11/15 (8)
    • ►  11/01 - 11/08 (2)
    • ►  10/18 - 10/25 (14)
    • ►  10/11 - 10/18 (16)
    • ►  10/04 - 10/11 (10)
    • ►  09/20 - 09/27 (10)
    • ►  09/06 - 09/13 (19)
    • ►  08/30 - 09/06 (26)
    • ►  08/23 - 08/30 (4)
    • ►  08/16 - 08/23 (2)
    • ►  07/12 - 07/19 (48)
    • ►  05/17 - 05/24 (2)
    • ►  01/05 - 01/12 (2)
  • ►  2019 (74)
    • ►  07/07 - 07/14 (6)
    • ►  06/16 - 06/23 (6)
    • ►  02/10 - 02/17 (17)
    • ►  01/13 - 01/20 (37)
    • ►  01/06 - 01/13 (8)
  • ►  2018 (376)
    • ►  12/30 - 01/06 (24)
    • ►  12/16 - 12/23 (8)
    • ►  12/09 - 12/16 (98)
    • ►  12/02 - 12/09 (16)
    • ►  11/18 - 11/25 (36)
    • ►  11/04 - 11/11 (18)
    • ►  10/28 - 11/04 (10)
    • ►  10/21 - 10/28 (26)
    • ►  10/14 - 10/21 (52)
    • ►  10/07 - 10/14 (4)
    • ►  09/30 - 10/07 (2)
    • ►  09/23 - 09/30 (68)
    • ►  09/16 - 09/23 (4)
    • ►  09/09 - 09/16 (4)
    • ►  08/26 - 09/02 (6)

Data Publish News

Loading...

Al Jazeera – Breaking News, World News and Video from Al Jazeera

Loading...

Laravel News

Loading...

Copyright © CoderFunda | Powered by Blogger
Design by Coderfunda | Blogger Theme by Coderfunda | Distributed By Coderfunda