Jump to content
kelvinferraz

Proteger área de cadastro de usuário - Laravel 5.8

Recommended Posts

Boa noite pessoal,

 

Estou desenvolvendo uma aplicação e estou utilizando o método Auth do Laravel 5.8. Aparentemente esta tudo funcionando, acesso a certas áreas solicitam login. Eu gostaria de saber como faço para limitar o acesso de registro de usuários de um modo mais simples, pois andei pesquisando e existe formas de criar uma conta admin, mas para o meu propósito não teria necessidade de tanta complexidade, apenas gostaria de limitar o acesso ao http://localhost:8000/register para uma conta de e-mail especifica, ou mesmo se precisar criar um campo na tabela para validar se existe, não sei direito como fazer isso, estou aprendendo faz pouco tempo a respeito do Laravel.

 

Exemplo de como esta funcionando minha app:

http://localhost:8000/sistema === REQUER LOGIN PARA ACESSO

http://localhost:8000/register == TAMBEM REQUER LOGIN, PORÉM QUALQUER USUÁRIO LOGADO FAZ REGISTRO DE NOVO USUÁRIO PARA ESSA ROTA EU GOSTARIA DE LIMITAR APENAS AO MEU EMAIL OU NOME DE USUÁRIO CADASTRADO.

 

 

 

 

Obrigado!

Share this post


Link to post
Share on other sites

@kelvinferraz 

 

Você pode usar o Auth para pegar o ID do usuário atualmente autenticado e usar um if para entrar nessa rota.

 

Exemplo:

use Illuminate\Support\Facades\Auth;

