Ajuda, erro no Laravel com ResetPasswordController

  • Autor Autor eswal200
  • Data de início Data de início
Este tópico foi traduzido automaticamente do espanhol. Ver original
eswal200

eswal200

Préstamo impago
1
Zeta
Verificación en dos pasos activada
Suscripción a IA
Olá pessoal. Vou contextualizar:

Me passaram um programa feito em Laravel, mas ele tem alguns problemas que estou resolvendo, porém travei no arquivo Controllers/Auth/ResetPasswordController.php

Quando vou para: http://localhost/free/password/reset

123Gj.webp


Tudo vai bem, até que clico no botão de RESET, ele me dá o seguinte erro:

123Gj.webp


Ele atualiza a senha, já que se vou ao index e faço login com a nova senha, tudo está OK.

Supõe-se que depois de pressionar o botão de reset ele deveria me redirecionar para: iniciar sessão ou para o painel de controle, mas NÃO, aparece esse erro.

Aqui passo o código do arquivo: ResetPasswordController.php

Inserir CODE, HTML ou PHP:
<?php

namespace App\Http\Controllers\Auth;

use App\Http\Controllers\Controller;
use Illuminate\Foundation\Auth\ResetsPasswords;
use Illuminate\Http\Request;

class ResetPasswordController extends Controller
{
    /*
    |--------------------------------------------------------------------------
    | Password Reset Controller
    |--------------------------------------------------------------------------
    |
    | This controller is responsible for handling password reset requests
    | and uses a simple trait to include this behavior. You're free to
    | explore this trait and override any methods you wish to tweak.
    |
    */

    use ResetsPasswords;

    /**
     * Where to redirect users after resetting their password.
     *
     * @var string
     */
    //protected $redirectTo = '/home';

    /**
     * Create a new controller instance.
     *
     * @return void
     */
    public function __construct()
    {
        $this->middleware('guest');
    }

    /**
     * Get the response for a successful password reset.
     *
     * @param  \Illuminate\Http\Request  $request
     * @param  string  $response
     * @return \Illuminate\Http\RedirectResponse|\Illuminate\Http\JsonResponse
     */
    protected function sendResetResponse(Request $request, $response)
    {
        $role_id = auth()->user()->userRoles->first()->role_id;
        $request->session()->put('role_id', $role_id);

        return redirect()->route('home')
                            ->with('status', trans($response));
    }
}

Alguém pode me ajudar a resolver o problema? Não sei como fazer.

😭😭😭😭😭
 
Foi útil? Participe da conversa

Com sua conta grátis você pode responder, mandar mensagem privada ao autor e comprar com Saldo retido: o pagamento é liberado quando você recebe o combinado.

Leva 30 segundos · você volta a este tópico ao terminar
o erro diz que ao ler o role_id ele é nulo, verifique se está sendo enviado corretamente
 
A solução que encontrei foi esta:

Eliminei isto:

PHP:
    protected function sendResetResponse(Request $request, $response)
    {
        $role_id = auth()->user()->userRoles->first()->role_id;
        $request->session()->put('role_id', $role_id);

        return redirect()->route('home')
                            ->with('status', trans($response));
    }



e adicionei isto:

Inserir CODE, HTML ou PHP:
 protected $redirectTo = '/dashboard';



Já está tudo funcionando OK.

O que vocês acham
 
Na verdade, essa parte é responsável por realizar uma atualização na sessão (chave role_id).

Verifique se, no nível do banco de dados, o usuário que você está testando tem um Role atribuído; talvez eles não tenham roles e por isso não encontra o ID do Role dele.

De qualquer forma, poderia ser assim

PHP:
    protected function sendResetResponse(Request $request, $response)
    {
        $role_id = auth()->user()->userRoles->first()->role_id;
        if (!empty($role_id))
            $request->session()->put('role_id', $role_id);

        return redirect()->route('home')
                            ->with('status', trans($response));
    }
 
Olá @vicram10

Sim, existem 2 roles de usuário:

1-Cliente
2-Funcionário

Vou testar seu código
 
Na verdade, essa parte é responsável por realizar uma atualização na sessão (chave role_id).

Verifique se, no nível do banco de dados, o usuário que você está testando tem um Role atribuído; talvez eles não tenham roles e por isso não encontra o ID do Role dele.

De qualquer forma, poderia ser assim

PHP:
    protected function sendResetResponse(Request $request, $response)
    {
        $role_id = auth()->user()->userRoles->first()->role_id;
        if (!empty($role_id))
            $request->session()->put('role_id', $role_id);

        return redirect()->route('home')
                            ->with('status', trans($response));
    }


Já testei e continua dando o mesmo problema

"Attempt to read property "role_id" on null"
 
não percebi que está "quebrando" antes do if que adicionei, de qualquer forma, pode-se adicionar uma condicional antes de tentar atribuir.

PHP:
$role_id = 0;

if (auth()->user()->userRoles->first()->role_id != null){
   $role_id = auth()->user()->userRoles->first()->role_id;  
   $request->session()->put('role_id', $role_id);
}
 
Se quiser, suba em um repositório e eu resolvo o erro para você.
 
Voltar
Topo