Files
marcocosta10000 ab6df785c4 feat(pdf): add DomPDF integration and ebook download feature
Integrate barryvdh/laravel-dompdf package for PDF generation with
custom configuration. Add authenticated ebook download route and view.
Update footer to display ebook download link for logged-in users.
2026-10-07 22:28:01 -03:00

128 lines
5.9 KiB
PHP
Executable File

<?php
use App\Http\Controllers\AiAgentController;
use App\Http\Controllers\ChatController;
use App\Http\Controllers\AiProvider\AiProviderController;
use App\Http\Controllers\Auth\CaptchaController;
use App\Http\Controllers\DashboardController;
use App\Http\Controllers\HomeController;
use App\Http\Controllers\ProfileController;
use App\Http\Controllers\PromptGeneration\PromptGenerationController;
use App\Http\Controllers\PromptTemplate\PromptTemplateController;
use App\Http\Controllers\PromptProject\PromptProjectController;
use App\Http\Controllers\Tutorial\TutorialController;
use App\Http\Controllers\UserController;
use Illuminate\Support\Facades\Route;
Route::get('/', [HomeController::class, 'index'])->name('welcome');
Route::get('/dashboard', [DashboardController::class, 'index'])
->middleware(['auth', 'verified', 'user.approved'])
->name('dashboard');
Route::get('/profile', [ProfileController::class, 'index'])
->middleware(['auth', 'verified', 'user.approved'])
->name('profile.index');
Route::get('/profile/edit', [ProfileController::class, 'edit'])
->middleware(['auth', 'verified', 'user.approved'])
->name('profile.edit');
Route::put('/profile', [ProfileController::class, 'update'])
->middleware(['auth', 'verified', 'user.approved'])
->name('profile.update');
Route::get('/tutorial', [TutorialController::class, 'index'])
->middleware(['auth', 'user.approved'])
->name('tutorial.index');
Route::get('/tutorial/lesson/{id}', [TutorialController::class, 'lesson'])
->middleware(['auth', 'user.approved'])
->name('tutorial.lesson');
Route::get('/tutorial/quiz', [TutorialController::class, 'quiz'])
->middleware(['auth', 'user.approved'])
->name('tutorial.quiz');
Route::post('/tutorial/quiz/submit', [TutorialController::class, 'submitQuiz'])
->middleware(['auth', 'user.approved'])
->name('tutorial.quiz.submit');
Route::get('/tutorial/certificate', [TutorialController::class, 'certificate'])
->middleware(['auth', 'user.approved'])
->name('tutorial.certificate');
Route::get('/captcha', [CaptchaController::class, 'generate'])->name('captcha.generate');
Route::middleware(['auth', 'verified', 'user.approved', 'documents.accepted'])->group(function () {
Route::resource('prompt-projects', PromptProjectController::class);
Route::post('prompt-projects/{promptProject}/generate', [PromptProjectController::class, 'generate'])
->name('prompt-projects.generate');
Route::get('prompt-projects/{promptProject}/prompt', [PromptProjectController::class, 'getPrompt'])
->name('prompt-projects.prompt');
Route::get('prompt-projects/{promptProject}/standard-files', [PromptProjectController::class, 'getStandardFiles'])
->name('prompt-projects.standard-files');
Route::get('prompt-projects/{promptProject}/standard-files/{filename}/download', [PromptProjectController::class, 'downloadFile'])
->name('prompt-projects.download-file');
Route::resource('prompt-generations', PromptGenerationController::class)->only(['index']);
Route::delete('prompt-generations/{generation}', [PromptGenerationController::class, 'destroy'])
->name('prompt-generations.destroy');
Route::resource('ai-providers', AiProviderController::class);
Route::resource('users', UserController::class)->only(['index', 'edit', 'update', 'destroy']);
Route::get('prompt-templates/api', [PromptTemplateController::class, 'api'])
->name('prompt-templates.api');
Route::resource('prompt-templates', PromptTemplateController::class);
Route::delete('users/{user}', [UserController::class, 'destroy'])->name('users.destroy');
Route::get('ai-agent', [AiAgentController::class, 'index'])
->name('ai-agent.index');
Route::post('ai-agent/execute', [AiAgentController::class, 'execute'])
->name('ai-agent.execute');
Route::get('ai-agent/models', [AiAgentController::class, 'getModels'])
->name('ai-agent.models');
Route::get('chat', [ChatController::class, 'index'])
->name('chat.index');
Route::post('chat/send', [ChatController::class, 'send'])
->name('chat.send');
Route::post('chat/reset', [ChatController::class, 'reset'])
->name('chat.reset');
Route::get('chat/models', [ChatController::class, 'getModels'])
->name('chat.models');
});
Route::middleware(['auth', 'verified', 'user.approved', 'documents.accepted'])->prefix('legal')->name('legal.')->group(function () {
Route::get('documents', [App\Http\Controllers\Legal\LegalDocumentController::class, 'index'])->name('documents.index');
Route::get('documents/{type}/edit', [App\Http\Controllers\Legal\LegalDocumentController::class, 'edit'])->name('document.edit');
Route::put('documents/{type}', [App\Http\Controllers\Legal\LegalDocumentController::class, 'update'])->name('document.update');
});
Route::get('legal/documents/{type}', [App\Http\Controllers\Legal\LegalDocumentController::class, 'show'])
->where('type', 'terms-of-service|privacy-policy')
->name('legal.document.show');
Route::post('legal/documents/{type}/accept', [App\Http\Controllers\Legal\LegalDocumentController::class, 'accept'])
->where('type', 'terms-of-service|privacy-policy')
->middleware(['auth'])
->name('legal.document.accept');
Route::get('terms-of-service', function () {
return redirect()->route('legal.document.show', 'terms-of-service');
});
Route::get('privacy-policy', function () {
return redirect()->route('legal.document.show', 'privacy-policy');
});
Route::post('/cookie-consent', [App\Http\Controllers\Legal\CookieConsentController::class, 'store'])
->middleware(['web'])
->name('cookie.consent.store');
Route::get('ebook/download', function () {
$path = public_path('ebooks/GPrompt-Ebook-Desenvolvedores-v1.pdf');
if (!file_exists($path)) {
abort(404, 'Ebook não encontrado');
}
return response()->file($path, ['Content-Type' => 'application/pdf']);
})->name('ebook.download');
require __DIR__.'/auth.php';