This commit is contained in:
Ralph J. Smit
2023-09-28 20:50:07 +02:00
parent 6cc46cf652
commit def9e3c722
10 changed files with 64 additions and 64 deletions

View File

@@ -2,18 +2,18 @@
namespace App\Filament\Resources;
use App\Filament\Resources\PackageResource\Pages;
use App\Filament\Resources\PackageResource\RelationManagers;
use Filament\Forms;
use Filament\Tables;
use App\Models\Package;
use App\Models\Provider;
use App\Models\ProviderPlan;
use Filament\Forms;
use Filament\Forms\Form;
use Filament\Notifications\Notification;
use Filament\Resources\Resource;
use Filament\Tables;
use Filament\Tables\Table;
use App\Models\ProviderPlan;
use Filament\Resources\Resource;
use Illuminate\Support\HtmlString;
use Filament\Notifications\Notification;
use App\Filament\Resources\PackageResource\Pages;
use App\Filament\Resources\PackageResource\RelationManagers;
class PackageResource extends Resource
{
@@ -134,8 +134,8 @@ class PackageResource extends Resource
}),
Forms\Components\CheckboxList::make("provider_plans")
->label(__('Select plans'))
->options(fn() => $provider->plans->mapWithKeys(fn(ProviderPlan $providerPlan) => [$providerPlan->id => $providerPlan->label ?? $providerPlan->plan_id])->all())
->visible(fn(Forms\Get $get) => $get('select_specific_provider_plans'))
->options(fn () => $provider->plans->mapWithKeys(fn (ProviderPlan $providerPlan) => [$providerPlan->id => $providerPlan->label ?? $providerPlan->plan_id])->all())
->visible(fn (Forms\Get $get) => $get('select_specific_provider_plans'))
->reactive()
->bulkToggleable()
->columns(2)
@@ -170,10 +170,10 @@ class PackageResource extends Resource
->color('gray')
->disabled(function (Package $record, Forms\Get $get) {
$providers = collect($get('providers'))
->map(fn(string $id): int => (int)$id)
->map(fn (string $id): int => (int)$id)
->sort();
return $record->providers->pluck('id')->map(fn(string $id): int => (int)$id)->sort()->toArray() !== $providers->all();
return $record->providers->pluck('id')->map(fn (string $id): int => (int)$id)->sort()->toArray() !== $providers->all();
})
]),
Forms\Components\Placeholder::make('save_warning')
@@ -183,10 +183,10 @@ class PackageResource extends Resource
$package = $livewire->getRecord();
$providers = collect($get('providers'))
->map(fn(string $id): int => (int)$id)
->map(fn (string $id): int => (int)$id)
->sort();
return $package->providers->pluck('id')->map(fn(string $id): int => (int)$id)->sort()->toArray() !== $providers->all();
return $package->providers->pluck('id')->map(fn (string $id): int => (int)$id)->sort()->toArray() !== $providers->all();
})
->hiddenLabel(),
])
@@ -217,10 +217,10 @@ class PackageResource extends Resource
return "Attached to stripe - {$record->price_monthly} {$record->currency}";
}),
Tables\Columns\TextColumn::make('maximum_sites')
->formatStateUsing(fn(int $state) => $state === 0 ? __('Unlimited') : $state)
->formatStateUsing(fn (int $state) => $state === 0 ? __('Unlimited') : $state)
->label(__('Maximum sites')),
Tables\Columns\TextColumn::make('maximum_servers')
->formatStateUsing(fn(int $state) => $state === 0 ? __('Unlimited') : $state)
->formatStateUsing(fn (int $state) => $state === 0 ? __('Unlimited') : $state)
->label(__('Maximum servers')),
Tables\Columns\TextColumn::make('users_count')
->counts('users'),

View File

