feat: add ApiResponse trait for standardized API responses

chore: update composer dependencies to include phppresentation

chore: update composer.lock after adding phppresentation

feat: create categories migration for category management

feat: create templates migration for template storage

feat: create template generations migration for tracking template usage

feat: create template keys migration for template customization

feat: create notifications migration for user notifications

feat: update API routes for categories, templates, and user profile management

docs: update API documentation to include new endpoints for profile and wallet
This commit is contained in:
2026-07-07 01:03:12 +03:30
parent cf0e6f82fd
commit ae974c2afa
68 changed files with 3594 additions and 100 deletions

View File

@@ -0,0 +1,39 @@
<?php
namespace App\Policies;
use App\Models\Category;
use App\Models\User;
class CategoryPolicy
{
public function viewAny(User $user): bool
{
return $this->canManage($user);
}
public function view(User $user, Category $category): bool
{
return $this->canManage($user);
}
public function create(User $user): bool
{
return $this->canManage($user);
}
public function update(User $user, Category $category): bool
{
return $this->canManage($user);
}
public function delete(User $user, Category $category): bool
{
return $this->canManage($user);
}
private function canManage(User $user): bool
{
return $user->hasRole('admin') || $user->hasPermission('templates.manage');
}
}

View File

@@ -0,0 +1,34 @@
<?php
namespace App\Policies;
use App\Models\Notification;
use App\Models\User;
class NotificationPolicy
{
public function viewAny(User $user): bool
{
return true;
}
public function view(User $user, Notification $notification): bool
{
return $user->id === $notification->user_id || $this->canManage($user);
}
public function update(User $user, Notification $notification): bool
{
return $this->canManage($user);
}
public function delete(User $user, Notification $notification): bool
{
return $this->canManage($user);
}
private function canManage(User $user): bool
{
return $user->hasRole('admin') || $user->hasPermission('notifications.manage');
}
}

View File

@@ -0,0 +1,39 @@
<?php
namespace App\Policies;
use App\Models\Template;
use App\Models\User;
class TemplatePolicy
{
public function viewAny(User $user): bool
{
return $this->canManage($user);
}
public function view(User $user, Template $template): bool
{
return $this->canManage($user);
}
public function create(User $user): bool
{
return $this->canManage($user);
}
public function update(User $user, Template $template): bool
{
return $this->canManage($user);
}
public function delete(User $user, Template $template): bool
{
return $this->canManage($user);
}
private function canManage(User $user): bool
{
return $user->hasRole('admin') || $user->hasPermission('templates.manage');
}
}