Ir para conteúdo
Ericsson Berg

Definir nível de acesso com Laravel

Recommended Posts

Boa tarde!

 

Iai pessoal!!

 

Tô me aventurando com o Laravel e que por sinal achei muito interessante!!

 

Contudo, estou parado numa situação...

 

Como implementar um nível de permissão na route? 

 

Ex.: 

Tenho no banco a tabela Modulos onde estão cadastrados os dados dos 7 módulos e cada módulo trabalha com N relatórios para determinadas finalidades, o módulo comissão possui o código de acesso 21001 cadastrado no banco de dados, { id=1 | cod_acesso = 21001 | descricao = comissoes} , assim quando o usuário clica no link do módulo Comissão é disparado uma requisição para a rota, '/comissao/21001', com base nisso teria que verificar se o usuário tem está permissão cadastrada na tabela nvl_permissoes_modulos.

 

O máximo que cheguei foi nisso:

//routes.php

//Verifica se o usuário está logado
Route::group(['middleware' => ['auth']],function(){ 
	
		//verifica se o usuário possui a permissao no BD
        Route::group(['prefix' => '/comissao/21001'], function(){  

			//Se tiver a permissão libera o acesso as demais rotas
				/* Seria talvez algo aqui para verificar o acesso*/
			{
            Route::get('/comissao','ComissaoController@index_comissao');
            Route::get('/comissao/posvendas/chefe','ComissaoController@comissao_chefe');
            Route::get('/comissao/posvendas/tecnico','ComissaoController@comissao_tecnico');
			}

        });

});

Quando recorro ao pessoal do fórum é pq já morri de pesquisar e não achei nada.....

 

Então, como sou iniciante sei que pode haver erro na sintaxe e tal, relevem.

Compartilhar este post


Link para o post
Compartilhar em outros sites

O que você quer se chama ACL, lista de controle de acesso.

 

Abaixo segue como fazer, e como são 23 aulas gratuitas que o autor disponibilizou de graça, segue:

 

https://www.youtube.com/playlist?list=PLVSNL1PHDWvTch1r8uTSluw9SkzSA9cDJ

 

 

 

 

 

Compartilhar este post


Link para o post
Compartilhar em outros sites

Crie uma conta ou entre para comentar

