echo75 Başlangıç için şöyle olabilir mesela:
modules
Her modül için gereksinimleri options adı altında jsonb bir alanda tutabilirsiniz. Bu alan ile gerekirse validasyon ve otomatik form oluşturma yapılabilir.
+----+-----------------------+-----------+-------------------------------------------------+
| id | name | slug | options(jsonb) |
+----+-----------------------+-----------+-------------------------------------------------+
| 1 | Örnek API Entegrasyon | ornek-api | {"client_id":"string","client_secret":"string"} |
+----+-----------------------+-----------+-------------------------------------------------+
company_module_visibility
Uygulama marketi gibi bir şey yapmak isterseniz, firmalar modülleri kendi seçebilecekse, tüm modüllerin tüm firmalara gösterilmesini istemeyebilirsiniz. Bu şekilde ayrı bir pivotta modüller listelenirken hangi firmaların görebileceğini tutabilirsiniz.
+------------+-----------+
| company_id | module_id |
+------------+-----------+
| 16 | 1 |
+------------+-----------+
company_module
Bu tabloda hangi firma hangi modülü kullanacak onu tutarsınız. options alanında da modules tablosunda belirtilen modül gereksinimlerine göre firmaya özel bilgileri tutarsınız.
+------------+-----------+-----------+-----------------------------------------------------------+
| company_id | module_id | is_active | options |
+------------+-----------+-----------+-----------------------------------------------------------+
| 16 | 1 | true | {"credentials":{"client_id":"123","client_secret":"abc"}} |
+------------+-----------+-----------+-----------------------------------------------------------+
Şu şekilde de bir ilerleme yapılabilir.
if($company->hasModule('ornek-api')) {
$options = $company->moduleOptions('ornek-api');
$clientId = $options->getClientId();
$clientSecret = $options->getClientSecret();
// ...
}