Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

crazyshock

Iniciante com Laravel

Recommended Posts

Fala galera, tudo bem?

 

Estou precisando de uma pequena luz no meu caminho.. kkkk

Estou iniciando com o Laravel e claro estou com várias duvidas e estou pesquisando no google as mesmas.. Porém é o seguinte:

 

Resolvi utilizar o Laravel porque quero tornar minha aplicação mais profissional e assim aprender também algo novo. Uma dos meus objetivos é a facilidade que o Laravel tem para criarmos uma aplicação que seja tanto um CMS como um API para um dispostivo móvel e aqui que entra a minha dúvida que está me correndo...

 

Estou pesquisando, já encontrei muita coisa na internet mas não consegui compreender a forma que isso tudo trabalha.

Queria criar toda a minha aplicação em API ou seja tudo em WebService que funcionaria tanto para a WEB como para um APP Movel.

 

A primeira dúvida surgiu no seguinte quesito.

- Como que eu consigo personalizar a classe Auth ou se consigo criar uma Classe para que eu possa personalizar o select ao banco, nas minhas pesquisas e tudo mais eu vi que o laravel consulta os dados do username e password e pronto retorna os dados, porém eu tenho que consultar em N tabelas por exemplo para retornar várias informações, e não consegui encontrar algo mostrando isso.

 

- Sempre trabalhei com Sessões nas minhas aplicações e quando faço algum webservice crio Token, porém como que consigo trabalhar isso de forma generica no Laravel? Utilizando apenas Token? Encontrei algumas coisas falando sobre o JWT, mas com a dúvida anterior não consegui avançar nisso.

 

Eu sei que as minhas dúvidas são bem iniciantes, mas peço ajuda da comunidade porque provavelmente alguém já passou por isso e já tem um material de estudo que possa me ajudar.

 

Se tiver qualquer material ou quase coisa que da uma luz nesse caminho agradeço!! 

 

Agradeço a ajuda antecipadamente!

 

Compartilhar este post


Link para o post
Compartilhar em outros sites

Nem sempre você precisa modificar algo, dê uma lida sobre adapter

Compartilhar este post


Link para o post
Compartilhar em outros sites

Os links abaixo estão mais relacionado ao conceitos RESTful, JWT do que Laravel propriamente dito (não conheço muito a fundo o FW ainda)

 

Veja se da uma luz:

 

https://javabrains.io/

http://www.webstreaming.com.ar/articles/php-slim-token-authentication/

 

Compartilhar este post


Link para o post
Compartilhar em outros sites

Criar um API em webservice tem diversas formas

 

Você pode validar por token

Validar por dados de login e senha codificados em bse64

autenticação em headers...

 

Em relação a autenticação tem algumas maneiras.

Já o trafego das informações servidor > cliente > servidor, eu prefiro sempre trabalhar com cURL em objeto JSON.

 

Ao fazer isso, codificando em JSON diversas outras linguagens de programação consegue "conversar" com o seu sistema mesmo que ele seja em PHP.

Compartilhar este post


Link para o post
Compartilhar em outros sites
Citar

 

Em relação a autenticação tem algumas maneiras.

Já o trafego das informações servidor > cliente > servidor, eu prefiro sempre trabalhar com cURL em objeto JSON.

 

 

Eita como assim?

 

Consegue dar um exemplo?

 

 

Compartilhar este post


Link para o post
Compartilhar em outros sites
7 horas atrás, crazyshock disse:

Fala galera, tudo bem?

 

Estou precisando de uma pequena luz no meu caminho.. kkkk

 

  1. Codecast (Português)
  2. Laracast (Inglês)

     

Curso de graça versão 5.3

http://www.especializati.com.br/categoria/curso-de-laravel-53

 

Grupo focado

https://www.facebook.com/groups/laravelbrasil

Comunidade no github
https://github.com/laravelbrasil/forum/


Documentação

https://laravel.com/docs/5.4/


 

