fix: namespace to Core\Mod\Tenant, restructure package

- Changed namespace from Core\Core\Tenant to Core\Mod\Tenant
- Moved src/ contents to root
- Removed Host UK extension files (admin.php, MemberManager, TeamManager)
- Fixed composer.json autoload paths
This commit is contained in:
Snider 2026-01-27 00:58:42 +00:00
parent acceff6d36
commit 86dbf4e763
134 changed files with 512 additions and 1931 deletions

141
Boot.php
View file

@ -2,17 +2,24 @@
declare(strict_types=1); declare(strict_types=1);
namespace Core\Tenant; namespace Core\Mod\Tenant;
use Core\Events\AdminPanelBooting; use Core\Events\AdminPanelBooting;
use Core\Events\ApiRoutesRegistering;
use Core\Events\ConsoleBooting;
use Core\Events\WebRoutesRegistering;
use Illuminate\Support\Facades\Route;
use Illuminate\Support\ServiceProvider; use Illuminate\Support\ServiceProvider;
/** /**
* Tenant Module Boot (Host UK extension). * Tenant Module Boot.
* *
* Extends core Tenant module with Host UK specific admin features: * Core multi-tenancy module handling:
* - Team Manager * - Users and authentication
* - Member Manager * - Workspaces (the tenant boundary)
* - Account management (deletion, settings)
* - Entitlements (feature access, packages, usage)
* - Referrals
*/ */
class Boot extends ServiceProvider class Boot extends ServiceProvider
{ {
@ -25,16 +32,96 @@ class Boot extends ServiceProvider
*/ */
public static array $listens = [ public static array $listens = [
AdminPanelBooting::class => 'onAdminPanel', AdminPanelBooting::class => 'onAdminPanel',
ApiRoutesRegistering::class => 'onApiRoutes',
WebRoutesRegistering::class => 'onWebRoutes',
ConsoleBooting::class => 'onConsole',
]; ];
public function register(): void public function register(): void
{ {
// $this->app->singleton(
\Core\Mod\Tenant\Contracts\TwoFactorAuthenticationProvider::class,
\Core\Mod\Tenant\Services\TotpService::class
);
$this->app->singleton(
\Core\Mod\Tenant\Services\EntitlementService::class,
\Core\Mod\Tenant\Services\EntitlementService::class
);
$this->app->singleton(
\Core\Mod\Tenant\Services\WorkspaceManager::class,
\Core\Mod\Tenant\Services\WorkspaceManager::class
);
$this->app->singleton(
\Core\Mod\Tenant\Services\UserStatsService::class,
\Core\Mod\Tenant\Services\UserStatsService::class
);
$this->app->singleton(
\Core\Mod\Tenant\Services\WorkspaceService::class,
\Core\Mod\Tenant\Services\WorkspaceService::class
);
$this->app->singleton(
\Core\Mod\Tenant\Services\WorkspaceCacheManager::class,
\Core\Mod\Tenant\Services\WorkspaceCacheManager::class
);
$this->app->singleton(
\Core\Mod\Tenant\Services\UsageAlertService::class,
\Core\Mod\Tenant\Services\UsageAlertService::class
);
$this->app->singleton(
\Core\Mod\Tenant\Services\EntitlementWebhookService::class,
\Core\Mod\Tenant\Services\EntitlementWebhookService::class
);
$this->app->singleton(
\Core\Mod\Tenant\Services\WorkspaceTeamService::class,
\Core\Mod\Tenant\Services\WorkspaceTeamService::class
);
$this->registerBackwardCompatAliases();
}
protected function registerBackwardCompatAliases(): void
{
if (! class_exists(\App\Services\WorkspaceManager::class)) {
class_alias(
\Core\Mod\Tenant\Services\WorkspaceManager::class,
\App\Services\WorkspaceManager::class
);
}
if (! class_exists(\App\Services\UserStatsService::class)) {
class_alias(
\Core\Mod\Tenant\Services\UserStatsService::class,
\App\Services\UserStatsService::class
);
}
if (! class_exists(\App\Services\WorkspaceService::class)) {
class_alias(
\Core\Mod\Tenant\Services\WorkspaceService::class,
\App\Services\WorkspaceService::class
);
}
if (! class_exists(\App\Services\WorkspaceCacheManager::class)) {
class_alias(
\Core\Mod\Tenant\Services\WorkspaceCacheManager::class,
\App\Services\WorkspaceCacheManager::class
);
}
} }
public function boot(): void public function boot(): void
{ {
// $this->loadMigrationsFrom(__DIR__.'/Migrations');
$this->loadTranslationsFrom(__DIR__.'/Lang/en_GB', 'tenant');
} }
// ------------------------------------------------------------------------- // -------------------------------------------------------------------------
@ -45,12 +132,42 @@ class Boot extends ServiceProvider
{ {
$event->views($this->moduleName, __DIR__.'/View/Blade'); $event->views($this->moduleName, __DIR__.'/View/Blade');
if (file_exists(__DIR__.'/Routes/admin.php')) { // Admin Livewire components
$event->routes(fn () => require __DIR__.'/Routes/admin.php'); $event->livewire('tenant.admin.entitlement-webhook-manager', View\Modal\Admin\EntitlementWebhookManager::class);
} }
// Admin components public function onApiRoutes(ApiRoutesRegistering $event): void
$event->livewire('tenant.admin.team-manager', View\Modal\Admin\TeamManager::class); {
$event->livewire('tenant.admin.member-manager', View\Modal\Admin\MemberManager::class); if (file_exists(__DIR__.'/Routes/api.php')) {
$event->routes(fn () => Route::middleware('api')->group(__DIR__.'/Routes/api.php'));
}
}
public function onWebRoutes(WebRoutesRegistering $event): void
{
$event->views($this->moduleName, __DIR__.'/View/Blade');
if (file_exists(__DIR__.'/Routes/web.php')) {
$event->routes(fn () => Route::middleware('web')->group(__DIR__.'/Routes/web.php'));
}
// Account management
$event->livewire('tenant.account.cancel-deletion', View\Modal\Web\CancelDeletion::class);
$event->livewire('tenant.account.confirm-deletion', View\Modal\Web\ConfirmDeletion::class);
// Workspace
$event->livewire('tenant.workspace.home', View\Modal\Web\WorkspaceHome::class);
}
public function onConsole(ConsoleBooting $event): void
{
$event->middleware('admin.domain', Middleware\RequireAdminDomain::class);
$event->middleware('workspace.permission', Middleware\CheckWorkspacePermission::class);
// Artisan commands
$event->command(Console\Commands\RefreshUserStats::class);
$event->command(Console\Commands\ProcessAccountDeletions::class);
$event->command(Console\Commands\CheckUsageAlerts::class);
$event->command(Console\Commands\ResetBillingCycles::class);
} }
} }

View file

@ -2,10 +2,10 @@
declare(strict_types=1); declare(strict_types=1);
namespace Core\Core\Tenant\Concerns; namespace Core\Mod\Tenant\Concerns;
use Core\Core\Tenant\Models\Namespace_; use Core\Mod\Tenant\Models\Namespace_;
use Core\Core\Tenant\Models\User; use Core\Mod\Tenant\Models\User;
use Illuminate\Database\Eloquent\Builder; use Illuminate\Database\Eloquent\Builder;
use Illuminate\Database\Eloquent\Relations\BelongsTo; use Illuminate\Database\Eloquent\Relations\BelongsTo;
use Illuminate\Support\Collection; use Illuminate\Support\Collection;

View file

@ -2,12 +2,12 @@
declare(strict_types=1); declare(strict_types=1);
namespace Core\Core\Tenant\Concerns; namespace Core\Mod\Tenant\Concerns;
use Core\Core\Tenant\Exceptions\MissingWorkspaceContextException; use Core\Mod\Tenant\Exceptions\MissingWorkspaceContextException;
use Core\Core\Tenant\Models\Workspace; use Core\Mod\Tenant\Models\Workspace;
use Core\Core\Tenant\Scopes\WorkspaceScope; use Core\Mod\Tenant\Scopes\WorkspaceScope;
use Core\Core\Tenant\Services\WorkspaceCacheManager; use Core\Mod\Tenant\Services\WorkspaceCacheManager;
use Illuminate\Database\Eloquent\Builder; use Illuminate\Database\Eloquent\Builder;
use Illuminate\Database\Eloquent\Relations\BelongsTo; use Illuminate\Database\Eloquent\Relations\BelongsTo;
use Illuminate\Support\Collection; use Illuminate\Support\Collection;

View file