@@ -2,9 +2,9 @@
namespace App\Filament\Resources\PackageResource\Pages;
use App\Filament\Resources\PackageResource;
use Filament\Actions;
use Filament\Resources\Pages\EditRecord;
use App\Filament\Resources\PackageResource;
class EditPackage extends EditRecord
{

View File

@@ -28,10 +28,10 @@ class UsersRelationManager extends RelationManager
...$table->getHeaderActions(),
Action::make('add_user')
->label(__('Add user'))
->form(fn(self $livewire) => [
->form(fn (self $livewire) => [
Select::make('user_id')
->label('User')
->options(User::orderBy('name')->get()->mapWithKeys(fn(User $user) => [$user->id => $user->name]))
->options(User::orderBy('name')->get()->mapWithKeys(fn (User $user) => [$user->id => $user->name]))
->preload()
->searchable()
->required(),

View File

@@ -2,17 +2,17 @@
namespace App\Http\Controllers;
use App\Actions\Server\CreateServerAction;
use App\DataTransferObjects\ServerData;
use App\Http\Requests\ServerUpdateRequest;
use App\Http\Resources\ServerResource;
use App\Jobs\Servers\DeleteServer;
use App\Models\ProviderPlan;
use App\Models\Server;
use Illuminate\Database\Eloquent\Builder;
use Illuminate\Http\RedirectResponse;
use App\Models\ProviderPlan;
use Illuminate\Http\Request;
use App\Jobs\Servers\DeleteServer;
use Illuminate\Support\Facades\Auth;
use Illuminate\Http\RedirectResponse;
use App\Http\Resources\ServerResource;
use App\DataTransferObjects\ServerData;
use Illuminate\Database\Eloquent\Builder;
use App\Actions\Server\CreateServerAction;
use App\Http\Requests\ServerUpdateRequest;
class ServerController extends Controller
{

View File

@@ -3,8 +3,8 @@
namespace App\Http\Middleware;
use Closure;
use Illuminate\Http\Request;
use Illuminate\Support\Arr;
use Illuminate\Http\Request;
class HasAccessToThisGroup
{

View File

@@ -3,10 +3,10 @@
namespace App\Models;
use App\Casts\PermissionCast;
use Illuminate\Database\Eloquent\Factories\HasFactory;
use Illuminate\Database\Eloquent\Model;
use Illuminate\Database\Eloquent\Relations\BelongsToMany;
use Illuminate\Database\Eloquent\Relations\HasMany;
use Illuminate\Database\Eloquent\Factories\HasFactory;
use Illuminate\Database\Eloquent\Relations\BelongsToMany;
class Package extends Model
{

View File

@@ -2,8 +2,8 @@
namespace App\Models;
use Illuminate\Database\Eloquent\Relations\BelongsTo;
use Illuminate\Database\Eloquent\Relations\Pivot;
use Illuminate\Database\Eloquent\Relations\BelongsTo;
class PackageProvider extends Pivot
{

View File

@@ -1,8 +1,8 @@
<?php
use Illuminate\Database\Migrations\Migration;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Support\Facades\Schema;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Database\Migrations\Migration;
return new class extends Migration {
/**

View File

@@ -1,32 +1,32 @@
<?php
use App\Http\Controllers\Auth\AuthenticateTwoFactorController;
use App\Http\Controllers\Auth\CreatePasswordController;
use App\Http\Controllers\DashboardController;
use App\Http\Controllers\DocumentationController;
use Illuminate\Support\Facades\Route;
use App\Http\Controllers\PageController;
use App\Http\Controllers\Profile\ProfileBillingController;
use App\Http\Controllers\Profile\ProfileController;
use App\Http\Controllers\Profile\ProfileIntegrationController;
use App\Http\Controllers\Profile\ProfileSecurityController;
use App\Http\Controllers\Profile\ProfileSettingController;
use App\Http\Controllers\Profile\TwoFactorAuthentication\ConfirmTwoFactorAuthenticationController;
use App\Http\Controllers\Profile\TwoFactorAuthentication\RegenerateRecoveryCodesController;
use App\Http\Controllers\Profile\TwoFactorAuthentication\TwoFactorAuthenticationController;
use App\Http\Controllers\SiteController;
use App\Http\Controllers\SearchController;
use App\Http\Controllers\ServerController;
use App\Http\Controllers\ServerSettingController;
use App\Http\Controllers\SiteAliasController;
use App\Http\Controllers\SiteAppController;
use App\Http\Controllers\SiteCertificateController;
use App\Http\Controllers\SiteController;
use App\Http\Controllers\SiteCronjobController;
use App\Http\Controllers\SiteDatabaseController;
use App\Http\Controllers\SiteDnsController;
use App\Http\Controllers\SiteRedirectController;
use App\Http\Controllers\SiteSettingController;
use App\Http\Controllers\SupportController;
use Illuminate\Support\Facades\Route;
use App\Http\Controllers\DashboardController;
use App\Http\Controllers\SiteAliasController;
use App\Http\Controllers\SiteCronjobController;
use App\Http\Controllers\SiteSettingController;
use App\Http\Controllers\SiteDatabaseController;
use App\Http\Controllers\SiteRedirectController;
use App\Http\Controllers\DocumentationController;
use App\Http\Controllers\ServerSettingController;
use App\Http\Controllers\Profile\ProfileController;
use App\Http\Controllers\SiteCertificateController;
use App\Http\Controllers\Auth\CreatePasswordController;
use App\Http\Controllers\Profile\ProfileBillingController;
use App\Http\Controllers\Profile\ProfileSettingController;
use App\Http\Controllers\Profile\ProfileSecurityController;
use App\Http\Controllers\Auth\AuthenticateTwoFactorController;
use App\Http\Controllers\Profile\ProfileIntegrationController;
use App\Http\Controllers\Profile\TwoFactorAuthentication\RegenerateRecoveryCodesController;
use App\Http\Controllers\Profile\TwoFactorAuthentication\TwoFactorAuthenticationController;
use App\Http\Controllers\Profile\TwoFactorAuthentication\ConfirmTwoFactorAuthenticationController;
Auth::routes();

View File

@@ -1,20 +1,20 @@
<?php
use App\Mail\Admin\Server\AdminServerCreatedEmail;
use App\Models\User;
use App\Models\Server;
use App\Models\Package;
use App\Models\Provider;
use App\Models\ProviderPlan;
use App\Models\ProviderRegion;
use App\Models\Server;
use App\Models\User;
use Database\Factories\PackageFactory;
use function Pest\Laravel\get;
use function Pest\Laravel\post;
use function Pest\Laravel\actingAs;
use Illuminate\Support\Facades\App;
use Illuminate\Support\Facades\Http;
use Illuminate\Support\Facades\Mail;
use function Pest\Laravel\actingAs;
use Database\Factories\PackageFactory;
use function Pest\Laravel\assertDatabaseHas;
use function Pest\Laravel\get;
use function Pest\Laravel\post;
use App\Mail\Admin\Server\AdminServerCreatedEmail;
it('can create a new server', function () {
Mail::fake();
@@ -42,7 +42,7 @@ it('can create a new server', function () {
App::forgetInstance('settings');
actingAs(
$user = User::factory()->withPackage(fn(PackageFactory $factory) => $factory->has(Provider::factory()->withRegion()->withPlan()))->create()
$user = User::factory()->withPackage(fn (PackageFactory $factory) => $factory->has(Provider::factory()->withRegion()->withPlan()))->create()
);
$provider = Provider::sole();
@@ -74,13 +74,13 @@ it('can create a new server', function () {
'database_type' => 'postgresql',
]);
Mail::assertQueued(AdminServerCreatedEmail::class, fn(AdminServerCreatedEmail $mail) => $mail->to[0]['address'] === $adminUsers[0]->email);
Mail::assertQueued(AdminServerCreatedEmail::class, fn(AdminServerCreatedEmail $mail) => $mail->to[0]['address'] === $adminUsers[1]->email);
Mail::assertQueued(AdminServerCreatedEmail::class, fn (AdminServerCreatedEmail $mail) => $mail->to[0]['address'] === $adminUsers[0]->email);
Mail::assertQueued(AdminServerCreatedEmail::class, fn (AdminServerCreatedEmail $mail) => $mail->to[0]['address'] === $adminUsers[1]->email);
});
it('cannot create a server without permissions', function () {
actingAs(
$user = User::factory()->withPackage(fn(PackageFactory $factory) => $factory->serverPermissions(['create' => false,])->has(Provider::factory()->withRegion()->withPlan()))->create()
$user = User::factory()->withPackage(fn (PackageFactory $factory) => $factory->serverPermissions(['create' => false,])->has(Provider::factory()->withRegion()->withPlan()))->create()
);
expect($user->can('create', Server::class))->toBeFalse();