7 horas atrás, crazyshock disse:

Resolvi utilizar o Laravel porque quero tornar minha aplicação mais profissional e assim aprender também algo novo. Uma dos meus objetivos é a facilidade que o Laravel tem para criarmos uma aplicação que seja tanto um CMS como um API para um dispostivo móvel e aqui que entra a minha dúvida que está me correndo...

 

 

Faz tudo isso e muito mais...

 

 

7 horas atrás, crazyshock disse:

A primeira dúvida surgiu no seguinte quesito.

- Como que eu consigo personalizar a classe Auth ou se consigo criar uma Classe para que eu possa personalizar o select ao banco, nas minhas pesquisas e tudo mais eu vi que o laravel consulta os dados do username e password e pronto retorna os dados, porém eu tenho que consultar em N tabelas por exemplo para retornar várias informações, e não consegui encontrar algo mostrando isso.

 

Tudo é personalizado, você usa se você quiser, se quiser usar outra tabela para autenticar, só mude o nome da model que será a padrão,  a partir da versão 5.3 você tem que rodar o comando no console para ativar e usar as definições padrões de autenticação do laravel.

 

 

7 horas atrás, crazyshock disse:

- Sempre trabalhei com Sessões nas minhas aplicações e quando faço algum webservice crio Token, porém como que consigo trabalhar isso de forma generica no Laravel? Utilizando apenas Token? Encontrei algumas coisas falando sobre o JWT, mas com a dúvida anterior não consegui avançar nisso.

 

Melhor opção.

Abaixo tem um tuto

https://rafaell-lycan.com/2015/construindo-restful-api-laravel-parte-1/

 

https://rafaell-lycan.com/2016/construindo-restful-api-laravel-parte-2/

https://rafaell-lycan.com/2016/construindo-restful-api-laravel-parte-3/

 

 

 

7 horas atrás, crazyshock disse:

Eu sei que as minhas dúvidas são bem iniciantes, mas peço ajuda da comunidade porque provavelmente alguém já passou por isso e já tem um material de estudo que possa me ajudar.

 

ta tudo ai!

 

 

 

Compartilhar este post


Link para o post
Compartilhar em outros sites

Galera, consegui chegar nesta situação aqui:

 

Route::get('/', function(){
	//preciso verificar se o usuario esta logado ou nao
});

Route::group(['prefix' => 'api'], function () {
	
	Route::get('/', function () {
      return response()->json(['message' => 'Jobs API', 'status' => 'Connected']);;
  	});

    Route::post('/auth/login', 'UsuarioController@login');    
});

 

Preciso verificar quando o usuario entrar no link: www.meusite.com.br/ 

Se ele esta logado, como estou usando JWT ele gera token, então preciso verificar como se existe um token mas como posso fazer? Se eu estivesse usando a autenticação normal do Laravel usaria algo Auth::check() por exemplo e resolveria... 

Porém com Token como que faço???

Compartilhar este post


