feat: 實作 Multi-tenancy 多租戶架構 (stancl/tenancy)
- 安裝並設定 stancl/tenancy 套件 - 分離 Central / Tenant migrations - 建立 Tenant Model 與資料遷移指令 - 建立房東後台 CRUD (Landlord Dashboard) - 新增租戶管理頁面 (列表、新增、編輯、詳情) - 新增域名管理功能 - 更新部署手冊
This commit is contained in:
228
composer.lock
generated
228
composer.lock
generated
@@ -4,7 +4,7 @@
|
||||
"Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies",
|
||||
"This file is @generated automatically"
|
||||
],
|
||||
"content-hash": "edfbf8e1cc43c925ea8b04fc1f93da65",
|
||||
"content-hash": "931b01f076d9ee28568cd36f178a0c04",
|
||||
"packages": [
|
||||
{
|
||||
"name": "brick/math",
|
||||
@@ -508,6 +508,59 @@
|
||||
],
|
||||
"time": "2025-03-06T22:45:56+00:00"
|
||||
},
|
||||
{
|
||||
"name": "facade/ignition-contracts",
|
||||
"version": "1.0.2",
|
||||
"source": {
|
||||
"type": "git",
|
||||
"url": "https://github.com/facade/ignition-contracts.git",
|
||||
"reference": "3c921a1cdba35b68a7f0ccffc6dffc1995b18267"
|
||||
},
|
||||
"dist": {
|
||||
"type": "zip",
|
||||
"url": "https://api.github.com/repos/facade/ignition-contracts/zipball/3c921a1cdba35b68a7f0ccffc6dffc1995b18267",
|
||||
"reference": "3c921a1cdba35b68a7f0ccffc6dffc1995b18267",
|
||||
"shasum": ""
|
||||
},
|
||||
"require": {
|
||||
"php": "^7.3|^8.0"
|
||||
},
|
||||
"require-dev": {
|
||||
"friendsofphp/php-cs-fixer": "^v2.15.8",
|
||||
"phpunit/phpunit": "^9.3.11",
|
||||
"vimeo/psalm": "^3.17.1"
|
||||
},
|
||||
"type": "library",
|
||||
"autoload": {
|
||||
"psr-4": {
|
||||
"Facade\\IgnitionContracts\\": "src"
|
||||
}
|
||||
},
|
||||
"notification-url": "https://packagist.org/downloads/",
|
||||
"license": [
|
||||
"MIT"
|
||||
],
|
||||
"authors": [
|
||||
{
|
||||
"name": "Freek Van der Herten",
|
||||
"email": "freek@spatie.be",
|
||||
"homepage": "https://flareapp.io",
|
||||
"role": "Developer"
|
||||
}
|
||||
],
|
||||
"description": "Solution contracts for Ignition",
|
||||
"homepage": "https://github.com/facade/ignition-contracts",
|
||||
"keywords": [
|
||||
"contracts",
|
||||
"flare",
|
||||
"ignition"
|
||||
],
|
||||
"support": {
|
||||
"issues": "https://github.com/facade/ignition-contracts/issues",
|
||||
"source": "https://github.com/facade/ignition-contracts/tree/1.0.2"
|
||||
},
|
||||
"time": "2020-10-16T08:27:54+00:00"
|
||||
},
|
||||
{
|
||||
"name": "fruitcake/php-cors",
|
||||
"version": "v1.4.0",
|
||||
@@ -3443,6 +3496,179 @@
|
||||
],
|
||||
"time": "2025-12-13T21:45:21+00:00"
|
||||
},
|
||||
{
|
||||
"name": "stancl/jobpipeline",
|
||||
"version": "v1.8.1",
|
||||
"source": {
|
||||
"type": "git",
|
||||
"url": "https://github.com/archtechx/jobpipeline.git",
|
||||
"reference": "c4ba5ef04c99176eb000abb05fc81fb0f44f5d9c"
|
||||
},
|
||||
"dist": {
|
||||
"type": "zip",
|
||||
"url": "https://api.github.com/repos/archtechx/jobpipeline/zipball/c4ba5ef04c99176eb000abb05fc81fb0f44f5d9c",
|
||||
"reference": "c4ba5ef04c99176eb000abb05fc81fb0f44f5d9c",
|
||||
"shasum": ""
|
||||
},
|
||||
"require": {
|
||||
"illuminate/support": "^10.0|^11.0|^12.0",
|
||||
"php": "^8.0"
|
||||
},
|
||||
"require-dev": {
|
||||
"ext-redis": "*",
|
||||
"orchestra/testbench": "^8.0|^9.0|^10.0",
|
||||
"spatie/valuestore": "^1.2"
|
||||
},
|
||||
"type": "library",
|
||||
"autoload": {
|
||||
"psr-4": {
|
||||
"Stancl\\JobPipeline\\": "src/"
|
||||
}
|
||||
},
|
||||
"notification-url": "https://packagist.org/downloads/",
|
||||
"license": [
|
||||
"MIT"
|
||||
],
|
||||
"authors": [
|
||||
{
|
||||
"name": "Samuel Štancl",
|
||||
"email": "samuel.stancl@gmail.com"
|
||||
}
|
||||
],
|
||||
"description": "Turn any series of jobs into Laravel listeners.",
|
||||
"support": {
|
||||
"issues": "https://github.com/archtechx/jobpipeline/issues",
|
||||
"source": "https://github.com/archtechx/jobpipeline/tree/v1.8.1"
|
||||
},
|
||||
"time": "2025-07-29T20:21:17+00:00"
|
||||
},
|
||||
{
|
||||
"name": "stancl/tenancy",
|
||||
"version": "v3.9.1",
|
||||
"source": {
|
||||
"type": "git",
|
||||
"url": "https://github.com/archtechx/tenancy.git",
|
||||
"reference": "d98a170fbd2e114604bfec3bc6267a3d6e02dec1"
|
||||
},
|
||||
"dist": {
|
||||
"type": "zip",
|
||||
"url": "https://api.github.com/repos/archtechx/tenancy/zipball/d98a170fbd2e114604bfec3bc6267a3d6e02dec1",
|
||||
"reference": "d98a170fbd2e114604bfec3bc6267a3d6e02dec1",
|
||||
"shasum": ""
|
||||
},
|
||||
"require": {
|
||||
"ext-json": "*",
|
||||
"facade/ignition-contracts": "^1.0.2",
|
||||
"illuminate/support": "^10.0|^11.0|^12.0",
|
||||
"php": "^8.0",
|
||||
"ramsey/uuid": "^4.7.3",
|
||||
"stancl/jobpipeline": "^1.8.0",
|
||||
"stancl/virtualcolumn": "^1.5.0"
|
||||
},
|
||||
"require-dev": {
|
||||
"doctrine/dbal": "^3.6.0",
|
||||
"laravel/framework": "^10.0|^11.0|^12.0",
|
||||
"league/flysystem-aws-s3-v3": "^3.12.2",
|
||||
"orchestra/testbench": "^8.0|^9.0|^10.0",
|
||||
"spatie/valuestore": "^1.3.2"
|
||||
},
|
||||
"type": "library",
|
||||
"extra": {
|
||||
"laravel": {
|
||||
"aliases": {
|
||||
"Tenancy": "Stancl\\Tenancy\\Facades\\Tenancy",
|
||||
"GlobalCache": "Stancl\\Tenancy\\Facades\\GlobalCache"
|
||||
},
|
||||
"providers": [
|
||||
"Stancl\\Tenancy\\TenancyServiceProvider"
|
||||
]
|
||||
}
|
||||
},
|
||||
"autoload": {
|
||||
"files": [
|
||||
"src/helpers.php"
|
||||
],
|
||||
"psr-4": {
|
||||
"Stancl\\Tenancy\\": "src/"
|
||||
}
|
||||
},
|
||||
"notification-url": "https://packagist.org/downloads/",
|
||||
"license": [
|
||||
"MIT"
|
||||
],
|
||||
"authors": [
|
||||
{
|
||||
"name": "Samuel Štancl",
|
||||
"email": "samuel.stancl@gmail.com"
|
||||
}
|
||||
],
|
||||
"description": "Automatic multi-tenancy for your Laravel application.",
|
||||
"keywords": [
|
||||
"laravel",
|
||||
"multi-database",
|
||||
"multi-tenancy",
|
||||
"tenancy"
|
||||
],
|
||||
"support": {
|
||||
"issues": "https://github.com/archtechx/tenancy/issues",
|
||||
"source": "https://github.com/archtechx/tenancy/tree/v3.9.1"
|
||||
},
|
||||
"funding": [
|
||||
{
|
||||
"url": "https://tenancyforlaravel.com/donate",
|
||||
"type": "custom"
|
||||
},
|
||||
{
|
||||
"url": "https://github.com/stancl",
|
||||
"type": "github"
|
||||
}
|
||||
],
|
||||
"time": "2025-03-13T16:02:11+00:00"
|
||||
},
|
||||
{
|
||||
"name": "stancl/virtualcolumn",
|
||||
"version": "v1.5.0",
|
||||
"source": {
|
||||
"type": "git",
|
||||
"url": "https://github.com/archtechx/virtualcolumn.git",
|
||||
"reference": "75718edcfeeb19abc1970f5395043f7d43cce5bc"
|
||||
},
|
||||
"dist": {
|
||||
"type": "zip",
|
||||
"url": "https://api.github.com/repos/archtechx/virtualcolumn/zipball/75718edcfeeb19abc1970f5395043f7d43cce5bc",
|
||||
"reference": "75718edcfeeb19abc1970f5395043f7d43cce5bc",
|
||||
"shasum": ""
|
||||
},
|
||||
"require": {
|
||||
"illuminate/database": ">=10.0",
|
||||
"illuminate/support": ">=10.0"
|
||||
},
|
||||
"require-dev": {
|
||||
"orchestra/testbench": ">=8.0"
|
||||
},
|
||||
"type": "library",
|
||||
"autoload": {
|
||||
"psr-4": {
|
||||
"Stancl\\VirtualColumn\\": "src/"
|
||||
}
|
||||
},
|
||||
"notification-url": "https://packagist.org/downloads/",
|
||||
"license": [
|
||||
"MIT"
|
||||
],
|
||||
"authors": [
|
||||
{
|
||||
"name": "Samuel Štancl",
|
||||
"email": "samuel.stancl@gmail.com"
|
||||
}
|
||||
],
|
||||
"description": "Eloquent virtual column.",
|
||||
"support": {
|
||||
"issues": "https://github.com/archtechx/virtualcolumn/issues",
|
||||
"source": "https://github.com/archtechx/virtualcolumn/tree/v1.5.0"
|
||||
},
|
||||
"time": "2025-02-25T13:12:44+00:00"
|
||||
},
|
||||
{
|
||||
"name": "symfony/clock",
|
||||
"version": "v8.0.0",
|
||||
|
||||
Reference in New Issue
Block a user