Ir para conteúdo
Fórum Script Brasil
  • 0

Frank K Hosaka

Pergunta

Para trabalhar com o projeto PHP com um PC e um celular, eu criei dois usuários através de duas senhas na tbsupervariavel, que pode ser facilmente modificado com o MySQL.

Já o Laravel é bem mais organizado. Ele criou uma tabela chamada users, e dentro dele tem email, password e outros campos. Não dá para modificar a senha pelo MySQL, se você fizer isso, o usuário nunca mais vai conseguir logar no Laravel. O password da tabela user não é um texto, não é um código hexadecimal tipo md5, é coisa bem particular só do Laravel.

Logo, eu precisei  buscar o código de atualização da senha no Google, e foi fácil encontrar: How to change password in laravel 9 (techtoolindia.com). Tentei implantar no meu projeto, e só tive problema no view, aonde o tutorial escreveu @extends('layouts.app') eu mudei para @extends('layout').

O maior problema é que o Laravel pede uma senha de pelo menos 6 caracteres. Isso é muito para mim, 4 caracteres é o ideal para mim. O meu projeto é simples, estou pensando em tirar o campo email, para facilitar o trabalho de login. Mas para alterar o número de caracteres, eu alterei essa função:

 

class AuthController extends Controller{
public function postRegistration(Request $request){  
        $request->validate(['name' => 'required','email' => 'required|email|unique:users',
            'password' => 'required|min:4',]);

 

Editado por Frank K Hosaka
Link para o comentário
Compartilhar em outros sites

2 respostass a esta questão

Posts Recomendados

  • 0

Eu consegui tirar o campo Email da tela do Login (basta usar <!--div /div-- > no bloco que pede o email. Claro que só isso não basta. Eu encontrei uma dica bacana em php - Laravel: Using only password auth for intranet app - Stack Overflow.

A sugestão é essa

$credentials = [ 'email' => 'intranet@intranet', 'password' => $request->input('password') ];

isso no LoginController. A solução é bem engenhosa, mas só funciona se você colocar todo o projeto na mão de um único usuário. No meu caso, tenho dois usuários. Fiz uma bela gambiarra que deu certo, mas não vou publicar aqui para não virar motivo de piada.

Eu tentei usar o recurso de localizar o usuário pela senha, mas eu não consegui porque a senha está criptografada. Se você usar o recurso Hash::make('senha'), ele sempre vai gerar uma senha nova e nunca vai ser igual ao que foi gravado na tabela. Tentei usar o recurso Cript::decript, mas ele pediu mais um argumento além da senha textual. Decidi fazer uma gambiarra, e esquecer tudo isso, e trabalhar com o campo email se surgir um terceiro usuário.

Link para o comentário
Compartilhar em outros sites

  • 0

Depois de pesquisar o Google e várias tentativas e erros, finalmente descobri um jeito de descobrir o usuário através da senha.

class AuthController extends Controller{
public function postLogin(Request $request){
        //$request->validate(['email' => 'required','password' => 'required']);
        $request->validate(['password'=>'required']);
        $email='tentativa@erro.com';
        $user=User::where('id',1)->get()->toArray();
        if(Hash::check($request->input('password'),$user[0]['password'])){$email=$user[0]['email'];}
        $user=User::where('id',2)->get()->toArray();
        if(Hash::check($request->input('password'),$user[0]['password'])){$email=$user[0]['email'];}
        //$credentials = $request->only('email', 'password');
        $credentials=['email'=> $email,'password'=>$request->input('password')];
        if (Auth::attempt($credentials)) {
            return redirect()->intended('dashboard')->withSuccess('You have Successfully loggedin');}
        return redirect("")->withSuccess('Oppes! You have entered invalid credentials');}
}

Mas esse código não funciona se você não mexer também no Models

class User extends Authenticatable
{

 // protected $hidden = ['password','remember_token',];

}

Aqui estou pedindo para exibir o campo password da tabela users. O Laravel é muito engenhoso!

Link para o comentário
Compartilhar em outros sites

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,3k
    • Posts
      652,5k
×
×
  • Criar Novo...