64 lines
2.0 KiB
PHP
Executable File
64 lines
2.0 KiB
PHP
Executable File
<?php
|
|
|
|
namespace App\Http\Controllers;
|
|
|
|
use App\Models\FormAccessToken;
|
|
use Illuminate\Http\Request;
|
|
use Illuminate\Support\Str;
|
|
use Carbon\Carbon;
|
|
|
|
use Illuminate\Support\Facades\Mail;
|
|
|
|
class FormController extends Controller
|
|
{
|
|
public function createUserForm(Request $request)
|
|
{
|
|
$token = $request->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"');
|
|
});
|
|
}
|
|
}
|