feat: add legal document acceptance and standard project files generation
Implement legal document acceptance tracking requiring users to accept terms of service and privacy policy before continuing to use the system. Add automatic generation of standard project files (LICENSE, README.md, RULES.md, cookies.html, termos-de-uso.html, privacidade.html) with download functionality. Enhance prompt building with detailed Portuguese instructions and system requirements. Update seeders with comprehensive legal content and standard files configuration for all prompt templates.
This commit is contained in:
@@ -6,9 +6,12 @@ namespace App\Http\Controllers\Legal;
|
||||
|
||||
use App\Http\Controllers\Controller;
|
||||
use App\Models\LegalDocument;
|
||||
use App\Models\UserDocumentAcceptance;
|
||||
use Illuminate\Http\RedirectResponse;
|
||||
use Illuminate\Http\Request;
|
||||
use Illuminate\Support\Facades\Auth;
|
||||
use Illuminate\Validation\Rule;
|
||||
use Illuminate\View\View;
|
||||
|
||||
class LegalDocumentController extends Controller
|
||||
{
|
||||
@@ -76,10 +79,47 @@ class LegalDocumentController extends Controller
|
||||
/**
|
||||
* Display the legal document page.
|
||||
*/
|
||||
public function show(string $type)
|
||||
public function show(string $type): View|RedirectResponse
|
||||
{
|
||||
$document = LegalDocument::where('type', $type)->latest('version')->firstOrFail();
|
||||
|
||||
return view('legal.documents.show', compact('document'));
|
||||
$pendingAcceptance = false;
|
||||
if (Auth::check() && Auth::user()->role !== 'superadmin') {
|
||||
$accepted = UserDocumentAcceptance::where('user_id', Auth::id())
|
||||
->where('legal_document_id', $document->id)
|
||||
->exists();
|
||||
|
||||
if (!$accepted) {
|
||||
$pendingAcceptance = true;
|
||||
}
|
||||
}
|
||||
|
||||
return view('legal.documents.show', compact('document', 'pendingAcceptance'));
|
||||
}
|
||||
|
||||
/**
|
||||
* Accept a legal document.
|
||||
*/
|
||||
public function accept(string $type): RedirectResponse
|
||||
{
|
||||
$document = LegalDocument::where('type', $type)->latest('version')->firstOrFail();
|
||||
|
||||
if (Auth::check()) {
|
||||
UserDocumentAcceptance::updateOrCreate(
|
||||
[
|
||||
'user_id' => Auth::id(),
|
||||
'legal_document_id' => $document->id,
|
||||
],
|
||||
[
|
||||
'document_version' => $document->version,
|
||||
'ip_address' => request()->ip(),
|
||||
'user_agent' => request()->userAgent(),
|
||||
'accepted_at' => now(),
|
||||
]
|
||||
);
|
||||
}
|
||||
|
||||
return redirect()->route('dashboard')
|
||||
->with('success', 'Documento aceito com sucesso.');
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user