From 23120eeb4d555a461712bd1d4ab69a167ff53761 Mon Sep 17 00:00:00 2001 From: danielhe4rt Date: Wed, 26 Nov 2025 16:45:10 -0300 Subject: [PATCH] wip --- .../Resources/Tenants/Schemas/TenantForm.php | 4 +- .../Admin/Widgets/TenantsStatsOverview.php | 52 --- .../src/Plugins/AdminTenantPanelPlugin.php | 4 - .../Admin/Resources/Users/UserResource.php | 5 +- .../Shared/Widgets/UsersStatsOverview.php | 23 +- app-modules/user/src/Models/User.php | 7 +- .../user/src/Plugins/AdminUserPanelPlugin.php | 5 + app/Providers/AppServiceProvider.php | 53 +++ app/Providers/Filament/GuestPanelProvider.php | 48 +-- .../Tools/DebugbarServiceProvider.php | 24 ++ composer.json | 6 +- composer.lock | 12 +- config/debugbar.php | 335 ++++++++++++++++++ database/seeders/ThreeDotsSeeder.php | 6 +- 14 files changed, 472 insertions(+), 112 deletions(-) delete mode 100644 app-modules/tenant/src/Filament/Admin/Widgets/TenantsStatsOverview.php create mode 100644 app/Providers/Tools/DebugbarServiceProvider.php create mode 100644 config/debugbar.php diff --git a/app-modules/tenant/src/Filament/Admin/Resources/Tenants/Schemas/TenantForm.php b/app-modules/tenant/src/Filament/Admin/Resources/Tenants/Schemas/TenantForm.php index f84c0bf3e..eaed238bf 100644 --- a/app-modules/tenant/src/Filament/Admin/Resources/Tenants/Schemas/TenantForm.php +++ b/app-modules/tenant/src/Filament/Admin/Resources/Tenants/Schemas/TenantForm.php @@ -33,7 +33,9 @@ public static function configure(Schema $schema): Schema ->partiallyRenderComponentsAfterStateUpdated(['name']) ->required(), Select::make('owner_id') - ->relationship('owner', 'name') + ->native(false) + ->searchable() + ->relationship(name: 'owner', titleAttribute: 'name', modifyQueryUsing: fn ($query) => $query->limit(10)) ->required(), Toggle::make('active') ->required(), diff --git a/app-modules/tenant/src/Filament/Admin/Widgets/TenantsStatsOverview.php b/app-modules/tenant/src/Filament/Admin/Widgets/TenantsStatsOverview.php deleted file mode 100644 index fd788a75b..000000000 --- a/app-modules/tenant/src/Filament/Admin/Widgets/TenantsStatsOverview.php +++ /dev/null @@ -1,52 +0,0 @@ -where('active', true)->count(); - - $createdThisMonth = Tenant::query() - ->whereBetween('created_at', [now()->startOfMonth(), now()->endOfMonth()]) - ->count(); - - $tenantMostUsers = Tenant::query() - ->withCount('members') - ->orderByDesc('members_count') - ->first(); - - $tenantMostMessages = Tenant::query()->withCount('messages') - ->orderByDesc('messages_count') - ->first(); - - return [ - Stat::make('Tenants ativos', $totalActive) - ->description('Ativos no sistema') - ->descriptionIcon('heroicon-o-check-circle') - ->color('success'), - - Stat::make('Criados neste mês', $createdThisMonth) - ->description('Novos tenants') - ->descriptionIcon('heroicon-o-plus-circle') - ->color('primary'), - - Stat::make('Mais usuários', $tenantMostUsers?->name ?? 'Nenhum') - ->description($tenantMostUsers ? $tenantMostUsers->members_count.' usuários' : '') - ->descriptionIcon('heroicon-o-user-group') - ->color('warning'), - - Stat::make('Mais mensagens', $tenantMostMessages?->name ?? 'Nenhum') - ->description($tenantMostMessages ? $tenantMostMessages->messages_count.' msgs' : '') - ->descriptionIcon('heroicon-o-chat-bubble-left-right') - ->color('info'), - ]; - } -} diff --git a/app-modules/tenant/src/Plugins/AdminTenantPanelPlugin.php b/app-modules/tenant/src/Plugins/AdminTenantPanelPlugin.php index 6d8a878d0..74dddac08 100644 --- a/app-modules/tenant/src/Plugins/AdminTenantPanelPlugin.php +++ b/app-modules/tenant/src/Plugins/AdminTenantPanelPlugin.php @@ -8,7 +8,6 @@ use Filament\Contracts\Plugin; use Filament\Panel; use He4rt\Tenant\Filament\Admin\Resources\Tenants\TenantResource; -use He4rt\Tenant\Filament\Admin\Widgets\TenantsStatsOverview; class AdminTenantPanelPlugin implements Plugin { @@ -23,9 +22,6 @@ public function register(Panel $panel): void TenantResource::class, ]); - $panel->widgets([ - TenantsStatsOverview::class, - ]); } public function boot(Panel $panel): void {} diff --git a/app-modules/user/src/Filament/Admin/Resources/Users/UserResource.php b/app-modules/user/src/Filament/Admin/Resources/Users/UserResource.php index d6e2f55f1..811366eea 100644 --- a/app-modules/user/src/Filament/Admin/Resources/Users/UserResource.php +++ b/app-modules/user/src/Filament/Admin/Resources/Users/UserResource.php @@ -15,8 +15,11 @@ use He4rt\User\Filament\Admin\Resources\Users\Schemas\UserForm; use He4rt\User\Filament\Admin\Resources\Users\Tables\UsersTable; use He4rt\User\Models\User; +use Illuminate\Support\Number; use UnitEnum; +use function Illuminate\Support\minutes; + class UserResource extends Resource { protected static ?string $model = User::class; @@ -31,7 +34,7 @@ class UserResource extends Resource public static function getNavigationBadge(): ?string { - return (string) self::$model::count(); + return Number::abbreviate((int) (cache()->remember('total_users', minutes(5), fn () => self::$model::count()) ?? 0)); } public static function form(Schema $schema): Schema diff --git a/app-modules/user/src/Filament/Shared/Widgets/UsersStatsOverview.php b/app-modules/user/src/Filament/Shared/Widgets/UsersStatsOverview.php index 7a4be1257..23b60022b 100644 --- a/app-modules/user/src/Filament/Shared/Widgets/UsersStatsOverview.php +++ b/app-modules/user/src/Filament/Shared/Widgets/UsersStatsOverview.php @@ -4,11 +4,11 @@ namespace He4rt\User\Filament\Shared\Widgets; -use Filament\Facades\Filament; use Filament\Widgets\StatsOverviewWidget as BaseWidget; use Filament\Widgets\StatsOverviewWidget\Stat; use He4rt\User\Models\User; -use Illuminate\Contracts\Database\Query\Builder; + +use function Illuminate\Support\minutes; class UsersStatsOverview extends BaseWidget { @@ -16,27 +16,20 @@ class UsersStatsOverview extends BaseWidget protected function getStats(): array { - $user = Filament::auth()->user(); - $query = User::query(); - if (! $user->isAdmin()) { - $query->whereHas('tenants', fn (Builder $q) => $q->where('tenants.id', Filament::getTenant()->getKey()) - ); - } - - $totalDonators = (clone $query) + $totalDonators = cache()->remember('total_users_donators', minutes(5), fn () => $query ->where('is_donator', true) - ->count(); + ->count()); - $totalUsersToday = (clone $query) + $totalUsersToday = cache()->remember('total_users_today', minutes(5), fn () => $query ->whereDate('created_at', today()) - ->count(); + ->count()); - $totalUsersMonth = (clone $query) + $totalUsersMonth = cache()->remember('total_users_month', minutes(5), fn () => $query ->whereYear('created_at', now()->year) ->whereMonth('created_at', now()->month) - ->count(); + ->count()); return [ Stat::make('Usuários criados hoje', $totalUsersToday) diff --git a/app-modules/user/src/Models/User.php b/app-modules/user/src/Models/User.php index be7e54147..89eac7fce 100644 --- a/app-modules/user/src/Models/User.php +++ b/app-modules/user/src/Models/User.php @@ -127,19 +127,14 @@ public function registerMediaCollections(): void public function canAccessPanel(Panel $panel): bool { - match ($panel->getId()) { + return match ($panel->getId()) { 'admin' => app()->isProduction() ? $this->isAdmin() : true, default => true }; - - return $this->isAdmin(); } public function getFilamentAvatarUrl(): string { - if ($this->providers->firstWhere('provider_name', 'github')) { - return sprintf('https://github.com/%s.png', $this->username); - } return sprintf('https://github.com/%s.png', $this->username); } diff --git a/app-modules/user/src/Plugins/AdminUserPanelPlugin.php b/app-modules/user/src/Plugins/AdminUserPanelPlugin.php index 9f5d45fc3..189704bf8 100644 --- a/app-modules/user/src/Plugins/AdminUserPanelPlugin.php +++ b/app-modules/user/src/Plugins/AdminUserPanelPlugin.php @@ -8,6 +8,7 @@ use Filament\Contracts\Plugin; use Filament\Panel; use He4rt\User\Filament\Admin\Resources\Users\UserResource; +use He4rt\User\Filament\Shared\Widgets\UsersStatsOverview; class AdminUserPanelPlugin implements Plugin { @@ -22,6 +23,10 @@ public function register(Panel $panel): void UserResource::class, ]); + $panel->widgets([ + UsersStatsOverview::class, + ]); + } public function boot(Panel $panel): void {} diff --git a/app/Providers/AppServiceProvider.php b/app/Providers/AppServiceProvider.php index fee7675ba..6c493582e 100644 --- a/app/Providers/AppServiceProvider.php +++ b/app/Providers/AppServiceProvider.php @@ -4,7 +4,10 @@ namespace App\Providers; +use App\Providers\Tools\DebugbarServiceProvider; use Illuminate\Database\Eloquent\Model; +use Illuminate\Support\Facades\URL; +use Illuminate\Support\Facades\Vite; use Illuminate\Support\ServiceProvider; final class AppServiceProvider extends ServiceProvider @@ -13,7 +16,57 @@ final class AppServiceProvider extends ServiceProvider * Register any application services. */ public function register(): void + { + $this->registerDebugbar(); + } + + /** + * Bootstrap any application services. + */ + public function boot(): void + { + $this->configureDatabase(); + $this->configureDates(); + $this->configureVite(); + $this->configureUrl(); + } + + /** + * Configure the application's models + */ + private function configureDatabase(): void { Model::automaticallyEagerLoadRelationships(); } + + /** + * Configure the application's Vite + */ + private function configureVite(): void + { + Vite::useAggressivePrefetching(); + } + + /** + * Configure the dates. + */ + private function configureDates(): void + { + // Date::use(CarbonImmutable::class); + } + + /** + * Configure the application's URL + */ + private function configureUrl(): void + { + URL::forceHttps($this->app->isProduction()); + } + + private function registerDebugbar(): void + { + if (app()->isLocal() && class_exists(\Barryvdh\Debugbar\ServiceProvider::class)) { + $this->app->register(DebugbarServiceProvider::class); + } + } } diff --git a/app/Providers/Filament/GuestPanelProvider.php b/app/Providers/Filament/GuestPanelProvider.php index 0a0682345..879b6716d 100644 --- a/app/Providers/Filament/GuestPanelProvider.php +++ b/app/Providers/Filament/GuestPanelProvider.php @@ -36,34 +36,34 @@ public function panel(Panel $panel): Panel ->defaultThemeMode(ThemeMode::Dark) ->topNavigation() ->brandLogo(fn (): View => view('he4rt::components.logo')) - ->renderHook(PanelsRenderHook::FOOTER, fn (): View => view('he4rt::components.partials.footer', [ - 'description' => 'Conheça MeuGuia.app! Lorem ipsum dolor sit amet, - consectetur adipiscing elit. Vivamus sed egestas nisl. Vivamus blandit vehicula eleifend. - Phasellus vulputate elit leo, porta vehicula nunc placerat placerat.', - 'columns' => [ - 'Sobre nós' => [ - 'Home' => '/', - 'Quem somos' => '/about', - ], - 'Suporte' => [ - 'Termos e Privacidade' => '/terms', - 'Junte-se à nós' => '/jobs', - ], - 'Social Media' => [ - 'Discord' => 'https://discord.gg/he4rt', - 'Github' => 'https://github.com/he4rt', - 'X' => 'https://x.com/he4rtdevs', - ], - ], - ])) +// ->renderHook(PanelsRenderHook::FOOTER, fn (): View => view('he4rt::components.partials.footer', [ +// 'description' => 'Conheça MeuGuia.app! Lorem ipsum dolor sit amet, +// consectetur adipiscing elit. Vivamus sed egestas nisl. Vivamus blandit vehicula eleifend. +// Phasellus vulputate elit leo, porta vehicula nunc placerat placerat.', +// 'columns' => [ +// 'Sobre nós' => [ +// 'Home' => '/', +// 'Quem somos' => '/about', +// ], +// 'Suporte' => [ +// 'Termos e Privacidade' => '/terms', +// 'Junte-se à nós' => '/jobs', +// ], +// 'Social Media' => [ +// 'Discord' => 'https://discord.gg/he4rt', +// 'Github' => 'https://github.com/he4rt', +// 'X' => 'https://x.com/he4rtdevs', +// ], +// ], +// ])) ->renderHook(PanelsRenderHook::SIDEBAR_NAV_END, fn () => Blade::render(<<<'BLADE' @guest
- + Github - Entrar agora +
@endguest BLADE @@ -71,11 +71,11 @@ public function panel(Panel $panel): Panel ->renderHook(PanelsRenderHook::TOPBAR_END, fn () => Blade::render(<<<'BLADE' @guest @endguest BLADE diff --git a/app/Providers/Tools/DebugbarServiceProvider.php b/app/Providers/Tools/DebugbarServiceProvider.php new file mode 100644 index 000000000..cea4590e7 --- /dev/null +++ b/app/Providers/Tools/DebugbarServiceProvider.php @@ -0,0 +1,24 @@ +canBoot()) { + return; + } + + parent::boot(); + } + + private function canBoot(): bool + { + return config('debugbar.enabled'); + } +} diff --git a/composer.json b/composer.json index 76a8f8f13..963e63341 100644 --- a/composer.json +++ b/composer.json @@ -34,7 +34,7 @@ "he4rt/user": ">=1", "internachi/modular": "^2.3.0", "laracord/framework": "dev-next", - "laravel/framework": "^12.40.1", + "laravel/framework": "^12.40.2", "laravel/nightwatch": "^1.19", "laravel/sanctum": "^4.2.1", "laravel/tinker": "^2.10.2", @@ -140,7 +140,9 @@ }, "extra": { "laravel": { - "dont-discover": [] + "dont-discover": [ + "barryvdh/laravel-debugbar" + ] } }, "config": { diff --git a/composer.lock b/composer.lock index 5825b99bf..3ab8f969d 100644 --- a/composer.lock +++ b/composer.lock @@ -4,7 +4,7 @@ "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies", "This file is @generated automatically" ], - "content-hash": "df9364790ab0fa0dd0c8a61a0a2ceb41", + "content-hash": "f45c308a037f2609b15b9653f901490d", "packages": [ { "name": "anourvalar/eloquent-serialize", @@ -3907,16 +3907,16 @@ }, { "name": "laravel/framework", - "version": "v12.40.1", + "version": "v12.40.2", "source": { "type": "git", "url": "https://github.com/laravel/framework.git", - "reference": "2e986acbf9acf62cba13400bc23c4d639bf188b9" + "reference": "1ccd99220b474500e672b373f32bd709ec38de50" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/laravel/framework/zipball/2e986acbf9acf62cba13400bc23c4d639bf188b9", - "reference": "2e986acbf9acf62cba13400bc23c4d639bf188b9", + "url": "https://api.github.com/repos/laravel/framework/zipball/1ccd99220b474500e672b373f32bd709ec38de50", + "reference": "1ccd99220b474500e672b373f32bd709ec38de50", "shasum": "" }, "require": { @@ -4122,7 +4122,7 @@ "issues": "https://github.com/laravel/framework/issues", "source": "https://github.com/laravel/framework" }, - "time": "2025-11-25T16:16:33+00:00" + "time": "2025-11-26T19:24:25+00:00" }, { "name": "laravel/nightwatch", diff --git a/config/debugbar.php b/config/debugbar.php new file mode 100644 index 000000000..7d4ca7c5c --- /dev/null +++ b/config/debugbar.php @@ -0,0 +1,335 @@ + env('DEBUGBAR_ENABLED', false), + 'hide_empty_tabs' => true, // Hide tabs until they have content + 'except' => [ + 'telescope*', + 'horizon*', + ], + + /* + |-------------------------------------------------------------------------- + | Storage settings + |-------------------------------------------------------------------------- + | + | Debugbar stores data for session/ajax requests. + | You can disable this, so the debugbar stores data in headers/session, + | but this can cause problems with large data collectors. + | By default, file storage (in the storage folder) is used. Redis and PDO + | can also be used. For PDO, run the package migrations first. + | + | Warning: Enabling storage.open will allow everyone to access previous + | request, do not enable open storage in publicly available environments! + | Specify a callback if you want to limit based on IP or authentication. + | Leaving it to null will allow localhost only. + */ + 'storage' => [ + 'enabled' => true, + 'open' => env('DEBUGBAR_OPEN_STORAGE'), // bool/callback. + 'driver' => 'file', // redis, file, pdo, socket, custom + 'path' => storage_path('debugbar'), // For file driver + 'connection' => null, // Leave null for default connection (Redis/PDO) + 'provider' => '', // Instance of StorageInterface for custom driver + 'hostname' => '127.0.0.1', // Hostname to use with the "socket" driver + 'port' => 2304, // Port to use with the "socket" driver + ], + + /* + |-------------------------------------------------------------------------- + | Editor + |-------------------------------------------------------------------------- + | + | Choose your preferred editor to use when clicking file name. + | + | Supported: "phpstorm", "vscode", "vscode-insiders", "vscode-remote", + | "vscode-insiders-remote", "vscodium", "textmate", "emacs", + | "sublime", "atom", "nova", "macvim", "idea", "netbeans", + | "xdebug", "espresso" + | + */ + + 'editor' => env('DEBUGBAR_EDITOR') ?: env('IGNITION_EDITOR', 'phpstorm'), + + /* + |-------------------------------------------------------------------------- + | Remote Path Mapping + |-------------------------------------------------------------------------- + | + | If you are using a remote dev server, like Laravel Homestead, Docker, or + | even a remote VPS, it will be necessary to specify your path mapping. + | + | Leaving one, or both of these, empty or null will not trigger the remote + | URL changes and Debugbar will treat your editor links as local files. + | + | "remote_sites_path" is an absolute base path for your sites or projects + | in Homestead, Vagrant, Docker, or another remote development server. + | + | Example value: "/home/vagrant/Code" + | + | "local_sites_path" is an absolute base path for your sites or projects + | on your local computer where your IDE or code editor is running on. + | + | Example values: "/Users//Code", "C:\Users\\Documents\Code" + | + */ + + 'remote_sites_path' => env('DEBUGBAR_REMOTE_SITES_PATH'), + 'local_sites_path' => env('DEBUGBAR_LOCAL_SITES_PATH', env('IGNITION_LOCAL_SITES_PATH')), + + /* + |-------------------------------------------------------------------------- + | Vendors + |-------------------------------------------------------------------------- + | + | Vendor files are included by default, but can be set to false. + | This can also be set to 'js' or 'css', to only include javascript or css vendor files. + | Vendor files are for css: font-awesome (including fonts) and highlight.js (css files) + | and for js: jquery and highlight.js + | So if you want syntax highlighting, set it to true. + | jQuery is set to not conflict with existing jQuery scripts. + | + */ + + 'include_vendors' => true, + + /* + |-------------------------------------------------------------------------- + | Capture Ajax Requests + |-------------------------------------------------------------------------- + | + | The Debugbar can capture Ajax requests and display them. If you don't want this (ie. because of errors), + | you can use this option to disable sending the data through the headers. + | + | Optionally, you can also send ServerTiming headers on ajax requests for the Chrome DevTools. + | + | Note for your request to be identified as ajax requests they must either send the header + | X-Requested-With with the value XMLHttpRequest (most JS libraries send this), or have application/json as a Accept header. + | + | By default `ajax_handler_auto_show` is set to true allowing ajax requests to be shown automatically in the Debugbar. + | Changing `ajax_handler_auto_show` to false will prevent the Debugbar from reloading. + | + | You can defer loading the dataset, so it will be loaded with ajax after the request is done. (Experimental) + */ + + 'capture_ajax' => true, + 'add_ajax_timing' => false, + 'ajax_handler_auto_show' => true, + 'ajax_handler_enable_tab' => true, + 'defer_datasets' => false, + /* + |-------------------------------------------------------------------------- + | Custom Error Handler for Deprecated warnings + |-------------------------------------------------------------------------- + | + | When enabled, the Debugbar shows deprecated warnings for Symfony components + | in the Messages tab. + | + */ + 'error_handler' => false, + + /* + |-------------------------------------------------------------------------- + | Clockwork integration + |-------------------------------------------------------------------------- + | + | The Debugbar can emulate the Clockwork headers, so you can use the Chrome + | Extension, without the server-side code. It uses Debugbar collectors instead. + | + */ + 'clockwork' => false, + + /* + |-------------------------------------------------------------------------- + | DataCollectors + |-------------------------------------------------------------------------- + | + | Enable/disable DataCollectors + | + */ + + 'collectors' => [ + 'phpinfo' => false, // Php version + 'messages' => true, // Messages + 'time' => true, // Time Datalogger + 'memory' => true, // Memory usage + 'exceptions' => true, // Exception displayer + 'log' => true, // Logs from Monolog (merged in messages if enabled) + 'db' => true, // Show database (PDO) queries and bindings + 'views' => true, // Views with their data + 'route' => false, // Current route information + 'auth' => false, // Display Laravel authentication status + 'gate' => true, // Display Laravel Gate checks + 'session' => false, // Display session data + 'symfony_request' => true, // Only one can be enabled.. + 'mail' => true, // Catch mail messages + 'laravel' => true, // Laravel version and environment + 'events' => false, // All events fired + 'default_request' => false, // Regular or special Symfony request logger + 'logs' => false, // Add the latest log messages + 'files' => false, // Show the included files + 'config' => false, // Display config settings + 'cache' => false, // Display cache events + 'models' => true, // Display models + 'livewire' => true, // Display Livewire (when available) + 'jobs' => false, // Display dispatched jobs + 'pennant' => false, // Display Pennant feature flags + ], + + /* + |-------------------------------------------------------------------------- + | Extra options + |-------------------------------------------------------------------------- + | + | Configure some DataCollectors + | + */ + + 'options' => [ + 'time' => [ + 'memory_usage' => false, // Calculated by subtracting memory start and end, it may be inaccurate + ], + 'messages' => [ + 'trace' => true, // Trace the origin of the debug message + 'capture_dumps' => true, // Capture laravel `dump();` as message + ], + 'memory' => [ + 'reset_peak' => false, // run memory_reset_peak_usage before collecting + 'with_baseline' => false, // Set boot memory usage as memory peak baseline + 'precision' => 0, // Memory rounding precision + ], + 'auth' => [ + 'show_name' => true, // Also show the users name/email in the debugbar + 'show_guards' => true, // Show the guards that are used + ], + 'db' => [ + 'with_params' => true, // Render SQL with the parameters substituted + 'exclude_paths' => [ // Paths to exclude entirely from the collector + // 'vendor/laravel/framework/src/Illuminate/Session', // Exclude sessions queries + ], + 'backtrace' => true, // Use a backtrace to find the origin of the query in your files. + 'backtrace_exclude_paths' => [], // Paths to exclude from backtrace. (in addition to defaults) + 'timeline' => false, // Add the queries to the timeline + 'duration_background' => true, // Show shaded background on each query relative to how long it took to execute. + 'explain' => [ // Show EXPLAIN output on queries + 'enabled' => false, + ], + 'hints' => false, // Show hints for common mistakes + 'show_copy' => true, // Show copy button next to the query, + 'slow_threshold' => false, // Only track queries that last longer than this time in ms + 'memory_usage' => false, // Show queries memory usage + 'soft_limit' => 100, // After the soft limit, no parameters/backtrace are captured + 'hard_limit' => 500, // After the hard limit, queries are ignored + ], + 'mail' => [ + 'timeline' => true, // Add mails to the timeline + 'show_body' => true, + ], + 'views' => [ + 'timeline' => true, // Add the views to the timeline + 'data' => false, // True for all data, 'keys' for only names, false for no parameters. + 'group' => 50, // Group duplicate views. Pass value to auto-group, or true/false to force + 'exclude_paths' => [ // Add the paths which you don't want to appear in the views + 'vendor/filament', // Exclude Filament components by default + ], + ], + 'route' => [ + 'label' => true, // Show complete route on bar + ], + 'session' => [ + 'hiddens' => [], // Hides sensitive values using array paths + ], + 'symfony_request' => [ + 'label' => true, // Show route on bar + 'hiddens' => [], // Hides sensitive values using array paths, example: request_request.password + ], + 'events' => [ + 'data' => false, // Collect events data, listeners + ], + 'logs' => [ + 'file' => null, + ], + 'cache' => [ + 'values' => true, // Collect cache values + ], + ], + + /* + |-------------------------------------------------------------------------- + | Inject Debugbar in Response + |-------------------------------------------------------------------------- + | + | Usually, the debugbar is added just before , by listening to the + | Response after the App is done. If you disable this, you have to add them + | in your template yourself. See http://phpdebugbar.com/docs/rendering.html + | + */ + + 'inject' => true, + + /* + |-------------------------------------------------------------------------- + | Debugbar route prefix + |-------------------------------------------------------------------------- + | + | Sometimes you want to set route prefix to be used by Debugbar to load + | its resources from. Usually the need comes from misconfigured web server or + | from trying to overcome bugs like this: http://trac.nginx.org/nginx/ticket/97 + | + */ + 'route_prefix' => '_debugbar', + + /* + |-------------------------------------------------------------------------- + | Debugbar route middleware + |-------------------------------------------------------------------------- + | + | Additional middleware to run on the Debugbar routes + */ + 'route_middleware' => [], + + /* + |-------------------------------------------------------------------------- + | Debugbar route domain + |-------------------------------------------------------------------------- + | + | By default Debugbar route served from the same domain that request served. + | To override default domain, specify it as a non-empty value. + */ + 'route_domain' => null, + + /* + |-------------------------------------------------------------------------- + | Debugbar theme + |-------------------------------------------------------------------------- + | + | Switches between light and dark theme. If set to auto it will respect system preferences + | Possible values: auto, light, dark + */ + 'theme' => env('DEBUGBAR_THEME', 'auto'), + + /* + |-------------------------------------------------------------------------- + | Backtrace stack limit + |-------------------------------------------------------------------------- + | + | By default, the Debugbar limits the number of frames returned by the 'debug_backtrace()' function. + | If you need larger stacktraces, you can increase this number. Setting it to 0 will result in no limit. + */ + 'debug_backtrace_limit' => 50, +]; diff --git a/database/seeders/ThreeDotsSeeder.php b/database/seeders/ThreeDotsSeeder.php index a3ace9142..be6f3d545 100644 --- a/database/seeders/ThreeDotsSeeder.php +++ b/database/seeders/ThreeDotsSeeder.php @@ -20,7 +20,11 @@ class ThreeDotsSeeder extends Seeder */ public function run(): void { - $user = User::query()->where('name', '=', 'admin')->first(); + if (app()->isProduction()) { + $user = User::query()->where('username', 'danielhe4rt')->first(); + } else { + $user = User::query()->where('name', 'admin')->first(); + } $tenant = Tenant::factory() ->for($user, 'owner')