query('token'); $tokenRecord = FormAccessToken::where('token', $token)->first(); if (!$tokenRecord || $tokenRecord->expires_at <= now()) { if ($tokenRecord) { $email = $tokenRecord->email; $tokenRecord->delete(); // Apaga o registro do token expirado // Reenviar o email $this->gerarEnviarEmail($email); return redirect('/login')->with('success', 'O token anterior expirou, consequentemente,um novo link foi remetido para o seu email.'); } else { return redirect('/login')->with('danger', 'O token é inválido.'); } } else { // Token é válido e ainda não expirou return view('email/FormAdmin', compact('tokenRecord')); } } public function enviarEmail(Request $request) { $email = $request->input('email'); $this->gerarEnviarEmail($email); return back()->with('status', 'Email enviado com sucesso!'); } protected function gerarEnviarEmail($email) { // Gerar um token único $token = Str::random(60); // Definir o tempo de expiração do token (ex: 1 hora a partir de agora) $expiresAt = Carbon::now()->addHour(); // Criar registro na tabela form_access_tokens FormAccessToken::create([ 'token' => $token, 'email' => $email, 'expires_at' => $expiresAt, ]); // Enviar email Mail::send('email.email', ['token' => $token], function ($message) use ($email) { $message->to($email); $message->subject('Formulário "Ispt4.0"'); }); } }