Skip to main content
#P1486

POST /api/v2/base/certificate

Route Info

Method Endpoint Controller Middleware Purpose
POST /api/v2/base/certificate V2BaseController@storeCertificate authWithJwt ثبت گواهی‌نامه جدید در جدول certificates بر اساس داده‌های ورودی.

منطق عملکرد تابع

تابع storeCertificate پس از دریافت پارامترهای اجباری (title، license_number، exporter و فایل document) گواهی را برای شعبهٔ کاربر ایجاد می‌کند و رکورد جدید را در جدول certificates درج می‌نماید. مقدار created_at و updated_at با زمان فعلی تکمیل می‌شود.

ورودی‌ها

نام پارامتر نوع منبع الزامی توضیح
branch integer JWT/Header بله شناسه شعبه صادرکننده.
title string Body بله عنوان گواهی‌نامه.
license_number string Body خیر شماره سریال یا مجوز.
exporter string Body بله مرجع صادرکننده.
expiration string (YYYY-MM-DD) Body خیر تاریخ انقضاء.
document string (path) Body بله مسیر فایل بارگذاری‌شده.
content string Body خیر محتوای متنی یا توضیح سند.

خروجی (Response)

{
  "meta": {"timestamp": 1750669255},
  "payload": {
    "id": 210,
    "title": "مجوز فنی اقامتگاه‌ها",
    "exporter": "وزارت گردشگری",
    "expiration": "2026-02-01",
    "document": "media/certificates/acm_license.pdf"
  }
}

نکات امنیتی

  • توکن JWT الزامی است.
  • عملیات فقط برای نقش‌های مجاز مثل DocumentAdmin.
  • اعتبارسنجی فایل ورودی؛ فقط PDF و تصویر مجاز.

نکات عملکردی

  • ورودی ساده بدون عملیات چندجدولی.
  • امکان کش Redis برای فهرست پس از ثبت (TTL 1800s).
  • عملیات درج داخل تراکنش اتمیک.

وابستگی‌ها

  • use Illuminate\Support\Facades\DB;
  • use Carbon\Carbon;
  • use Exception;

کدهای خطا

کد شرح
400 داده ناقص یا فایل نامعتبر.
500 خطا در درج رکورد در پایگاه داده.

پیشنهادهای امنیتی

  • بررسی نقش با can('create_certificate').
  • ضبط عملیات در جدول حسابرسی.

پیشنهادهای بهبود

  • اضافه کردن نسخه‌بندی سند.
  • رمزنگاری مسیر فایل‌ها.

ممیزی

نوع لاگ: CreateCertificate. سطح: Important.

جمع‌بندی

مسیر POST /base/certificate مسئول ایجاد گواهی‌نامه جدید است و باید کنترل نقش دقیق همراه با ثبت حسابرسی داشته باشد.