Você precisar ser um membro para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar Agora

  • Conteúdo Similar

    • Por antonio_milat
      Meu listener está sendo chamado duas vezes, mas o evento só é disparado uma vez.
      Eu copiei a base do código da documentação do Lumen 5.7 e aparentemente está tudo configurado corretamente. Não consigo encontrar o problema.
       
      bootstrap/app.php
      $app->register(App\Providers\EventServiceProvider::class);  
      app/Providers/EventServiceProvider.php
      protected $listen = [ 'App\Events\NewAuthEvent' => [ 'App\Listeners\SendNewAuthListener', ], ];  
      app/Events/NewAuthEvent.php
      use Illuminate\Queue\SerializesModels; use App\Data\Entity\User; use App\Data\Entity\Authorization; use Illuminate\Support\Facades\Log; class NewAuthEvent { use SerializesModels; public $user; public $auth; public function __construct(User $user, Authorization $auth) { Log::debug("Disparado uma vez"); $this->user = $user; $this->auth = $auth; } }  
      app/Listeners/SendNewAuthListener.php
      use App\Events\NewAuthEvent; use Illuminate\Queue\InteractsWithQueue; use Illuminate\Contracts\Queue\ShouldQueue; use App\Data\Service\MessengerService; use Illuminate\Support\Facades\Log; class SendNewAuthListener { private $messenger; public function __construct(MessengerService $messenger) { Log::debug("Chamado duas vezes"); $this->messenger = $messenger; } public function handle(NewAuthEvent $event) { Log::debug("Chamado duas vezes também"); $this->messenger->new($event->user, $event->auth); } }  
      Disparando o evento:
      event(new NewAuthEvent($objUser, $objAuthorization)); Estou me esquecendo de algum parâmetro ou configuração? Agradeço desde já!
    • Por bobzznnn
      Preciso de um script que converta o saldo atual do meu website em bitcoin. Assim que eu possa colocar de forma que esteja junto ao "Valor" da conta.
      O Script que puxa o valor é esse:
       
      <div class="row">
          <div class="col-md-3 col-sm-6 col-xs-12">
              <div class="info-box">
                  <span class="info-box-icon bg-aqua"><i class="fa fa-usd"></i></span>
                  <div class="info-box-content">
                      <span class="info-box-text">MEU SALDO</span>
                      <span class="info-box-number">U$ <?php
                                      $saldo = Auth::user()->saldo;
                                      echo e(number_format($saldo, 2, '.', ','));
                                      ?></span>
                  </div>
                  
              </div>
          </div>
       

    • Por Air-Gear
      Olá a todos!
       
      Eu comecei mexer com Laravel hoje e até conseguir criar um novo projeto, mas eu preciso abrir e rodar um projeto existente e não estou conseguindo. Ele pede o arquivo autoload.php que não está no projeto. Eu já instalei o Banco de Dados desse projeto sem problemas. Eu instalei o Composer, mas não coloquei a URL de referência. Eu uso o Wamp Server 3.0.6, com Apache 2.4.23, PHP 5.6.25 e MySQL 5.7.14.
       
      Eu preciso instalar mais alguma coisa? Esqueci de fazer alguma configuração? Por favor, preciso de ajuda.
    • Por ElytonSilva
      -- Controller Lista os dados do usuário no card public function listardados(){ $matricula = Matricula::where('user_id', Auth::id())->get(); //dd($matricula); return view('dashboard.renovacao.teste', compact( 'matricula')); } -- Controller Salvar os Registros public function store(RenovacaoRequest $request){ $user = Auth()->user(); $dados = $request->all(); $renovacao = Renovacao::create($dados); return view('dashboard.renovacao.confirmacao', compact ('renovacao')); } -- View form @extends('layouts.app') @section('content') <div class="container"> <div class="row"> <form class="form-horizontal " id="regForm" action="{{route('renovacao.store')}}" method="POST"> <div class="card-panel white"> <h4 class="center">Solicitar Renovação</h4> <div class="row"></div> {{ csrf_field()}} <right> <a>**Dados Cadastrados**</a> </right> <div class="row"></div> <div class="row"></div> <div class="row"> @foreach($matricula as $matric) <div class="row"> <div class="col s6 m6"> <div class="input-field {{$errors->has('user_id') ? 'has-error' : ''}} "> <label for="produto">Nome do Pai:</label> <input type="text" class="form-control" name="nomerespo" value="{{ $matric->nomedopai }}"> </div> </div> <div class="col s6 m6"> <div class="input-field {{$errors->has('user_id') ? 'has-error' : ''}} "> <label for="produto">Nome do Aluno(a):</label> <input type="text" class="form-control" name="nomealuno" value="{{ $matric->nomealuno }}"> </div> </div> </div> @endforeach <div class = "row"> <div class="col s12"> <a title="Voltar Para Página Principal" class="btn orange darken-4 btn-info left " href="/admin">Voltar <i class="material-icons left">arrow_back_ios</i> </a> <button type="submit" class="btn orange darken-4 btn-info right">Confirmar <i class="material-icons left">save</i> </button> </div> </div> </div> </div> </form> </div> </div> @endsection No id do usuário ele tem 2 registro só que na hora de salvar ele só salva 1 registro e não os 2 como deveria
      Como Código acima 
       
      Utilizando dd($dados) ;
       
      ele retorna isso e não traz os outros formulários que estava preenchidos que são as mesma coisa 
       
      array:3 [▼
       
      "_token" => "MZOBw295E6W5SEtPPnsvV4seev2GeH3M94rsrI71"
      "nomerespo" => "Mario"
      "nomealuno" => "Maria Joaquina" ]
       
       
       
      1- Ele traz da tabela matricula o user_id relacionado ao usuário logado, automaticamente ele traz e joga no form e nele usuário verificar o nome do responsável e o nome do filho e clica no botão para salvar para confirmar.
      print -> https://prnt.sc/llsn19
       
      2 - Depois que salva o adm vai na aba relatório para verificar se todos os campos foram salvo só que ele só ta salvando o ultimo nome do aluno e do pai queria que salve todos os dados... como estava no primeiro print.
       
      print tela do adm -> https://prnt.sc/llsof3
       
       
    • Por riru
      Boa noite pessoa! Como vão?
      Meu site foi feito em laravel e está rodando em hospedagem compartilhada, tudo funciona bem, menos as imagens quando são feitos upload (aparecem um x e não carrega imagem), 
      O site grava as fotos corretamente no diretório public/uploads e carrega no diretório raiz a pasta uploads (onde não tem nenhuma imagem). Como faço para trocar a instrução de puxar a imagem em public/uploads ao invés da pasta uploads?
      abs.
×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.