if (Auth::id() === 1 // ID da sua conta)
{
	return view("welcome");
}
else
{
	abort(403);
}

 

Share this post


Link to post
Share on other sites

Bom dia companheiro, obrigado pelo retorno.

 

Eu tentei da forma que você me passou:

  if (Auth::id() == 1){
            

 

            //$this->middleware('auth');
            return view('register');

 

        }else{

 

            abort(403);
        }
 
Porém sem sucesso, ele esta negando o acesso até para o meu usuário com ID == 1 que seria de fato a conta que eu quero que logue:
também tentei apenas o retorno do $this->middleware('auth') e foi o mesmo caso, ele nega acesso até para o meu usuário.

Estou fazendo essa config no RegisterController

Share this post


Link to post
Share on other sites
<?php
 
namespace App\Http\Controllers\Auth;
 
use App\User;
use App\Http\Controllers\Controller;
use Illuminate\Support\Facades\Hash;
use Illuminate\Support\Facades\Validator;
use Illuminate\Foundation\Auth\RegistersUsers;
use Illuminate\Support\Facades\Auth;
 
class RegisterController extends Controller
{
    /*
    |--------------------------------------------------------------------------
    | Register Controller
    |--------------------------------------------------------------------------
    |
    | This controller handles the registration of new users as well as their
    | validation and creation. By default this controller uses a trait to
    | provide this functionality without requiring any additional code.
    |
    */
 
    use RegistersUsers;
 
    /**
     * Where to redirect users after registration.
     *
     * @var string
     */
     protected $redirectTo = '/sistema';
 
    /**
     * Create a new controller instance.
     *
     * @return void
     */
    public function __construct()
    {
 
        
        
        if (Auth::id() == 1){
            
 
            //$this->middleware('auth');
            $this->middleware('auth');
            //return view('register');
 
        }else{
 
             abort(403);
        }
        
 
    }
 
    
    /**
     * Get a validator for an incoming registration request.
     *
     * @param  array  $data
     * @return \Illuminate\Contracts\Validation\Validator
     */
    protected function validator(array $data)
    {
        return Validator::make($data, [
            'name' => ['required''string''max:255'],
            'email' => ['required''string''email''max:255''unique:users'],
            'password' => ['required''string''min:8''confirmed'],
        ]);
    }
 
    /**
     * Create a new user instance after a valid registration.
     *
     * @param  array  $data
     * @return \App\User
     */
    protected function create(array $data)
    {
        return User::create([
            'name' => $data['name'],
            'email' => $data['email'],
            'password' => Hash::make($data['password']),
        ]);
    }
}

Share this post


Link to post
Share on other sites

@kelvinferraz Bom você não pode acessar o usuário autenticado no construtor do seu controlador porque o middleware ainda não foi executado.

 

Como alternativa, você pode definir um middleware baseado em Closure diretamente no construtor do seu controlador.

 

public function __construct()
    {
        $this->middleware('auth');
        $this->middleware(function ($request, $next) {

            $user = Auth::user();

            if ($user->id != 1 /* <-- Seu id aqui */ ) 
            {
                return abort(403);
            }

            return $next($request);
        });
    }

 

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

  • Similar Content

    • By Rafaelax
      Oi queridos,
      Não sou programadora e nem entusiasta de programação, apenas altero algumas coisas no meu programa que tenho de cadastro de clientes. Coisas básicas vamos dizer;
      Para facilitar tudo, quando o programa foi criado, foi feito um campo de data automático no banco de dados como abaixo.
      `date` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP
       
      Funciona bem para o que preciso, mas ele traz a data nesse formato: 2020-03-25 00:20:03
      Data no formato ano/mês/dia e eu queria no formato tradicional dia/mês/ano.
      Só para levar em conta. eu trago a data para visualizar em um campo normal de inpunt com o value="[date]"
      Esse acima é um dos problemas que quero resolver com a parte da data.
       
      Já a segunda questão é justamente envolvendo essa data automática, pois qualquer edição que faço ele atualiza a data e o horário. Perfeito. Mas perco a data de cadastro original do cliente. É possível eu ter um outro campo de data automático mas que apenas grave o cadastro e não  atualize automaticamente nas edições?
       
      Eu queria que uma data fosse do cadastro e não atualizasse e outra data continuasse como está, apenas fazendo a inversão.
      Não adianta eu colocar a data manual no cadastro, pois pessoas colocam datas diferentes das do dia do cadastro.
       
    • By adriano.eurich
      Tem como recuperar os dados do banco que foram incluídos através do create, e retornar para a mesmo formulário?
      Quando eu inserir o numero da chave e clicar em pesquisar ele traz o resultado do banco referente aquela chave se ela estiver com a situação 1 que é emprestado ai habilitaria os botões editar e deletar, onde o deletar apenas alterava o situação de 1 para 2 .
      Não consigo fazer essa parte de busca no banco e retornar no mesmo formulário, se é que é possível!
       
      cadastro.php
       
      <?php session_start(); include_once 'includes/header.inc.php'; include_once 'includes/menu.inc.php'; ?> <!-- Formulário de Cadastro Cliente --> <div class="row container"> <form action="banco_de_dados/create.php" method="post" class="col s12"> <fieldset class="formulario" style="padding: 1px;"> <legend><!--<img src="imagens/CadCli.png" alt="[imagem]" style="width:40x; height:40px">--></legend> <br> <?php if (isset($_SESSION['msg'])): echo $_SESSION['msg']; session_unset(); endif; ?> <!-- Campo Chave --> <div class="input-field col s12"> <i class="material-icons prefix">vpn_key</i> <input type="text" name="chave" id="chave" maxlength="4" required> <label for="chave">Chave</label> </div> <!-- Campo Nome --> <div class="input-field col s12"> <i class="material-icons prefix">account_circle</i> <input type="text" name="nome" id="nome" maxlength="40" required autofocus> <label for="nome">Nome</label> </div> <!-- Campo Instituição --> <div class="input-field col s12"> <i class="material-icons prefix">account_balance</i> <input type="text" name="inst" id="inst" maxlength="40" required autofocus> <label for="inst">Instituição</label> </div> <!-- Campo Telefone --> <div class="input-field col s12"> <i class="material-icons prefix">phone</i> <input type="text" name="telefone" id="telefone" maxlength="13" required> <label for="telefone">Telefone</label> </div> <!-- Botões --> <div class="input-field col s12"> <input type="submit"style="width:108px; height:35px" value="cadastrar" class="btn green"> <input type="submit"style="width:108px; height:35px" value="Pesquisar" class="btn blue"> <input type="submit"style="width:108px; height:35px" value="Editar" class="btn orange"> <input type="submit"style="width:108px; height:35px" value="Devolver" class="btn red"> </div> </fieldset> </form> </div> <?php include_once 'includes/footer.inc.php'; ?> <?php include_once 'includes/script.inc.php'; ?>  
      create.php
       
      <?php session_start(); include_once 'conexao.php'; $id = $_POST ['id']; $nome = $_POST ['nome']; $inst = $_POST ['inst']; $data = date('y-m-d'); $telefone = $_POST ['telefone']; $chave = $_POST ['chave']; $situacao = $_POST ['situacao']; $queryInsert = $link->query("insert into tb_cadastro VALUES ('" . $id . "', '" . $nome . "','" . $inst . "','" . $data . "','" . $telefone . "','" . $chave . "','1')"); $affected_rows = mysqli_affected_rows($link); if ($affected_rows > 0): $_SESSION['msg'] = "<p class='center green-text'>" . 'Cadastrado com Sucesso!' . "<br>"; header("Location: ../cadastro.php"); endif;  
       
       
       
       

    • By danilo759
      Estou precisando saber o percentual de imagens que está no diretório e estou com dificuldades. Alguém pode me ajudar dar uma luz?

       
      $qry_canal = $con->query("SELECT * FROM grade, dados WHERE grade.id = dados.id AND grade.canal IN('HBO','GLO','TNT') GROUP BY dados.titulo"); $counter = 0; while($rows = $qry_canal->fetch(PDO::FETCH_ASSOC)){ $id = $rows['id']; $sigla = $rows['canal']; $sk = substr($rows['sk'], 0, 14); // Busca total de programas por canal /* ---------------------------------------------------------------- */ $qry_b = $con->query("SELECT * FROM grade, dados WHERE grade.id = dados.id AND grade.canal LIKE '".$sigla."' GROUP BY dados.titulo"); $total_programas = $qry_b->rowCount(); if(empty($serieskey)) { $prog_id = "$id"; } else{ $prog_id = "$sk"; } // VERIFICA SE EXISTE IMAGEM /* ---------------------------------------------------------------- */ if(file_exists("/imagens/".$prog_id."_epg.jpg")){ $arr_img[] = "".$counter++.""; } $total_fotos = "".count($arr_img).""; echo "".($total_fotos * 100 ) / $total_programas."% <br />"; }  
    • By Rafaelmcd
      Galera, queria a ajuda de você para fazer uma implementação em meu site. Eu estou tentando passar algumas informações do site atual para outro site, através de parâmetros na URL. E queria recuperar esses dados no outro site.
       
      Exemplo:
      No site inicial queria passar os seguintes dados: IP, URL principal do site, Titulo da Página, URL atual. O problema é que não sei pegar esses dados e converter em variável no site final. 
       
      Penso que no site inicial a URL deveria ser enviada mais ou menos dessa forma: https://siteinicial.com/post-teste?IP=127.0.0.1&UrlIni=siteinicial.com&Titulo=Post Teste&UrlAt=https://siteinicial.com/post-teste
       
      O problema é que não sei como capturar essas informações na pagina para passar na URL. 
      ===============================================
       
      O segundo passo a recuperar no site final. 
       
      Vi sobre esse script (<?php $url = parse_url($_SERVER["HTTP_REFERER"]);parse_str($url["query"],$queryString);?>) que recebe esses dados, mas não sei como pegar cada um dos dados recebidos e guardar em uma variável. 
       
      Se alguem puder me ajudar, eu agradeço. OBS: Os sites estão em WordPress.
    • By mateusmarcucci
      Pessoal, meu primeiro tópico, então desculpa qualquer coisa...
       
      É o seguinte, pra treinar to criando um sisteminha de aposta.
       
      Consiste em 2 campos, Valor apostado e ODD (odd é o quanto vai multiplicar a aposta caso ganhe). Porém quero colocar uma telinha aonde ele vai somar todos os ganhos e perdas do dia.
       
      Estou fazendo a soma direto no php, porém gostaria de passar o resultado dessa soma no banco de dados para assim ser possível somar as colunas.
       
      Eu tenho o metodo de escolha que é Ganhou ou Perdeu.
       
      Exemplo:   Valor apostado: R$5,00 | ODD 2.0 = R$10,00     Porém o lucro é apenas R$5,00. Tendo em vista que o lucro é subtraído do valor total - valor apostado. Caso perca, o valor apostado apenas passa a ser negativo
       
      Vou deixar o código que estou utilizando:
       
       
       
      <?php
          session_start();
          include_once("servidor.php");

          if (!empty($_SESSION['usuario']) and !empty($_SESSION['id'])) {
              $id = $_SESSION['id'];
              $nome = $_SESSION['nome'];
              $usuario = $_SESSION['usuario'];
          }else{
              $_SESSION['mensagem']="Você não está logado";
              header("Location: index.php");
              exit;
          }
          $id = $_SESSION['id'];        
          $consulta = "SELECT * FROM Resultados WHERE id = '$id' ORDER BY resultado ASC";
          $con = mysqli_query($conexao, $consulta);
          $banca = "SELECT * FROM Usuarios";
          $conBanca = mysqli_query($conexao, $banca);
          
      ?>

      <!DOCTYPE html>
      <html>
      <head>
          <title>Anote sua Aposta - Painel</title>
          <meta charset="utf-8">
          <meta name="viewport" content="width=device-width, initial-scale=1">
          <link rel="stylesheet" type="text/css" href="css/cssEstilo.css">

          <link rel="stylesheet" href="https://stackpath.bootstrapcdn.com/bootstrap/4.4.1/css/bootstrap.min.css" integrity="sha384-Vkoo8x4CGsO3+Hhxv8T/Q5PaXtkKtu6ug5TOeNV6gBiFeWPGFN9MuhOf23Q9Ifjh" crossorigin="anonymous">
          <!-- Font Awesome -->
          <link rel="stylesheet" href="https://use.fontawesome.com/releases/v5.3.1/css/all.css" integrity="sha384-mzrmE5qonljUremFsqc01SB46JvROS7bZs3IO2EmfFsd15uHvIt+Y8vEf7N7fWAU" crossorigin="anonymous">
          <script type="text/javascript" src="js/jquery-3.3.1.min.js"></script>
          <script type="text/javascript" src="js/bootstrap.min.js"></script>
          <script type="text/javascript" src="js/jquery.mask.min.js"></script>
          <script type="text/javascript">
                  $(document).ready(function(){
                      $("#valor").mask("99990.00", {reverse: true})    
                      $("#odd").mask("999.999.990.00", {reverse: true})
                      
                  })        
                      
          </script>
      </head>

      <body class="fundoBodyPainel">
          <!-- topo -->
          <?php include('topo.php'); ?>
          <!-- fim topo -->
          <section>                        
                  <nav>
                      <p class="topoPainel"><strong>Bem vindo(a),</strong> <?php echo $_SESSION['nome'];?></p>
                  </nav>
          </section>
          <!-- Botão para acionar modal -->
          <button type="button" class="btn btn-primary" data-toggle="modal" data-target="#modalExemplo">
                Adicionar uma nova aposta
          </button>
          <!-- Modal -->
          <div class="modal fade" id="modalExemplo" tabindex="-1" role="dialog" aria-labelledby="exampleModalLabel" aria-hidden="true">
            <div class="modal-dialog" role="document">
              <div class="modal-content">
                <div class="modal-header">
                  <h5 class="modal-title" id="exampleModalLabel">Adicionar uma nova aposta</h5>
                  <button type="button" class="close" data-dismiss="modal" aria-label="Fechar">
                    <span aria-hidden="true">&times;</span>
                  </button>
                </div>
                <div class="modal-body">
                  <section>
                      <div>
                          <form action="validarResultado.php" method="get" accept-charset="utf-8">
       
                                    <div class="form-group">
                                      <label>Valor Apostado:</label>
                                      <input type="text" class="form-control" id="valor" placeholder="Valor Apostado"
                                          name="valor">        
                                    </div>

                                    <div class="form-group">
                                      <label>ODD:</label>
                                      <input type="text" class="form-control" id="odd" placeholder="ODD" name="odd">                
                                   </div>
                                    <div class="form-group">
                                        <label for="Resultado">Resultado</label>
                                        <select id="inputEstado" class="form-control" name="resultado">
                                          <option selected>Escolher...</option>
                                          <option>Ganhou</option>
                                          <option>Perdeu</option>
                                        </select>
                                  </div>
                                </div>
                                    <button id="botaoCadastro" type="submit" name="enviar" class="btn btn-danger">Cadastrar</button>
                              </form>
                      </div>
                  </section>
                </div>
              </div>
            </div>
          </div>

          <section class="containerContatos">
              <div class="container">
                  <div class="row">
                      <div class="col-md-12">
                          <div class="d-flex justify-content-center table-responsive">
                              <table class="table table-striped" style="background: white;">
                                <thead class="thead-dark">
                                  <tr>
                                    <th scope="col">Valor</th>
                                    <th scope="col">ODD</th>
                                    <th scope="col">Resultado</th>
                                    <th scope="col">ID Aposta</th>
                                    <th scope="col">Retorno</th>
                                  </tr>
                                </thead>
                                <tbody>
                                    <?php
                                      while($dado = mysqli_fetch_assoc($con)) {
                                  ?>
                                  <tr>
                                    <td><?php echo $dado["valor"]; ?></td>
                                    <td><?php echo $dado["odd"]; ?></td>
                                    <td><?php echo $dado["resultado"]; ?></td>
                                    <td><?php echo $dado["idAposta"]; ?></td>
                                    <td><?php    
       
                                                $opcao1 = $dado["resultado"];                                                                                
                                                if ("$opcao1" == 'Ganhou') {
                                                    $retorno = ($dado["valor"] * $dado["odd"]) - $dado["valor"];
                                                    $retorno1 = $retorno;
                                                  $retorno1 = number_format($retorno1, 2, '.', '');
                                                  $retorno4 = $retorno;
                                                    echo "$retorno1";
                                                }
                                                if ("$opcao1" == 'Perdeu') {
                                                    $retorno = ($dado["valor"] - $dado["valor"]) - $dado["valor"];
                                                    $retorno1 = $retorno;
                                                  $retorno1 = number_format($retorno1, 2, '.', '');
                                                  $retorno4 = $retorno;
                                                    echo "$retorno1";
                                                }
                                                
                                            ?>                                          
                                    </td>                          
                                    </td>
                                  </tr>                            
                                  <?php } ?>
                                </tbody>
                              </table>
                          </div>
                      </div>
                  </div>
              </div>
          </section>    

          <?php  ?>
          

          
          <script src="https://cdn.jsdelivr.net/npm/popper.js@1.16.0/dist/umd/popper.min.js" integrity="sha384-Q6E9RHvbIyZFJoft+2mJbHaEWldlvI9IOYy5n3zV9zzTtmI3UksdQRVvoxMfooAo" crossorigin="anonymous"></script>
          <script src="https://stackpath.bootstrapcdn.com/bootstrap/4.4.1/js/bootstrap.min.js" integrity="sha384-wfSDF2E50Y2D1uUdj0O3uMBJnjuUD4Ih7YwaYd1iqfktj0Uod8GCExl3Og8ifwB6" crossorigin="anonymous"></script>
      </body>

      </html>
×

Important Information

Ao usar o fórum, você concorda com nossos Terms of Use.