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);
namespace Core\Tenant;
namespace Core\Mod\Tenant;
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;
/**
* Tenant Module Boot (Host UK extension).
* Tenant Module Boot.
*
* Extends core Tenant module with Host UK specific admin features:
* - Team Manager
* - Member Manager
* Core multi-tenancy module handling:
* - Users and authentication
* - Workspaces (the tenant boundary)
* - Account management (deletion, settings)
* - Entitlements (feature access, packages, usage)
* - Referrals
*/
class Boot extends ServiceProvider
{
@ -25,16 +32,96 @@ class Boot extends ServiceProvider
*/
public static array $listens = [
AdminPanelBooting::class => 'onAdminPanel',
ApiRoutesRegistering::class => 'onApiRoutes',
WebRoutesRegistering::class => 'onWebRoutes',
ConsoleBooting::class => 'onConsole',
];
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
{
//
$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');
if (file_exists(__DIR__.'/Routes/admin.php')) {
$event->routes(fn () => require __DIR__.'/Routes/admin.php');
// Admin Livewire components
$event->livewire('tenant.admin.entitlement-webhook-manager', View\Modal\Admin\EntitlementWebhookManager::class);
}
// Admin components
$event->livewire('tenant.admin.team-manager', View\Modal\Admin\TeamManager::class);
$event->livewire('tenant.admin.member-manager', View\Modal\Admin\MemberManager::class);
public function onApiRoutes(ApiRoutesRegistering $event): void
{
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);
namespace Core\Core\Tenant\Concerns;
namespace Core\Mod\Tenant\Concerns;
use Core\Core\Tenant\Models\Namespace_;
use Core\Core\Tenant\Models\User;
use Core\Mod\Tenant\Models\Namespace_;
use Core\Mod\Tenant\Models\User;
use Illuminate\Database\Eloquent\Builder;
use Illuminate\Database\Eloquent\Relations\BelongsTo;
use Illuminate\Support\Collection;

View file

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

View file

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

View file

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

View file

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

View file

@ -2,9 +2,9 @@
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\Support\Facades\DB;
use Illuminate\Support\Facades\Log;

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

@ -1,13 +1,13 @@
<?php
namespace Core\Core\Tenant\Database\Factories;
namespace Core\Mod\Tenant\Database\Factories;
use Illuminate\Database\Eloquent\Factories\Factory;
use Illuminate\Support\Facades\Hash;
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
{
@ -17,7 +17,7 @@ class UserFactory extends Factory
* Uses the backward-compatible alias class to ensure type compatibility
* 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.

View file

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

View file

@ -2,13 +2,13 @@
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;
/**
* @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
{

View file

@ -1,12 +1,12 @@
<?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;
/**
* @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
{

View file

@ -2,14 +2,14 @@
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\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
{

View file

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

View file

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

View file

@ -1,8 +1,8 @@
<?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\Support\Facades\Schema;

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

@ -2,9 +2,9 @@
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\Contracts\Queue\ShouldQueue;
use Illuminate\Foundation\Bus\Dispatchable;

View file

@ -2,9 +2,9 @@
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\Contracts\Queue\ShouldQueue;

View file

@ -2,9 +2,9 @@
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\Contracts\Queue\ShouldQueue;
use Illuminate\Mail\Mailable;

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

@ -2,9 +2,9 @@
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 Illuminate\Database\Eloquent\Builder;
use Illuminate\Database\Eloquent\Factories\HasFactory;

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

@ -1,8 +1,8 @@
<?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\Database\Eloquent\Factories\HasFactory;
use Illuminate\Database\Eloquent\Relations\BelongsTo;
@ -20,9 +20,9 @@ class User extends Authenticatable implements MustVerifyEmail
/**
* 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);
namespace Core\Core\Tenant\Models;
namespace Core\Mod\Tenant\Models;
use Illuminate\Database\Eloquent\Factories\HasFactory;
use Illuminate\Database\Eloquent\Model;
@ -18,9 +18,9 @@ class UserToken extends Model
{
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);
namespace Core\Core\Tenant\Models;
namespace Core\Mod\Tenant\Models;
use Illuminate\Database\Eloquent\Model;
use Illuminate\Database\Eloquent\Relations\BelongsTo;

View file

@ -1,6 +1,6 @@
<?php
namespace Core\Core\Tenant\Models;
namespace Core\Mod\Tenant\Models;
use Illuminate\Database\Eloquent\Factories\HasFactory;
use Illuminate\Database\Eloquent\Model;
@ -13,9 +13,9 @@ class WaitlistEntry extends Model
use HasFactory;
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 = [

View file

@ -1,9 +1,9 @@
<?php
namespace Core\Core\Tenant\Models;
namespace Core\Mod\Tenant\Models;
use Core\Core\Tenant\Services\EntitlementResult;
use Core\Core\Tenant\Services\EntitlementService;
use Core\Mod\Tenant\Services\EntitlementResult;
use Core\Mod\Tenant\Services\EntitlementService;
use Illuminate\Database\Eloquent\Factories\HasFactory;
use Illuminate\Database\Eloquent\Model;
use Illuminate\Database\Eloquent\Relations\BelongsToMany;
@ -14,9 +14,9 @@ class Workspace extends Model
{
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 = [
@ -577,7 +577,7 @@ class Workspace extends Model
}
// 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();
}
@ -680,7 +680,7 @@ class Workspace extends Model
]);
// Send notification
$invitation->notify(new \Core\Core\Tenant\Notifications\WorkspaceInvitationNotification($invitation));
$invitation->notify(new \Core\Mod\Tenant\Notifications\WorkspaceInvitationNotification($invitation));
return $invitation;
}

View file

@ -2,7 +2,7 @@
declare(strict_types=1);
namespace Core\Core\Tenant\Models;
namespace Core\Mod\Tenant\Models;
use Illuminate\Database\Eloquent\Factories\HasFactory;
use Illuminate\Database\Eloquent\Model;
@ -15,9 +15,9 @@ class WorkspaceInvitation extends Model
use HasFactory;
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 = [

View file

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

View file

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

View file

@ -2,9 +2,9 @@
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\Model;
use Illuminate\Database\Eloquent\Relations\HasMany;

View file

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

View file

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

View file

@ -2,9 +2,9 @@
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\Contracts\Queue\ShouldQueue;
use Illuminate\Notifications\Messages\MailMessage;

View file

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

View file

@ -2,9 +2,9 @@
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\Contracts\Queue\ShouldQueue;
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\Core\Tenant\Controllers\Api\EntitlementWebhookController;
use Core\Mod\Tenant\Controllers\Api\EntitlementWebhookController;
use Illuminate\Support\Facades\Route;
/*

View file

@ -8,9 +8,9 @@ declare(strict_types=1);
* Account management and workspace routes.
*/
use Core\Core\Tenant\View\Modal\Web\CancelDeletion;
use Core\Core\Tenant\View\Modal\Web\ConfirmDeletion;
use Core\Core\Tenant\View\Modal\Web\WorkspaceHome;
use Core\Mod\Tenant\View\Modal\Web\CancelDeletion;
use Core\Mod\Tenant\View\Modal\Web\ConfirmDeletion;
use Core\Mod\Tenant\View\Modal\Web\WorkspaceHome;
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');
/*

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

@ -2,10 +2,10 @@
declare(strict_types=1);
namespace Core\Core\Tenant\Services;
namespace Core\Mod\Tenant\Services;
use Core\Core\Tenant\Enums\UserTier;
use Core\Core\Tenant\Models\User;
use Core\Mod\Tenant\Enums\UserTier;
use Core\Mod\Tenant\Models\User;
use Illuminate\Support\Facades\Cache;
class UserStatsService
@ -44,7 +44,7 @@ class UserStatsService
// For page loads, return cached data immediately and queue refresh
if ($user->cached_stats) {
// 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;
}

View file

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

View file

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

View file

@ -2,9 +2,9 @@
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;
/**

View file

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

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