@ -2,11 +2,11 @@
declare(strict_types=1); declare(strict_types=1);
namespace Core\Core\Tenant\Concerns; namespace Core\Mod\Tenant\Concerns;
use Closure; use Closure;
use Core\Core\Tenant\Models\Workspace; use Core\Mod\Tenant\Models\Workspace;
use Core\Core\Tenant\Services\WorkspaceCacheManager; use Core\Mod\Tenant\Services\WorkspaceCacheManager;
use Illuminate\Support\Collection; use Illuminate\Support\Collection;
/** /**

View file

@ -2,11 +2,11 @@
declare(strict_types=1); declare(strict_types=1);
namespace Core\Core\Tenant\Concerns; namespace Core\Mod\Tenant\Concerns;
use Core\Core\Tenant\Contracts\TwoFactorAuthenticationProvider; use Core\Mod\Tenant\Contracts\TwoFactorAuthenticationProvider;
use Core\Core\Tenant\Models\UserTwoFactorAuth; use Core\Mod\Tenant\Models\UserTwoFactorAuth;
use Core\Core\Tenant\Services\TotpService; use Core\Mod\Tenant\Services\TotpService;
use Illuminate\Database\Eloquent\Relations\HasOne; use Illuminate\Database\Eloquent\Relations\HasOne;
/** /**

View file

@ -2,10 +2,10 @@
declare(strict_types=1); declare(strict_types=1);
namespace Core\Core\Tenant\Console\Commands; namespace Core\Mod\Tenant\Console\Commands;
use Core\Core\Tenant\Models\Workspace; use Core\Mod\Tenant\Models\Workspace;
use Core\Core\Tenant\Services\UsageAlertService; use Core\Mod\Tenant\Services\UsageAlertService;
use Illuminate\Console\Command; use Illuminate\Console\Command;
/** /**

View file

@ -2,9 +2,9 @@
declare(strict_types=1); declare(strict_types=1);
namespace Core\Core\Tenant\Console\Commands; namespace Core\Mod\Tenant\Console\Commands;
use Core\Core\Tenant\Models\AccountDeletionRequest; use Core\Mod\Tenant\Models\AccountDeletionRequest;
use Illuminate\Console\Command; use Illuminate\Console\Command;
use Illuminate\Support\Facades\DB; use Illuminate\Support\Facades\DB;
use Illuminate\Support\Facades\Log; use Illuminate\Support\Facades\Log;

View file

@ -2,10 +2,10 @@
declare(strict_types=1); declare(strict_types=1);
namespace Core\Core\Tenant\Console\Commands; namespace Core\Mod\Tenant\Console\Commands;
use Core\Core\Tenant\Jobs\ComputeUserStats; use Core\Mod\Tenant\Jobs\ComputeUserStats;
use Core\Core\Tenant\Models\User; use Core\Mod\Tenant\Models\User;
use Illuminate\Console\Command; use Illuminate\Console\Command;
class RefreshUserStats extends Command class RefreshUserStats extends Command

View file

@ -2,14 +2,14 @@
declare(strict_types=1); declare(strict_types=1);
namespace Core\Core\Tenant\Console\Commands; namespace Core\Mod\Tenant\Console\Commands;
use Core\Core\Tenant\Models\Boost; use Core\Mod\Tenant\Models\Boost;
use Core\Core\Tenant\Models\EntitlementLog; use Core\Mod\Tenant\Models\EntitlementLog;
use Core\Core\Tenant\Models\UsageRecord; use Core\Mod\Tenant\Models\UsageRecord;
use Core\Core\Tenant\Models\Workspace; use Core\Mod\Tenant\Models\Workspace;
use Core\Core\Tenant\Notifications\BoostExpiredNotification; use Core\Mod\Tenant\Notifications\BoostExpiredNotification;
use Core\Core\Tenant\Services\EntitlementService; use Core\Mod\Tenant\Services\EntitlementService;
use Illuminate\Console\Command; use Illuminate\Console\Command;
use Illuminate\Support\Carbon; use Illuminate\Support\Carbon;
use Illuminate\Support\Collection; use Illuminate\Support\Collection;

View file

@ -2,7 +2,7 @@
declare(strict_types=1); declare(strict_types=1);
namespace Core\Core\Tenant\Contracts; namespace Core\Mod\Tenant\Contracts;
/** /**
* Contract for entitlement webhook events. * Contract for entitlement webhook events.

View file

@ -2,7 +2,7 @@
declare(strict_types=1); declare(strict_types=1);
namespace Core\Core\Tenant\Contracts; namespace Core\Mod\Tenant\Contracts;
/** /**
* Contract for two-factor authentication providers. * Contract for two-factor authentication providers.

View file

@ -2,12 +2,12 @@
declare(strict_types=1); declare(strict_types=1);
namespace Core\Core\Tenant\Controllers\Api; namespace Core\Mod\Tenant\Controllers\Api;
use Core\Core\Tenant\Models\EntitlementWebhook; use Core\Mod\Tenant\Models\EntitlementWebhook;
use Core\Core\Tenant\Models\EntitlementWebhookDelivery; use Core\Mod\Tenant\Models\EntitlementWebhookDelivery;
use Core\Core\Tenant\Models\Workspace; use Core\Mod\Tenant\Models\Workspace;
use Core\Core\Tenant\Services\EntitlementWebhookService; use Core\Mod\Tenant\Services\EntitlementWebhookService;
use Illuminate\Http\JsonResponse; use Illuminate\Http\JsonResponse;
use Illuminate\Http\Request; use Illuminate\Http\Request;
use Illuminate\Routing\Controller; use Illuminate\Routing\Controller;

View file

@ -2,7 +2,7 @@
declare(strict_types=1); declare(strict_types=1);
namespace Core\Core\Tenant\Controllers; namespace Core\Mod\Tenant\Controllers;
use Core\Front\Controller; use Core\Front\Controller;
use Illuminate\Auth\Events\Registered; use Illuminate\Auth\Events\Registered;

View file

@ -2,7 +2,7 @@
declare(strict_types=1); declare(strict_types=1);
namespace Core\Core\Tenant\Controllers; namespace Core\Mod\Tenant\Controllers;
use Core\Helpers\PrivacyHelper; use Core\Helpers\PrivacyHelper;
use Core\Mod\Trees\Models\TreePlanting; use Core\Mod\Trees\Models\TreePlanting;

View file

@ -2,7 +2,7 @@
declare(strict_types=1); declare(strict_types=1);
namespace Core\Core\Tenant\Controllers; namespace Core\Mod\Tenant\Controllers;
use Core\Front\Controller; use Core\Front\Controller;
use Illuminate\Http\JsonResponse; use Illuminate\Http\JsonResponse;

View file

@ -2,10 +2,10 @@
declare(strict_types=1); declare(strict_types=1);
namespace Core\Core\Tenant\Controllers; namespace Core\Mod\Tenant\Controllers;
use Core\Core\Tenant\Models\Workspace; use Core\Mod\Tenant\Models\Workspace;
use Core\Core\Tenant\Models\WorkspaceInvitation; use Core\Mod\Tenant\Models\WorkspaceInvitation;
use Illuminate\Http\RedirectResponse; use Illuminate\Http\RedirectResponse;
use Illuminate\Http\Request; use Illuminate\Http\Request;
use Illuminate\Routing\Controller; use Illuminate\Routing\Controller;

View file

@ -1,13 +1,13 @@
<?php <?php
namespace Core\Core\Tenant\Database\Factories; namespace Core\Mod\Tenant\Database\Factories;
use Illuminate\Database\Eloquent\Factories\Factory; use Illuminate\Database\Eloquent\Factories\Factory;
use Illuminate\Support\Facades\Hash; use Illuminate\Support\Facades\Hash;
use Illuminate\Support\Str; use Illuminate\Support\Str;
/** /**
* @extends \Illuminate\Database\Eloquent\Factories\Factory<\Core\Core\Tenant\Models\User> * @extends \Illuminate\Database\Eloquent\Factories\Factory<\Core\Mod\Tenant\Models\User>
*/ */
class UserFactory extends Factory class UserFactory extends Factory
{ {
@ -17,7 +17,7 @@ class UserFactory extends Factory
* Uses the backward-compatible alias class to ensure type compatibility * Uses the backward-compatible alias class to ensure type compatibility
* with existing code that expects Mod\Tenant\Models\User. * with existing code that expects Mod\Tenant\Models\User.
*/ */
protected $model = \Core\Core\Tenant\Models\User::class; protected $model = \Core\Mod\Tenant\Models\User::class;
/** /**
* The current password being used by the factory. * The current password being used by the factory.

View file

@ -2,10 +2,10 @@
declare(strict_types=1); declare(strict_types=1);
namespace Core\Core\Tenant\Database\Factories; namespace Core\Mod\Tenant\Database\Factories;
use Core\Core\Tenant\Models\User; use Core\Mod\Tenant\Models\User;
use Core\Core\Tenant\Models\UserToken; use Core\Mod\Tenant\Models\UserToken;
use Illuminate\Database\Eloquent\Factories\Factory; use Illuminate\Database\Eloquent\Factories\Factory;
use Illuminate\Support\Str; use Illuminate\Support\Str;

View file

@ -2,13 +2,13 @@
declare(strict_types=1); declare(strict_types=1);
namespace Core\Core\Tenant\Database\Factories; namespace Core\Mod\Tenant\Database\Factories;
use Core\Core\Tenant\Models\WaitlistEntry; use Core\Mod\Tenant\Models\WaitlistEntry;
use Illuminate\Database\Eloquent\Factories\Factory; use Illuminate\Database\Eloquent\Factories\Factory;
/** /**
* @extends \Illuminate\Database\Eloquent\Factories\Factory<\Core\Core\Tenant\Models\WaitlistEntry> * @extends \Illuminate\Database\Eloquent\Factories\Factory<\Core\Mod\Tenant\Models\WaitlistEntry>
*/ */
class WaitlistEntryFactory extends Factory class WaitlistEntryFactory extends Factory
{ {

View file

@ -1,12 +1,12 @@
<?php <?php
namespace Core\Core\Tenant\Database\Factories; namespace Core\Mod\Tenant\Database\Factories;
use Core\Core\Tenant\Models\Workspace; use Core\Mod\Tenant\Models\Workspace;
use Illuminate\Database\Eloquent\Factories\Factory; use Illuminate\Database\Eloquent\Factories\Factory;
/** /**
* @extends \Illuminate\Database\Eloquent\Factories\Factory<\Core\Core\Tenant\Models\Workspace> * @extends \Illuminate\Database\Eloquent\Factories\Factory<\Core\Mod\Tenant\Models\Workspace>
*/ */
class WorkspaceFactory extends Factory class WorkspaceFactory extends Factory
{ {

View file

@ -2,14 +2,14 @@
declare(strict_types=1); declare(strict_types=1);
namespace Core\Core\Tenant\Database\Factories; namespace Core\Mod\Tenant\Database\Factories;
use Core\Core\Tenant\Models\WorkspaceInvitation; use Core\Mod\Tenant\Models\WorkspaceInvitation;
use Illuminate\Database\Eloquent\Factories\Factory; use Illuminate\Database\Eloquent\Factories\Factory;
use Illuminate\Support\Str; use Illuminate\Support\Str;
/** /**
* @extends \Illuminate\Database\Eloquent\Factories\Factory<\Core\Core\Tenant\Models\WorkspaceInvitation> * @extends \Illuminate\Database\Eloquent\Factories\Factory<\Core\Mod\Tenant\Models\WorkspaceInvitation>
*/ */
class WorkspaceInvitationFactory extends Factory class WorkspaceInvitationFactory extends Factory
{ {

View file

@ -1,10 +1,10 @@
<?php <?php
namespace Core\Core\Tenant\Database\Seeders; namespace Core\Mod\Tenant\Database\Seeders;
use Core\Core\Tenant\Models\Package; use Core\Mod\Tenant\Models\Package;
use Core\Core\Tenant\Models\User; use Core\Mod\Tenant\Models\User;
use Core\Core\Tenant\Models\Workspace; use Core\Mod\Tenant\Models\Workspace;
use Illuminate\Database\Seeder; use Illuminate\Database\Seeder;
use Illuminate\Support\Facades\Hash; use Illuminate\Support\Facades\Hash;

View file

@ -1,12 +1,12 @@
<?php <?php
namespace Core\Core\Tenant\Database\Seeders; namespace Core\Mod\Tenant\Database\Seeders;
use Core\Core\Tenant\Models\Feature; use Core\Mod\Tenant\Models\Feature;
use Core\Core\Tenant\Models\Package; use Core\Mod\Tenant\Models\Package;
use Core\Core\Tenant\Models\User; use Core\Mod\Tenant\Models\User;
use Core\Core\Tenant\Models\Workspace; use Core\Mod\Tenant\Models\Workspace;
use Core\Core\Tenant\Services\EntitlementService; use Core\Mod\Tenant\Services\EntitlementService;
use Illuminate\Database\Seeder; use Illuminate\Database\Seeder;
/** /**

View file

@ -1,8 +1,8 @@
<?php <?php
namespace Core\Core\Tenant\Database\Seeders; namespace Core\Mod\Tenant\Database\Seeders;
use Core\Core\Tenant\Models\Feature; use Core\Mod\Tenant\Models\Feature;
use Illuminate\Database\Seeder; use Illuminate\Database\Seeder;
use Illuminate\Support\Facades\Schema; use Illuminate\Support\Facades\Schema;

View file

@ -1,10 +1,10 @@
<?php <?php
namespace Core\Core\Tenant\Database\Seeders; namespace Core\Mod\Tenant\Database\Seeders;
use Core\Core\Tenant\Models\Package; use Core\Mod\Tenant\Models\Package;
use Core\Core\Tenant\Models\Workspace; use Core\Mod\Tenant\Models\Workspace;
use Core\Core\Tenant\Models\WorkspacePackage; use Core\Mod\Tenant\Models\WorkspacePackage;
use Illuminate\Database\Seeder; use Illuminate\Database\Seeder;
class SystemWorkspaceSeeder extends Seeder class SystemWorkspaceSeeder extends Seeder

View file

@ -1,12 +1,12 @@
<?php <?php
namespace Core\Core\Tenant\Database\Seeders; namespace Core\Mod\Tenant\Database\Seeders;
use Core\Core\Tenant\Enums\UserTier; use Core\Mod\Tenant\Enums\UserTier;
use Core\Core\Tenant\Models\Package; use Core\Mod\Tenant\Models\Package;
use Core\Core\Tenant\Models\User; use Core\Mod\Tenant\Models\User;
use Core\Core\Tenant\Models\Workspace; use Core\Mod\Tenant\Models\Workspace;
use Core\Core\Tenant\Models\WorkspacePackage; use Core\Mod\Tenant\Models\WorkspacePackage;
use Illuminate\Database\Seeder; use Illuminate\Database\Seeder;
use Illuminate\Support\Facades\Hash; use Illuminate\Support\Facades\Hash;
use Illuminate\Support\Facades\Schema; use Illuminate\Support\Facades\Schema;

View file

@ -1,6 +1,6 @@
<?php <?php
namespace Core\Core\Tenant\Enums; namespace Core\Mod\Tenant\Enums;
enum UserTier: string enum UserTier: string
{ {

View file

@ -2,7 +2,7 @@
declare(strict_types=1); declare(strict_types=1);
namespace Core\Core\Tenant\Enums; namespace Core\Mod\Tenant\Enums;
enum WebhookDeliveryStatus: string enum WebhookDeliveryStatus: string
{ {

View file

@ -2,12 +2,12 @@
declare(strict_types=1); declare(strict_types=1);
namespace Core\Core\Tenant\Events\Webhook; namespace Core\Mod\Tenant\Events\Webhook;
use Core\Core\Tenant\Contracts\EntitlementWebhookEvent; use Core\Mod\Tenant\Contracts\EntitlementWebhookEvent;
use Core\Core\Tenant\Models\Boost; use Core\Mod\Tenant\Models\Boost;
use Core\Core\Tenant\Models\Feature; use Core\Mod\Tenant\Models\Feature;
use Core\Core\Tenant\Models\Workspace; use Core\Mod\Tenant\Models\Workspace;
/** /**
* Event fired when a boost is activated for a workspace. * Event fired when a boost is activated for a workspace.

View file

@ -2,12 +2,12 @@
declare(strict_types=1); declare(strict_types=1);
namespace Core\Core\Tenant\Events\Webhook; namespace Core\Mod\Tenant\Events\Webhook;
use Core\Core\Tenant\Contracts\EntitlementWebhookEvent; use Core\Mod\Tenant\Contracts\EntitlementWebhookEvent;
use Core\Core\Tenant\Models\Boost; use Core\Mod\Tenant\Models\Boost;
use Core\Core\Tenant\Models\Feature; use Core\Mod\Tenant\Models\Feature;
use Core\Core\Tenant\Models\Workspace; use Core\Mod\Tenant\Models\Workspace;
/** /**
* Event fired when a boost expires for a workspace. * Event fired when a boost expires for a workspace.

View file

@ -2,11 +2,11 @@
declare(strict_types=1); declare(strict_types=1);
namespace Core\Core\Tenant\Events\Webhook; namespace Core\Mod\Tenant\Events\Webhook;
use Core\Core\Tenant\Contracts\EntitlementWebhookEvent; use Core\Mod\Tenant\Contracts\EntitlementWebhookEvent;
use Core\Core\Tenant\Models\Feature; use Core\Mod\Tenant\Models\Feature;
use Core\Core\Tenant\Models\Workspace; use Core\Mod\Tenant\Models\Workspace;
/** /**
* Event fired when workspace usage reaches 100% of the limit. * Event fired when workspace usage reaches 100% of the limit.

View file

@ -2,11 +2,11 @@
declare(strict_types=1); declare(strict_types=1);
namespace Core\Core\Tenant\Events\Webhook; namespace Core\Mod\Tenant\Events\Webhook;
use Core\Core\Tenant\Contracts\EntitlementWebhookEvent; use Core\Mod\Tenant\Contracts\EntitlementWebhookEvent;
use Core\Core\Tenant\Models\Feature; use Core\Mod\Tenant\Models\Feature;
use Core\Core\Tenant\Models\Workspace; use Core\Mod\Tenant\Models\Workspace;
/** /**
* Event fired when workspace usage reaches the warning threshold (80%). * Event fired when workspace usage reaches the warning threshold (80%).

View file

@ -2,11 +2,11 @@
declare(strict_types=1); declare(strict_types=1);
namespace Core\Core\Tenant\Events\Webhook; namespace Core\Mod\Tenant\Events\Webhook;
use Core\Core\Tenant\Contracts\EntitlementWebhookEvent; use Core\Mod\Tenant\Contracts\EntitlementWebhookEvent;
use Core\Core\Tenant\Models\Package; use Core\Mod\Tenant\Models\Package;
use Core\Core\Tenant\Models\Workspace; use Core\Mod\Tenant\Models\Workspace;
/** /**
* Event fired when a workspace's package changes (upgrade, downgrade, or new assignment). * Event fired when a workspace's package changes (upgrade, downgrade, or new assignment).

View file

@ -2,7 +2,7 @@
declare(strict_types=1); declare(strict_types=1);
namespace Core\Core\Tenant\Exceptions; namespace Core\Mod\Tenant\Exceptions;
use Exception; use Exception;

View file

@ -2,7 +2,7 @@
declare(strict_types=1); declare(strict_types=1);
namespace Core\Core\Tenant\Exceptions; namespace Core\Mod\Tenant\Exceptions;
use Exception; use Exception;
use Illuminate\Http\Request; use Illuminate\Http\Request;

View file

@ -2,12 +2,12 @@
declare(strict_types=1); declare(strict_types=1);
namespace Core\Core\Tenant\Features; namespace Core\Mod\Tenant\Features;
use Core\Core\Tenant\Enums\UserTier; use Core\Mod\Tenant\Enums\UserTier;
use Core\Core\Tenant\Models\User; use Core\Mod\Tenant\Models\User;
use Core\Core\Tenant\Models\Workspace; use Core\Mod\Tenant\Models\Workspace;
use Core\Core\Tenant\Services\EntitlementService; use Core\Mod\Tenant\Services\EntitlementService;
class ApolloTier class ApolloTier
{ {

View file

@ -2,7 +2,7 @@
declare(strict_types=1); declare(strict_types=1);
namespace Core\Core\Tenant\Features; namespace Core\Mod\Tenant\Features;
use Illuminate\Support\Lottery; use Illuminate\Support\Lottery;

View file

@ -2,12 +2,12 @@
declare(strict_types=1); declare(strict_types=1);
namespace Core\Core\Tenant\Features; namespace Core\Mod\Tenant\Features;
use Core\Core\Tenant\Enums\UserTier; use Core\Mod\Tenant\Enums\UserTier;
use Core\Core\Tenant\Models\User; use Core\Mod\Tenant\Models\User;
use Core\Core\Tenant\Models\Workspace; use Core\Mod\Tenant\Models\Workspace;
use Core\Core\Tenant\Services\EntitlementService; use Core\Mod\Tenant\Services\EntitlementService;
class HadesTier class HadesTier
{ {

View file

@ -2,12 +2,12 @@
declare(strict_types=1); declare(strict_types=1);
namespace Core\Core\Tenant\Features; namespace Core\Mod\Tenant\Features;
use Core\Core\Tenant\Enums\UserTier; use Core\Mod\Tenant\Enums\UserTier;
use Core\Core\Tenant\Models\User; use Core\Mod\Tenant\Models\User;
use Core\Core\Tenant\Models\Workspace; use Core\Mod\Tenant\Models\Workspace;
use Core\Core\Tenant\Services\EntitlementService; use Core\Mod\Tenant\Services\EntitlementService;
class UnlimitedWorkspaces class UnlimitedWorkspaces
{ {

View file

@ -2,10 +2,10 @@
declare(strict_types=1); declare(strict_types=1);
namespace Core\Core\Tenant\Jobs; namespace Core\Mod\Tenant\Jobs;
use Core\Core\Tenant\Models\User; use Core\Mod\Tenant\Models\User;
use Core\Core\Tenant\Services\UserStatsService; use Core\Mod\Tenant\Services\UserStatsService;
use Illuminate\Bus\Queueable; use Illuminate\Bus\Queueable;
use Illuminate\Contracts\Queue\ShouldQueue; use Illuminate\Contracts\Queue\ShouldQueue;
use Illuminate\Foundation\Bus\Dispatchable; use Illuminate\Foundation\Bus\Dispatchable;

View file

@ -2,10 +2,10 @@
declare(strict_types=1); declare(strict_types=1);
namespace Core\Core\Tenant\Jobs; namespace Core\Mod\Tenant\Jobs;
use Core\Core\Tenant\Enums\WebhookDeliveryStatus; use Core\Mod\Tenant\Enums\WebhookDeliveryStatus;
use Core\Core\Tenant\Models\EntitlementWebhook; use Core\Mod\Tenant\Models\EntitlementWebhook;
use Illuminate\Bus\Queueable; use Illuminate\Bus\Queueable;
use Illuminate\Contracts\Queue\ShouldQueue; use Illuminate\Contracts\Queue\ShouldQueue;
use Illuminate\Foundation\Bus\Dispatchable; use Illuminate\Foundation\Bus\Dispatchable;

View file

@ -2,9 +2,9 @@
declare(strict_types=1); declare(strict_types=1);
namespace Core\Core\Tenant\Jobs; namespace Core\Mod\Tenant\Jobs;
use Core\Core\Tenant\Models\AccountDeletionRequest; use Core\Mod\Tenant\Models\AccountDeletionRequest;
use Illuminate\Bus\Queueable; use Illuminate\Bus\Queueable;
use Illuminate\Contracts\Queue\ShouldQueue; use Illuminate\Contracts\Queue\ShouldQueue;
use Illuminate\Foundation\Bus\Dispatchable; use Illuminate\Foundation\Bus\Dispatchable;

View file

@ -2,9 +2,9 @@
declare(strict_types=1); declare(strict_types=1);
namespace Core\Core\Tenant\Listeners; namespace Core\Mod\Tenant\Listeners;
use Core\Core\Tenant\Notifications\WelcomeNotification; use Core\Mod\Tenant\Notifications\WelcomeNotification;
use Illuminate\Auth\Events\Registered; use Illuminate\Auth\Events\Registered;
use Illuminate\Contracts\Queue\ShouldQueue; use Illuminate\Contracts\Queue\ShouldQueue;

View file

@ -2,9 +2,9 @@
declare(strict_types=1); declare(strict_types=1);
namespace Core\Core\Tenant\Mail; namespace Core\Mod\Tenant\Mail;
use Core\Core\Tenant\Models\AccountDeletionRequest; use Core\Mod\Tenant\Models\AccountDeletionRequest;
use Illuminate\Bus\Queueable; use Illuminate\Bus\Queueable;
use Illuminate\Contracts\Queue\ShouldQueue; use Illuminate\Contracts\Queue\ShouldQueue;
use Illuminate\Mail\Mailable; use Illuminate\Mail\Mailable;

View file

@ -2,11 +2,11 @@
declare(strict_types=1); declare(strict_types=1);
namespace Core\Core\Tenant\Middleware; namespace Core\Mod\Tenant\Middleware;
use Closure; use Closure;
use Core\Core\Tenant\Models\Workspace; use Core\Mod\Tenant\Models\Workspace;
use Core\Core\Tenant\Services\WorkspaceTeamService; use Core\Mod\Tenant\Services\WorkspaceTeamService;
use Illuminate\Http\Request; use Illuminate\Http\Request;
use Symfony\Component\HttpFoundation\Response; use Symfony\Component\HttpFoundation\Response;

View file

@ -2,7 +2,7 @@
declare(strict_types=1); declare(strict_types=1);
namespace Core\Core\Tenant\Middleware; namespace Core\Mod\Tenant\Middleware;
use Closure; use Closure;
use Illuminate\Http\Request; use Illuminate\Http\Request;

View file

@ -2,11 +2,11 @@
declare(strict_types=1); declare(strict_types=1);
namespace Core\Core\Tenant\Middleware; namespace Core\Mod\Tenant\Middleware;
use Closure; use Closure;
use Core\Core\Tenant\Exceptions\MissingWorkspaceContextException; use Core\Mod\Tenant\Exceptions\MissingWorkspaceContextException;
use Core\Core\Tenant\Models\Workspace; use Core\Mod\Tenant\Models\Workspace;
use Illuminate\Http\Request; use Illuminate\Http\Request;
use Symfony\Component\HttpFoundation\Response; use Symfony\Component\HttpFoundation\Response;
@ -26,7 +26,7 @@ use Symfony\Component\HttpFoundation\Response;
* }); * });
* *
* Register in Kernel.php: * Register in Kernel.php:
* 'workspace.required' => \Core\Core\Tenant\Middleware\RequireWorkspaceContext::class, * 'workspace.required' => \Core\Mod\Tenant\Middleware\RequireWorkspaceContext::class,
*/ */
class RequireWorkspaceContext class RequireWorkspaceContext
{ {

View file

@ -2,10 +2,10 @@
declare(strict_types=1); declare(strict_types=1);
namespace Core\Core\Tenant\Middleware; namespace Core\Mod\Tenant\Middleware;
use Closure; use Closure;
use Core\Core\Tenant\Services\NamespaceService; use Core\Mod\Tenant\Services\NamespaceService;
use Illuminate\Http\Request; use Illuminate\Http\Request;
use Symfony\Component\HttpFoundation\Response; use Symfony\Component\HttpFoundation\Response;

View file

@ -2,11 +2,11 @@
declare(strict_types=1); declare(strict_types=1);
namespace Core\Core\Tenant\Middleware; namespace Core\Mod\Tenant\Middleware;
use Closure; use Closure;
use Core\Core\Tenant\Models\Workspace; use Core\Mod\Tenant\Models\Workspace;
use Core\Core\Tenant\Services\WorkspaceService; use Core\Mod\Tenant\Services\WorkspaceService;
use Illuminate\Http\Request; use Illuminate\Http\Request;
use Symfony\Component\HttpFoundation\Response; use Symfony\Component\HttpFoundation\Response;

View file

@ -1,6 +1,6 @@
<?php <?php
namespace Core\Core\Tenant\Models; namespace Core\Mod\Tenant\Models;
use Illuminate\Database\Eloquent\Model; use Illuminate\Database\Eloquent\Model;
use Illuminate\Database\Eloquent\Relations\BelongsTo; use Illuminate\Database\Eloquent\Relations\BelongsTo;

View file

@ -2,7 +2,7 @@
declare(strict_types=1); declare(strict_types=1);
namespace Core\Core\Tenant\Models; namespace Core\Mod\Tenant\Models;
use Illuminate\Database\Eloquent\Builder; use Illuminate\Database\Eloquent\Builder;
use Illuminate\Database\Eloquent\Factories\HasFactory; use Illuminate\Database\Eloquent\Factories\HasFactory;

View file

@ -1,6 +1,6 @@
<?php <?php
namespace Core\Core\Tenant\Models; namespace Core\Mod\Tenant\Models;
use Illuminate\Database\Eloquent\Factories\HasFactory; use Illuminate\Database\Eloquent\Factories\HasFactory;
use Illuminate\Database\Eloquent\Model; use Illuminate\Database\Eloquent\Model;

View file

@ -1,6 +1,6 @@
<?php <?php
namespace Core\Core\Tenant\Models; namespace Core\Mod\Tenant\Models;
use Illuminate\Database\Eloquent\Factories\HasFactory; use Illuminate\Database\Eloquent\Factories\HasFactory;
use Illuminate\Database\Eloquent\Model; use Illuminate\Database\Eloquent\Model;

View file

@ -2,10 +2,10 @@
declare(strict_types=1); declare(strict_types=1);
namespace Core\Core\Tenant\Models; namespace Core\Mod\Tenant\Models;
use Core\Core\Tenant\Contracts\EntitlementWebhookEvent; use Core\Mod\Tenant\Contracts\EntitlementWebhookEvent;
use Core\Core\Tenant\Enums\WebhookDeliveryStatus; use Core\Mod\Tenant\Enums\WebhookDeliveryStatus;
use Illuminate\Database\Eloquent\Builder; use Illuminate\Database\Eloquent\Builder;
use Illuminate\Database\Eloquent\Factories\HasFactory; use Illuminate\Database\Eloquent\Factories\HasFactory;
use Illuminate\Database\Eloquent\Model; use Illuminate\Database\Eloquent\Model;

View file

@ -2,9 +2,9 @@
declare(strict_types=1); declare(strict_types=1);
namespace Core\Core\Tenant\Models; namespace Core\Mod\Tenant\Models;
use Core\Core\Tenant\Enums\WebhookDeliveryStatus; use Core\Mod\Tenant\Enums\WebhookDeliveryStatus;
use DateTimeInterface; use DateTimeInterface;
use Illuminate\Database\Eloquent\Builder; use Illuminate\Database\Eloquent\Builder;
use Illuminate\Database\Eloquent\Factories\HasFactory; use Illuminate\Database\Eloquent\Factories\HasFactory;

View file

@ -1,6 +1,6 @@
<?php <?php
namespace Core\Core\Tenant\Models; namespace Core\Mod\Tenant\Models;
use Illuminate\Database\Eloquent\Factories\HasFactory; use Illuminate\Database\Eloquent\Factories\HasFactory;
use Illuminate\Database\Eloquent\Model; use Illuminate\Database\Eloquent\Model;

View file

@ -2,7 +2,7 @@
declare(strict_types=1); declare(strict_types=1);
namespace Core\Core\Tenant\Models; namespace Core\Mod\Tenant\Models;
use Illuminate\Database\Eloquent\Factories\HasFactory; use Illuminate\Database\Eloquent\Factories\HasFactory;
use Illuminate\Database\Eloquent\Model; use Illuminate\Database\Eloquent\Model;

View file

@ -2,7 +2,7 @@
declare(strict_types=1); declare(strict_types=1);
namespace Core\Core\Tenant\Models; namespace Core\Mod\Tenant\Models;
use Illuminate\Database\Eloquent\Factories\HasFactory; use Illuminate\Database\Eloquent\Factories\HasFactory;
use Illuminate\Database\Eloquent\Model; use Illuminate\Database\Eloquent\Model;

View file

@ -1,6 +1,6 @@
<?php <?php
namespace Core\Core\Tenant\Models; namespace Core\Mod\Tenant\Models;
use Illuminate\Database\Eloquent\Factories\HasFactory; use Illuminate\Database\Eloquent\Factories\HasFactory;
use Illuminate\Database\Eloquent\Model; use Illuminate\Database\Eloquent\Model;

View file

@ -2,7 +2,7 @@
declare(strict_types=1); declare(strict_types=1);
namespace Core\Core\Tenant\Models; namespace Core\Mod\Tenant\Models;
use Illuminate\Database\Eloquent\Model; use Illuminate\Database\Eloquent\Model;
use Illuminate\Database\Eloquent\Relations\BelongsTo; use Illuminate\Database\Eloquent\Relations\BelongsTo;

View file

@ -1,6 +1,6 @@
<?php <?php
namespace Core\Core\Tenant\Models; namespace Core\Mod\Tenant\Models;
use Illuminate\Database\Eloquent\Factories\HasFactory; use Illuminate\Database\Eloquent\Factories\HasFactory;
use Illuminate\Database\Eloquent\Model; use Illuminate\Database\Eloquent\Model;

View file

@ -1,8 +1,8 @@
<?php <?php
namespace Core\Core\Tenant\Models; namespace Core\Mod\Tenant\Models;
use Core\Core\Tenant\Enums\UserTier; use Core\Mod\Tenant\Enums\UserTier;
use Illuminate\Contracts\Auth\MustVerifyEmail; use Illuminate\Contracts\Auth\MustVerifyEmail;
use Illuminate\Database\Eloquent\Factories\HasFactory; use Illuminate\Database\Eloquent\Factories\HasFactory;
use Illuminate\Database\Eloquent\Relations\BelongsTo; use Illuminate\Database\Eloquent\Relations\BelongsTo;
@ -20,9 +20,9 @@ class User extends Authenticatable implements MustVerifyEmail
/** /**
* Create a new factory instance for the model. * Create a new factory instance for the model.
*/ */
protected static function newFactory(): \Core\Core\Tenant\Database\Factories\UserFactory protected static function newFactory(): \Core\Mod\Tenant\Database\Factories\UserFactory
{ {
return \Core\Core\Tenant\Database\Factories\UserFactory::new(); return \Core\Mod\Tenant\Database\Factories\UserFactory::new();
} }
/** /**

View file

@ -2,7 +2,7 @@
declare(strict_types=1); declare(strict_types=1);
namespace Core\Core\Tenant\Models; namespace Core\Mod\Tenant\Models;
use Illuminate\Database\Eloquent\Factories\HasFactory; use Illuminate\Database\Eloquent\Factories\HasFactory;
use Illuminate\Database\Eloquent\Model; use Illuminate\Database\Eloquent\Model;
@ -18,9 +18,9 @@ class UserToken extends Model
{ {
use HasFactory; use HasFactory;
protected static function newFactory(): \Core\Core\Tenant\Database\Factories\UserTokenFactory protected static function newFactory(): \Core\Mod\Tenant\Database\Factories\UserTokenFactory
{ {
return \Core\Core\Tenant\Database\Factories\UserTokenFactory::new(); return \Core\Mod\Tenant\Database\Factories\UserTokenFactory::new();
} }
/** /**

View file

@ -2,7 +2,7 @@
declare(strict_types=1); declare(strict_types=1);
namespace Core\Core\Tenant\Models; namespace Core\Mod\Tenant\Models;
use Illuminate\Database\Eloquent\Model; use Illuminate\Database\Eloquent\Model;
use Illuminate\Database\Eloquent\Relations\BelongsTo; use Illuminate\Database\Eloquent\Relations\BelongsTo;

View file

@ -1,6 +1,6 @@
<?php <?php
namespace Core\Core\Tenant\Models; namespace Core\Mod\Tenant\Models;
use Illuminate\Database\Eloquent\Factories\HasFactory; use Illuminate\Database\Eloquent\Factories\HasFactory;
use Illuminate\Database\Eloquent\Model; use Illuminate\Database\Eloquent\Model;
@ -13,9 +13,9 @@ class WaitlistEntry extends Model
use HasFactory; use HasFactory;
use Notifiable; use Notifiable;
protected static function newFactory(): \Core\Core\Tenant\Database\Factories\WaitlistEntryFactory protected static function newFactory(): \Core\Mod\Tenant\Database\Factories\WaitlistEntryFactory
{ {
return \Core\Core\Tenant\Database\Factories\WaitlistEntryFactory::new(); return \Core\Mod\Tenant\Database\Factories\WaitlistEntryFactory::new();
} }
protected $fillable = [ protected $fillable = [

View file

@ -1,9 +1,9 @@
<?php <?php
namespace Core\Core\Tenant\Models; namespace Core\Mod\Tenant\Models;
use Core\Core\Tenant\Services\EntitlementResult; use Core\Mod\Tenant\Services\EntitlementResult;
use Core\Core\Tenant\Services\EntitlementService; use Core\Mod\Tenant\Services\EntitlementService;
use Illuminate\Database\Eloquent\Factories\HasFactory; use Illuminate\Database\Eloquent\Factories\HasFactory;
use Illuminate\Database\Eloquent\Model; use Illuminate\Database\Eloquent\Model;
use Illuminate\Database\Eloquent\Relations\BelongsToMany; use Illuminate\Database\Eloquent\Relations\BelongsToMany;
@ -14,9 +14,9 @@ class Workspace extends Model
{ {
use HasFactory; use HasFactory;
protected static function newFactory(): \Core\Core\Tenant\Database\Factories\WorkspaceFactory protected static function newFactory(): \Core\Mod\Tenant\Database\Factories\WorkspaceFactory
{ {
return \Core\Core\Tenant\Database\Factories\WorkspaceFactory::new(); return \Core\Mod\Tenant\Database\Factories\WorkspaceFactory::new();
} }
protected $fillable = [ protected $fillable = [
@ -577,7 +577,7 @@ class Workspace extends Model
} }
// Try to get from authenticated user's default workspace // Try to get from authenticated user's default workspace
if (auth()->check() && auth()->user() instanceof \Core\Core\Tenant\Models\User) { if (auth()->check() && auth()->user() instanceof \Core\Mod\Tenant\Models\User) {
return auth()->user()->defaultHostWorkspace(); return auth()->user()->defaultHostWorkspace();
} }
@ -680,7 +680,7 @@ class Workspace extends Model
]); ]);
// Send notification // Send notification
$invitation->notify(new \Core\Core\Tenant\Notifications\WorkspaceInvitationNotification($invitation)); $invitation->notify(new \Core\Mod\Tenant\Notifications\WorkspaceInvitationNotification($invitation));
return $invitation; return $invitation;
} }

View file

@ -2,7 +2,7 @@
declare(strict_types=1); declare(strict_types=1);
namespace Core\Core\Tenant\Models; namespace Core\Mod\Tenant\Models;
use Illuminate\Database\Eloquent\Factories\HasFactory; use Illuminate\Database\Eloquent\Factories\HasFactory;
use Illuminate\Database\Eloquent\Model; use Illuminate\Database\Eloquent\Model;
@ -15,9 +15,9 @@ class WorkspaceInvitation extends Model
use HasFactory; use HasFactory;
use Notifiable; use Notifiable;
protected static function newFactory(): \Core\Core\Tenant\Database\Factories\WorkspaceInvitationFactory protected static function newFactory(): \Core\Mod\Tenant\Database\Factories\WorkspaceInvitationFactory
{ {
return \Core\Core\Tenant\Database\Factories\WorkspaceInvitationFactory::new(); return \Core\Mod\Tenant\Database\Factories\WorkspaceInvitationFactory::new();
} }
protected $fillable = [ protected $fillable = [

View file

@ -2,7 +2,7 @@
declare(strict_types=1); declare(strict_types=1);
namespace Core\Core\Tenant\Models; namespace Core\Mod\Tenant\Models;
use Illuminate\Database\Eloquent\Model; use Illuminate\Database\Eloquent\Model;
use Illuminate\Database\Eloquent\Relations\BelongsTo; use Illuminate\Database\Eloquent\Relations\BelongsTo;

View file

@ -1,6 +1,6 @@
<?php <?php
namespace Core\Core\Tenant\Models; namespace Core\Mod\Tenant\Models;
use Illuminate\Database\Eloquent\Factories\HasFactory; use Illuminate\Database\Eloquent\Factories\HasFactory;
use Illuminate\Database\Eloquent\Model; use Illuminate\Database\Eloquent\Model;

View file

@ -2,9 +2,9 @@
declare(strict_types=1); declare(strict_types=1);
namespace Core\Core\Tenant\Models; namespace Core\Mod\Tenant\Models;
use Core\Core\Tenant\Concerns\BelongsToWorkspace; use Core\Mod\Tenant\Concerns\BelongsToWorkspace;
use Illuminate\Database\Eloquent\Factories\HasFactory; use Illuminate\Database\Eloquent\Factories\HasFactory;
use Illuminate\Database\Eloquent\Model; use Illuminate\Database\Eloquent\Model;
use Illuminate\Database\Eloquent\Relations\HasMany; use Illuminate\Database\Eloquent\Relations\HasMany;

View file

@ -2,11 +2,11 @@
declare(strict_types=1); declare(strict_types=1);
namespace Core\Core\Tenant\Notifications; namespace Core\Mod\Tenant\Notifications;
use Core\Core\Tenant\Models\Boost; use Core\Mod\Tenant\Models\Boost;
use Core\Core\Tenant\Models\Feature; use Core\Mod\Tenant\Models\Feature;
use Core\Core\Tenant\Models\Workspace; use Core\Mod\Tenant\Models\Workspace;
use Illuminate\Bus\Queueable; use Illuminate\Bus\Queueable;
use Illuminate\Contracts\Queue\ShouldQueue; use Illuminate\Contracts\Queue\ShouldQueue;
use Illuminate\Notifications\Messages\MailMessage; use Illuminate\Notifications\Messages\MailMessage;

View file

@ -2,11 +2,11 @@
declare(strict_types=1); declare(strict_types=1);
namespace Core\Core\Tenant\Notifications; namespace Core\Mod\Tenant\Notifications;
use Core\Core\Tenant\Models\Feature; use Core\Mod\Tenant\Models\Feature;
use Core\Core\Tenant\Models\UsageAlertHistory; use Core\Mod\Tenant\Models\UsageAlertHistory;
use Core\Core\Tenant\Models\Workspace; use Core\Mod\Tenant\Models\Workspace;
use Illuminate\Bus\Queueable; use Illuminate\Bus\Queueable;
use Illuminate\Contracts\Queue\ShouldQueue; use Illuminate\Contracts\Queue\ShouldQueue;
use Illuminate\Notifications\Messages\MailMessage; use Illuminate\Notifications\Messages\MailMessage;

View file

@ -2,9 +2,9 @@
declare(strict_types=1); declare(strict_types=1);
namespace Core\Core\Tenant\Notifications; namespace Core\Mod\Tenant\Notifications;
use Core\Core\Tenant\Models\WaitlistEntry; use Core\Mod\Tenant\Models\WaitlistEntry;
use Illuminate\Bus\Queueable; use Illuminate\Bus\Queueable;
use Illuminate\Contracts\Queue\ShouldQueue; use Illuminate\Contracts\Queue\ShouldQueue;
use Illuminate\Notifications\Messages\MailMessage; use Illuminate\Notifications\Messages\MailMessage;

View file

@ -2,7 +2,7 @@
declare(strict_types=1); declare(strict_types=1);
namespace Core\Core\Tenant\Notifications; namespace Core\Mod\Tenant\Notifications;
use Illuminate\Bus\Queueable; use Illuminate\Bus\Queueable;
use Illuminate\Contracts\Queue\ShouldQueue; use Illuminate\Contracts\Queue\ShouldQueue;

View file

@ -2,9 +2,9 @@
declare(strict_types=1); declare(strict_types=1);
namespace Core\Core\Tenant\Notifications; namespace Core\Mod\Tenant\Notifications;
use Core\Core\Tenant\Models\WorkspaceInvitation; use Core\Mod\Tenant\Models\WorkspaceInvitation;
use Illuminate\Bus\Queueable; use Illuminate\Bus\Queueable;
use Illuminate\Contracts\Queue\ShouldQueue; use Illuminate\Contracts\Queue\ShouldQueue;
use Illuminate\Notifications\Messages\MailMessage; use Illuminate\Notifications\Messages\MailMessage;

View file

@ -1,24 +0,0 @@
<?php
declare(strict_types=1);
use Illuminate\Support\Facades\Route;
/*
|--------------------------------------------------------------------------
| Tenant Admin Routes
|--------------------------------------------------------------------------
|
| Routes for workspace team and member management in the admin panel.
|
*/
Route::middleware(['web', 'auth', 'admin.domain'])->prefix('admin/tenant')->name('hub.admin.tenant.')->group(function () {
// Team Manager
Route::get('/teams', \Core\Tenant\View\Modal\Admin\TeamManager::class)
->name('teams');
// Member Manager
Route::get('/members', \Core\Tenant\View\Modal\Admin\MemberManager::class)
->name('members');
});

View file

@ -10,7 +10,7 @@ declare(strict_types=1);
*/ */
use Core\Mod\Api\Controllers\WorkspaceController; use Core\Mod\Api\Controllers\WorkspaceController;
use Core\Core\Tenant\Controllers\Api\EntitlementWebhookController; use Core\Mod\Tenant\Controllers\Api\EntitlementWebhookController;
use Illuminate\Support\Facades\Route; use Illuminate\Support\Facades\Route;
/* /*

View file

@ -8,9 +8,9 @@ declare(strict_types=1);
* Account management and workspace routes. * Account management and workspace routes.
*/ */
use Core\Core\Tenant\View\Modal\Web\CancelDeletion; use Core\Mod\Tenant\View\Modal\Web\CancelDeletion;
use Core\Core\Tenant\View\Modal\Web\ConfirmDeletion; use Core\Mod\Tenant\View\Modal\Web\ConfirmDeletion;
use Core\Core\Tenant\View\Modal\Web\WorkspaceHome; use Core\Mod\Tenant\View\Modal\Web\WorkspaceHome;
use Illuminate\Support\Facades\Route; use Illuminate\Support\Facades\Route;
/* /*
@ -41,7 +41,7 @@ Route::prefix('account')->name('account.')->group(function () {
| |
*/ */
Route::get('/workspace/invitation/{token}', \Core\Core\Tenant\Controllers\WorkspaceInvitationController::class) Route::get('/workspace/invitation/{token}', \Core\Mod\Tenant\Controllers\WorkspaceInvitationController::class)
->name('workspace.invitation.accept'); ->name('workspace.invitation.accept');
/* /*

View file

@ -2,10 +2,10 @@
declare(strict_types=1); declare(strict_types=1);
namespace Core\Core\Tenant\Rules; namespace Core\Mod\Tenant\Rules;
use Closure; use Closure;
use Core\Core\Tenant\Models\User; use Core\Mod\Tenant\Models\User;
use Illuminate\Contracts\Validation\ValidationRule; use Illuminate\Contracts\Validation\ValidationRule;
use Illuminate\Support\Facades\Hash; use Illuminate\Support\Facades\Hash;

View file

@ -2,7 +2,7 @@
declare(strict_types=1); declare(strict_types=1);
namespace Core\Core\Tenant\Rules; namespace Core\Mod\Tenant\Rules;
use Closure; use Closure;
use Core\Mod\Social\Enums\ResourceStatus; use Core\Mod\Social\Enums\ResourceStatus;

View file

@ -2,10 +2,10 @@
declare(strict_types=1); declare(strict_types=1);
namespace Core\Core\Tenant\Scopes; namespace Core\Mod\Tenant\Scopes;
use Core\Core\Tenant\Exceptions\MissingWorkspaceContextException; use Core\Mod\Tenant\Exceptions\MissingWorkspaceContextException;
use Core\Core\Tenant\Models\Workspace; use Core\Mod\Tenant\Models\Workspace;
use Illuminate\Database\Eloquent\Builder; use Illuminate\Database\Eloquent\Builder;
use Illuminate\Database\Eloquent\Model; use Illuminate\Database\Eloquent\Model;
use Illuminate\Database\Eloquent\Scope; use Illuminate\Database\Eloquent\Scope;

View file

@ -1,6 +1,6 @@
<?php <?php
namespace Core\Core\Tenant\Services; namespace Core\Mod\Tenant\Services;
/** /**
* Value object representing the result of an entitlement check. * Value object representing the result of an entitlement check.

View file

@ -1,17 +1,17 @@
<?php <?php
namespace Core\Core\Tenant\Services; namespace Core\Mod\Tenant\Services;
use Core\Core\Tenant\Models\Boost; use Core\Mod\Tenant\Models\Boost;
use Core\Core\Tenant\Models\EntitlementLog; use Core\Mod\Tenant\Models\EntitlementLog;
use Core\Core\Tenant\Models\Feature; use Core\Mod\Tenant\Models\Feature;
use Core\Core\Tenant\Models\Namespace_; use Core\Mod\Tenant\Models\Namespace_;
use Core\Core\Tenant\Models\NamespacePackage; use Core\Mod\Tenant\Models\NamespacePackage;
use Core\Core\Tenant\Models\Package; use Core\Mod\Tenant\Models\Package;
use Core\Core\Tenant\Models\UsageRecord; use Core\Mod\Tenant\Models\UsageRecord;
use Core\Core\Tenant\Models\User; use Core\Mod\Tenant\Models\User;
use Core\Core\Tenant\Models\Workspace; use Core\Mod\Tenant\Models\Workspace;
use Core\Core\Tenant\Models\WorkspacePackage; use Core\Mod\Tenant\Models\WorkspacePackage;
use Illuminate\Support\Collection; use Illuminate\Support\Collection;
use Illuminate\Support\Facades\Cache; use Illuminate\Support\Facades\Cache;

View file

@ -2,19 +2,19 @@
declare(strict_types=1); declare(strict_types=1);
namespace Core\Core\Tenant\Services; namespace Core\Mod\Tenant\Services;
use Core\Core\Tenant\Contracts\EntitlementWebhookEvent; use Core\Mod\Tenant\Contracts\EntitlementWebhookEvent;
use Core\Core\Tenant\Enums\WebhookDeliveryStatus; use Core\Mod\Tenant\Enums\WebhookDeliveryStatus;
use Core\Core\Tenant\Events\Webhook\BoostActivatedEvent; use Core\Mod\Tenant\Events\Webhook\BoostActivatedEvent;
use Core\Core\Tenant\Events\Webhook\BoostExpiredEvent; use Core\Mod\Tenant\Events\Webhook\BoostExpiredEvent;
use Core\Core\Tenant\Events\Webhook\LimitReachedEvent; use Core\Mod\Tenant\Events\Webhook\LimitReachedEvent;
use Core\Core\Tenant\Events\Webhook\LimitWarningEvent; use Core\Mod\Tenant\Events\Webhook\LimitWarningEvent;
use Core\Core\Tenant\Events\Webhook\PackageChangedEvent; use Core\Mod\Tenant\Events\Webhook\PackageChangedEvent;
use Core\Core\Tenant\Jobs\DispatchEntitlementWebhook; use Core\Mod\Tenant\Jobs\DispatchEntitlementWebhook;
use Core\Core\Tenant\Models\EntitlementWebhook; use Core\Mod\Tenant\Models\EntitlementWebhook;
use Core\Core\Tenant\Models\EntitlementWebhookDelivery; use Core\Mod\Tenant\Models\EntitlementWebhookDelivery;
use Core\Core\Tenant\Models\Workspace; use Core\Mod\Tenant\Models\Workspace;
use Illuminate\Support\Facades\Http; use Illuminate\Support\Facades\Http;
use Illuminate\Support\Facades\Log; use Illuminate\Support\Facades\Log;
use Illuminate\Support\Str; use Illuminate\Support\Str;

View file

@ -2,11 +2,11 @@
declare(strict_types=1); declare(strict_types=1);
namespace Core\Core\Tenant\Services; namespace Core\Mod\Tenant\Services;
use Core\Core\Tenant\Models\Namespace_; use Core\Mod\Tenant\Models\Namespace_;
use Core\Core\Tenant\Models\User; use Core\Mod\Tenant\Models\User;
use Core\Core\Tenant\Models\Workspace; use Core\Mod\Tenant\Models\Workspace;
use Illuminate\Support\Str; use Illuminate\Support\Str;
/** /**

View file

@ -2,11 +2,11 @@
declare(strict_types=1); declare(strict_types=1);
namespace Core\Core\Tenant\Services; namespace Core\Mod\Tenant\Services;
use Core\Core\Tenant\Models\Namespace_; use Core\Mod\Tenant\Models\Namespace_;
use Core\Core\Tenant\Models\User; use Core\Mod\Tenant\Models\User;
use Core\Core\Tenant\Models\Workspace; use Core\Mod\Tenant\Models\Workspace;
use Illuminate\Support\Collection; use Illuminate\Support\Collection;
use Illuminate\Support\Facades\Cache; use Illuminate\Support\Facades\Cache;

View file

@ -2,11 +2,11 @@
declare(strict_types=1); declare(strict_types=1);
namespace Core\Core\Tenant\Services; namespace Core\Mod\Tenant\Services;
use chillerlan\QRCode\QRCode; use chillerlan\QRCode\QRCode;
use chillerlan\QRCode\QROptions; use chillerlan\QRCode\QROptions;
use Core\Core\Tenant\Contracts\TwoFactorAuthenticationProvider; use Core\Mod\Tenant\Contracts\TwoFactorAuthenticationProvider;
/** /**
* TOTP (Time-based One-Time Password) service. * TOTP (Time-based One-Time Password) service.

View file

@ -2,15 +2,15 @@
declare(strict_types=1); declare(strict_types=1);
namespace Core\Core\Tenant\Services; namespace Core\Mod\Tenant\Services;
use Core\Core\Tenant\Events\Webhook\LimitReachedEvent; use Core\Mod\Tenant\Events\Webhook\LimitReachedEvent;
use Core\Core\Tenant\Events\Webhook\LimitWarningEvent; use Core\Mod\Tenant\Events\Webhook\LimitWarningEvent;
use Core\Core\Tenant\Models\Feature; use Core\Mod\Tenant\Models\Feature;
use Core\Core\Tenant\Models\UsageAlertHistory; use Core\Mod\Tenant\Models\UsageAlertHistory;
use Core\Core\Tenant\Models\User; use Core\Mod\Tenant\Models\User;
use Core\Core\Tenant\Models\Workspace; use Core\Mod\Tenant\Models\Workspace;
use Core\Core\Tenant\Notifications\UsageAlertNotification; use Core\Mod\Tenant\Notifications\UsageAlertNotification;
use Illuminate\Support\Collection; use Illuminate\Support\Collection;
use Illuminate\Support\Facades\Log; use Illuminate\Support\Facades\Log;

View file

@ -2,10 +2,10 @@
declare(strict_types=1); declare(strict_types=1);
namespace Core\Core\Tenant\Services; namespace Core\Mod\Tenant\Services;
use Core\Core\Tenant\Enums\UserTier; use Core\Mod\Tenant\Enums\UserTier;
use Core\Core\Tenant\Models\User; use Core\Mod\Tenant\Models\User;
use Illuminate\Support\Facades\Cache; use Illuminate\Support\Facades\Cache;
class UserStatsService class UserStatsService
@ -44,7 +44,7 @@ class UserStatsService
// For page loads, return cached data immediately and queue refresh // For page loads, return cached data immediately and queue refresh
if ($user->cached_stats) { if ($user->cached_stats) {
// Queue background refresh // Queue background refresh
dispatch(new \Core\Core\Tenant\Jobs\ComputeUserStats($user->id))->onQueue('stats'); dispatch(new \Core\Mod\Tenant\Jobs\ComputeUserStats($user->id))->onQueue('stats');
return $user->cached_stats; return $user->cached_stats;
} }

View file

@ -2,10 +2,10 @@
declare(strict_types=1); declare(strict_types=1);
namespace Core\Core\Tenant\Services; namespace Core\Mod\Tenant\Services;
use Closure; use Closure;
use Core\Core\Tenant\Models\Workspace; use Core\Mod\Tenant\Models\Workspace;
use Illuminate\Cache\TaggableStore; use Illuminate\Cache\TaggableStore;
use Illuminate\Support\Collection; use Illuminate\Support\Collection;
use Illuminate\Support\Facades\Cache; use Illuminate\Support\Facades\Cache;

View file

@ -2,10 +2,10 @@
declare(strict_types=1); declare(strict_types=1);
namespace Core\Core\Tenant\Services; namespace Core\Mod\Tenant\Services;
use Core\Core\Tenant\Models\User; use Core\Mod\Tenant\Models\User;
use Core\Core\Tenant\Models\Workspace; use Core\Mod\Tenant\Models\Workspace;
use Illuminate\Database\Eloquent\Collection; use Illuminate\Database\Eloquent\Collection;
use Illuminate\Support\Facades\Cache; use Illuminate\Support\Facades\Cache;
use Illuminate\Validation\Rule; use Illuminate\Validation\Rule;

View file

@ -2,9 +2,9 @@
declare(strict_types=1); declare(strict_types=1);
namespace Core\Core\Tenant\Services; namespace Core\Mod\Tenant\Services;
use Core\Core\Tenant\Models\Workspace; use Core\Mod\Tenant\Models\Workspace;
use Illuminate\Support\Facades\Session; use Illuminate\Support\Facades\Session;
/** /**

View file

@ -2,12 +2,12 @@
declare(strict_types=1); declare(strict_types=1);
namespace Core\Core\Tenant\Services; namespace Core\Mod\Tenant\Services;
use Core\Core\Tenant\Models\User; use Core\Mod\Tenant\Models\User;
use Core\Core\Tenant\Models\Workspace; use Core\Mod\Tenant\Models\Workspace;
use Core\Core\Tenant\Models\WorkspaceMember; use Core\Mod\Tenant\Models\WorkspaceMember;
use Core\Core\Tenant\Models\WorkspaceTeam; use Core\Mod\Tenant\Models\WorkspaceTeam;
use Illuminate\Database\Eloquent\Collection; use Illuminate\Database\Eloquent\Collection;
use Illuminate\Support\Facades\DB; use Illuminate\Support\Facades\DB;
use Illuminate\Support\Facades\Log; use Illuminate\Support\Facades\Log;

Some files were not shown because too many files have changed in this diff Show more