Link para o post
Compartilhar em outros sites

  • Conteúdo Similar

    • Por Carcleo
      Tenho uma abela de usuarios e uma tabela de administradores e clientes.
      Gostaria de uma ajuda para implementar um cadastro
       
      users -> name, login, passord (pronta) admins -> user_id, registratiom, etc.. client -> user_id, registratiom, etc...
      Queria ajuda para extender de user as classes Admin e Client
      Olhem como estáAdmin
      <?php namespace App\Models; use Illuminate\Database\Eloquent\Factories\HasFactory; use Illuminate\Database\Eloquent\Model; class Admin extends User {     use HasFactory;            protected $fillable = [         'name',         'email',         'password',         'registration'     ];      private string $registration;     public function create(         string $name,          string $email,          string $password,         string $registration     )     {         //parent::create(['name'=>$name, 'email'=>$email, 'password'=>$password]);         parent::$name = $name;         parent::$email = $email;         parent::$password = $password;         $this->registration = $registration;     } } User
      <?php namespace App\Models; // use Illuminate\Contracts\Auth\MustVerifyEmail; use Illuminate\Database\Eloquent\Factories\HasFactory; use Illuminate\Foundation\Auth\User as Authenticatable; use Illuminate\Notifications\Notifiable; use Illuminate\Database\Eloquent\Relations\BelongsToMany; class User extends Authenticatable {     /** @use HasFactory<\Database\Factories\UserFactory> */     use HasFactory, Notifiable;     static string $name;     static string $email;     static string $password;     /**      * The attributes that are mass assignable.      *      * @var list<string>      */     protected $fillable = [         'name',         'email',         'password',     ];          /**      * The attributes that should be hidden for serialization.      *      * @var list<string>      */     protected $hidden = [         'remember_token',     ];     /**      * Get the attributes that should be cast.      *      * @return array<string, string>      */     protected function casts(): array     {         return [             'email_verified_at' => 'datetime',             'password' => 'hashed',         ];     }          public function roles() : BelongsToMany {         return $this->belongsToMany(Role::class);     }       public function hasHole(Array $roleName): bool     {                 foreach ($this->roles as $role) {             if ($role->name === $roleName) {                 return true;             }         }         return false;     }         public function hasHoles(Array $rolesName): bool     {                 foreach ($this->roles as $role) {             foreach ($rolesName as $rolee) {             if ($role->name === $rolee) {                 return true;             }          }         }         return false;     }         public function hasAbility(string $ability): bool     {         foreach ($this->roles as $role) {             if ($role->abilities->contains('name', $ability)) {                 return true;             }         }         return false;     }     } Como gravar um Admin na tabela admins sendo que ele é um User por extensão?
      Tentei assim mas é claro que está errado...
      public function store(Request $request, Admin $adminModel) {         $dados = $request->validate([             "name" => "required",             "email" => "required|email",             "password" => "required",             "registration" => "required"         ]);         $dados["password"] =  Hash::make($dados["password"]);                  $admin = Admin::where("registration",  $dados["registration"])->first();                  if ($admin)              return                    redirect()->route("admin.new")                             ->withErrors([                                 'fail' => 'Administrador já cadastrados<br>, favor verificar!'                   ]);                            $newAdmin = $adminModel->create(                                    $dados['name'],                                    $dados['email'],                                    $dados['password'],                                    $dados['registration']                                 );         dd($newAdmin);         $adminModel->save();         //$adminModel::create($admin);                  return redirect()->route("admin.new")->with("success",'Cadastrado com sucesso');     }  
    • Por belann
      Olá!
       
      Estou tentando criar um projeto laravel e está dando o seguinte erro 
      curl error 60 while downloading https://getcomposer.org/versions: SSL certificate problem: unable to get local issu
        er certificate
      Já tentei atualizar o composer, mas dá o mesmo erro acima.
    • Por Frank K Hosaka
      Ontem de madrugada encontrei essa dica javascript - How do I get the value of the selected item in a datalist using pure JS? - Stack Overflow e com ele eu consegui terminar o meu código de paginação. O Laravel já tem um código pronto para ser usado, mas ele é funcional para uma tabela com 150 itens, o meu tem mais de 1500 itens, isso iria entupir a apresentação com um monte de guias. O meu só tem duas guias, o próximo e o anterior. E só lista 10 itens de cada vez.
       
      O mais bacana dessa madrugada é que eu aprendi a usar um pouco mais a  função console.log( ) do JavaScript, procurei exaustivamente uma maneira de obter o número do item da option do datalist, mas foi em vão. A dica que eu encontrei na internet é muito engenhosa, o rapaz encontrou no JavaScript uma função que procura um atributo da option que foi selecionada. Como o option não tem a opção de index, ele sugere criar uma.

      No Controller eu havia pedido para o Laravel trabalhar com os produtos em ordem alfabética, ou seja, a própria consulta já é um index. O único problema foi encontrar um jeito de colocar o index da consulta no option do datalist.

      Com quase tudo resolvido, o problema é fazer o loop do JavaScript funcionar. Graças ao fórum iMasters ou Script Brasil eu consegui uma ajuda. Eu recebi a sugestão de garantir que uma das variáveis dentro do loop do JavaScript seja do tipo inteiro. Eu achei a sugestão um absurdo, mas depois eu lembrei que o mundo dos computadores é bem diferente das abstrações que a gente inventou como os números inteiros e os números reais.
       
      Finalmente, aqui está o código. Ele foi escrito em Blade PHP, não é muito diferente do PHP: a diferença é que ele usa @ ao invés do tradicional <?php >. Nesse projeto pretendo trabalhar com o Bootstrap. Já o class="w600" não é Bootstrap, e sim uma gambiarra que eu fiz onde .w600 {width=600px}. Na imagem que eu deixei, dá para ver que eu ajuntei o nome do produto junto com o código dele, a minha ideia é para o usuário procurar o produto tanto pelo nome bem como pelo código. O datalist é muito bacana, pena que não dá para alterar a fonte e nem fazer a busca semelhante, ou seja, se você digitar "limão", ele não lista se foi cadastrado "limao".

       
      @include('menu') <script> var icontrole document.title='Produto';btmenu.innerHTML='Procurar produto por nome' function controle(comando){ if(comando=="proximo"){ if(icontrole<produtos.options.length){icontrole+=10;show(icontrole)}} if(comando=="anterior"){ if(icontrole>9){icontrole-=10;show(icontrole)}}} function lista(input){ option=Array.prototype.find.call(produto.list.options,function(option){ return option.value === input}) show(option.getAttribute("id"))} function show(j){ j=parseInt(j) divshow.innerHTML="" for(i=j;i<=j+9;i++){ divshow.innerHTML+=produtos.options[i].value+"<br>"} produto.value="" icontrole=j} </script> <div class="w600 m-auto"> <input list=produtos autofocus id=produto onchange=lista(value)> <datalist id=produtos> @foreach($prod as $key=> $pr) <option id={{$key}}>{{$pr->prod}} [{{$pr->codprod}}] @endforeach </datalist></div> <div class="w600 m-auto" id=divshow></div> @if(empty($show)) <script>show(0)</script> @php $show="já começou" @endphp @endif <div class="w600 m-auto"> <input type=submit value=Anterior onclick="controle('anterior')"> <input type=submit value=Próximo onclick="controle('proximo')"> </div>  

    • Por ckcesar
      Pesoal  eu instalei o Laravel em meu pc, mais ao rodar estou enfrentando um erro de permissão. 
      Eu segui os passas da documentação => https://laravel.com/docs/9.x#getting-started-on-windows
       
      Ao entrar no localhost ele retorna esse erro. A lembrando que no docker ele inicial certinho o mysql roda ok, é somente essa pasta storege. Estou tentando resolver mais tudo que eu faço não funfa, estou dando permissão nas pastas, já mudei o arquivo .env e nada.
       
      The stream or file "/var/www/html/storage/logs/laravel.log" could not be opened in append mode: Failed to open stream: Permission denied The exception occurred while attempting to log: The stream or file "/var/www/html/storage/logs/laravel.log" 
       

    • Por joeythai
      Boa tarde pessoal,
       
      Eu tenho um foreach que está me trazendo apenas um resultado a partir de uma consulta, mas na verdade tem que me retornar 10 itens:
      <code>
      public function getBillsUnpaid($date)
      {
      $results = [];
      $numberBills = $this->lotModel->select(DB::RAW("
      Lotes.ID AS Lote_ID,
      Compradores.ID as Comprador_ID,
      Compradores.CompradorWeb_ID,
      Compradores.NM as NM_Comprador,
      Lotes.Leilao_ID as Leilao_ID,
      Lotes.NU as NU_Lote,
      FORMAT(lotes.DT_VenctoBoleto, 'yyyy-MM-dd') as DT_VenctoBoleto,
      REPLACE(
      (CASE
      WHEN
      LEN(LTRIM(RTRIM(ISNULL(Compradores.NM_DDDCel,'')))) > 0 AND
      LEN(LTRIM(RTRIM(ISNULL(Compradores.NM_Celular,'')))) > 0
      THEN CONCAT(
      LTRIM(RTRIM(Compradores.NM_DDDCel)),'',
      LTRIM(RTRIM(Compradores.NM_Celular))
      )
      WHEN
      LEN(LTRIM(RTRIM(ISNULL(Compradores.NM_DDDTel,'')))) > 0 AND
      LEN(LTRIM(RTRIM(ISNULL(Compradores.NM_Telefone,'')))) > 0
      THEN CONCAT(
      LTRIM(RTRIM(Compradores.NM_DDDTel)),'',
      LTRIM(RTRIM(Compradores.NM_Telefone))
      )
      ELSE ''
      END)
      ,'-', '') AS NM_Celular,
      Lotes.VL_Venda,
      ISNULL(Lotes.VL_Cobranca, 0) as VL_Cobranca,
      ISNULL((
      SELECT SUM(VL_Cobertura)
      FROM LotesXPagamentos
      WHERE Lote_ID = lotes.ID
      AND Pagamento_ID IS NOT NULL
      ), 0) as VL_Pago,
      CONCAT(Lotes.NM_Descricao, '', Lotes.MM_ExtDescricao) as NM_Descricao
      "))
      ->join('Leiloes', 'Leiloes.ID', '=', 'Lotes.Leilao_ID')
      ->join('Compradores', 'Compradores.ID', '=', 'Lotes.Comprador_ID')
      ->where('Lotes.ST_Lote', 3)
      ->where('Lotes.DT_VenctoBoleto', '>', '2021-03-01')
      ->whereRaw("
      ISNULL((
      SELECT SUM(VL_Cobertura)
      FROM LotesXPagamentos
      WHERE Lote_ID = Lotes.ID
      AND Pagamento_ID IS NOT NULL
      ), 0) = 0")
      ->orderBy('Lotes.NU')
      ->take(10)
      ->get();
      if(count($numberBills) > 0){
      foreach($numberBills as $bills){
      $results['CompradorWeb_ID'] = $bills->CompradorWeb_ID;
      $results['DT_VenctoBoleto'] = $bills->DT_VenctoBoleto;
      $results['VL_Cobranca'] = $bills->VL_Cobranca;
      $results['Lote_ID'] = $bills->Lote_ID;
      $results['Comprador_ID'] = $bills->Comprador_ID;
      $results['NM_Comprador'] = $bills->NM_Comprador;
      $results['NM_Descricao'] = $bills->NM_Descricao;
      $results['VL_Pago'] = $bills->VL_Pago;
      $results['NU_Lote'] = $bills->NU_Lote;
      $results['Leilao_ID'] = $bills->Leilao_ID;
      $phones = $this->getPhoneUsers($bills->CompradorWeb_ID);
      $results['NM_Celular'] = (!is_null(@$phones->fone_celular)) ? $phones->fone_celular : $bills->NM_Celular;
      return $results;
      }
      }
      }
      </code>
       
      Se eu retorno somente a variavel $numberBills, ele me traz o resultado certinho, porém, eu não posso retornar essa variavel pq preciso pegar o resultado dela e chamar a minha outra função que faz conexão com outra base de dados e por isso eu criei esse array result, percebam que o numero do telefone vai vir da minha tabela A(função que pega o telefone) e caso não tenha o telefone nela, eu pego o numero da tabela B(resultado dessa query) porem qdo do return $results, so me retorna o primeiro registro, o que estou fazendo de errado ?
×

Informação importante

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