diff --git a/Updated_Cms/.github/workflows/laravel.yml b/Updated_Cms/.github/workflows/laravel.yml new file mode 100644 index 0000000000..c61a7e0535 --- /dev/null +++ b/Updated_Cms/.github/workflows/laravel.yml @@ -0,0 +1,77 @@ + name: Laravel + + on: + push: + branches: [ "main", "dev" ] + pull_request: + branches: [ "main", "dev" ] + + jobs: + tests: + runs-on: ubuntu-latest + + services: + mariadb: + image: mariadb:11 + env: + MYSQL_ALLOW_EMPTY_PASSWORD: yes + MYSQL_DATABASE: atomcms_testing + ports: + - 3306:3306 + options: --health-cmd="healthcheck.sh --connect --innodb_initialized" --health-interval=10s --health-timeout=5s --health-retries=3 + + steps: + - uses: actions/checkout@v4 + with: + fetch-depth: 1 + + - name: Cache composer dependencies + uses: actions/cache@v4 + with: + path: vendor + key: composer-${{ hashFiles('**/composer.lock') }} + restore-keys: | + composer- + + - name: Install PHP + uses: shivammathur/setup-php@v2 + with: + php-version: 8.4 + + - name: Install composer dependencies + run: | + composer install --no-scripts + + - name: Install NPM dependencies + run: npm install + + - name: Compile assets + run: npm run build:atom + + - name: Prepare Laravel Application + run: | + cp .env.testing.example .env.testing + # Override database config for GitHub Actions + sed -i 's/DB_USERNAME=docker/DB_USERNAME=root/' .env.testing + sed -i 's/DB_PASSWORD=password/DB_PASSWORD=/' .env.testing + sed -i 's/DB_DATABASE=testing/DB_DATABASE=atomcms_testing/' .env.testing + php artisan key:generate --env=testing + + - name: Debug Laravel Configuration + run: | + php artisan config:cache --env=testing + php artisan route:cache --env=testing + php artisan view:cache --env=testing + + - name: Create storage directories + run: | + mkdir -p storage/app/public + mkdir -p storage/framework/cache + mkdir -p storage/framework/sessions + mkdir -p storage/framework/views + mkdir -p storage/logs + chmod -R 755 storage + + - name: Run Test suite with debug + run: | + php artisan test --env=testing --stop-on-failure diff --git a/Updated_Cms/.github/workflows/lint.yml b/Updated_Cms/.github/workflows/lint.yml new file mode 100644 index 0000000000..65b4e8fb1a --- /dev/null +++ b/Updated_Cms/.github/workflows/lint.yml @@ -0,0 +1,38 @@ +name: Fix Code Style + +on: [push] + +permissions: + contents: write + +jobs: + lint: + runs-on: ubuntu-latest + strategy: + fail-fast: true + matrix: + php: [8.4] + + steps: + - name: Checkout code + uses: actions/checkout@v5 + with: + token: ${{ secrets.GITHUB_TOKEN }} + fetch-depth: 0 + + - name: Setup PHP + uses: shivammathur/setup-php@v2 + with: + php-version: ${{ matrix.php }} + tools: composer, pint + + - name: Install composer dependencies + run: composer install --prefer-dist --no-interaction --no-progress + + - name: Run Pint + run: pint + + - name: Commit linted files + uses: stefanzweifel/git-auto-commit-action@v5 + with: + commit_message: 'style: fix code style with Laravel Pint' diff --git a/Updated_Cms/app/Actions/Fortify/Controllers/TwoFactorAuthenticatedSessionController.php b/Updated_Cms/app/Actions/Fortify/Controllers/TwoFactorAuthenticatedSessionController.php index 86beeb01ea..0eb19224e2 100644 --- a/Updated_Cms/app/Actions/Fortify/Controllers/TwoFactorAuthenticatedSessionController.php +++ b/Updated_Cms/app/Actions/Fortify/Controllers/TwoFactorAuthenticatedSessionController.php @@ -53,6 +53,6 @@ class TwoFactorAuthenticatedSessionController extends Controller 'ip_current' => $request->ip(), ]); - return app(TwoFactorLoginResponse::class); + return resolve(TwoFactorLoginResponse::class); } } diff --git a/Updated_Cms/app/Actions/Fortify/CreateNewUser.php b/Updated_Cms/app/Actions/Fortify/CreateNewUser.php index 2fd1909ad1..18e299393f 100644 --- a/Updated_Cms/app/Actions/Fortify/CreateNewUser.php +++ b/Updated_Cms/app/Actions/Fortify/CreateNewUser.php @@ -120,7 +120,7 @@ class CreateNewUser implements CreatesNewUsers 'beta_code' => ['sometimes', 'string', new BetaCodeRule], 'terms' => ['required', 'accepted'], 'g-recaptcha-response' => ['sometimes', 'string', new GoogleRecaptchaRule], - 'cf-turnstile-response' => [app(Turnstile::class)], + 'cf-turnstile-response' => [resolve(Turnstile::class)], ]; $messages = [ diff --git a/Updated_Cms/app/Actions/Fortify/RedirectIfTwoFactorAuthenticatable.php b/Updated_Cms/app/Actions/Fortify/RedirectIfTwoFactorAuthenticatable.php index 72641877b7..91ef878738 100644 --- a/Updated_Cms/app/Actions/Fortify/RedirectIfTwoFactorAuthenticatable.php +++ b/Updated_Cms/app/Actions/Fortify/RedirectIfTwoFactorAuthenticatable.php @@ -179,7 +179,7 @@ class RedirectIfTwoFactorAuthenticatable } if (setting('cloudflare_turnstile_enabled') !== '' && setting('cloudflare_turnstile_enabled') !== '0') { - $rules['cf-turnstile-response'] = ['required', app(Turnstile::class)]; + $rules['cf-turnstile-response'] = ['required', resolve(Turnstile::class)]; } $messages = [ diff --git a/Updated_Cms/app/Filament/Pages/BadgePage.php b/Updated_Cms/app/Filament/Pages/BadgePage.php index 9619683800..6cbf056533 100644 --- a/Updated_Cms/app/Filament/Pages/BadgePage.php +++ b/Updated_Cms/app/Filament/Pages/BadgePage.php @@ -123,7 +123,7 @@ class BadgePage extends Page return; } - $badgeData = app(ExternalTextsParser::class)->getBadgeData($badgeCode); + $badgeData = resolve(ExternalTextsParser::class)->getBadgeData($badgeCode); $this->badgeWasPreviouslyCreated = is_array($badgeData['nitro']) || is_array($badgeData['flash']); if ($this->badgeWasPreviouslyCreated) { @@ -202,7 +202,7 @@ class BadgePage extends Page return; } - $externalTextsParser = app(ExternalTextsParser::class); + $externalTextsParser = resolve(ExternalTextsParser::class); if ((empty($this->data['nitro']) && $nitroEnabled) || (empty($this->data['flash']) && $flashEnabled)) { Notification::make() diff --git a/Updated_Cms/app/Filament/Pages/Login.php b/Updated_Cms/app/Filament/Pages/Login.php index d3e02bdf06..a9afbfaa09 100644 --- a/Updated_Cms/app/Filament/Pages/Login.php +++ b/Updated_Cms/app/Filament/Pages/Login.php @@ -56,7 +56,7 @@ class Login extends \Filament\Auth\Pages\Login session()->regenerate(); - return app(LoginResponse::class); + return resolve(LoginResponse::class); } protected function throwFailureValidationException(): never diff --git a/Updated_Cms/app/Filament/Resources/Hotel/BadgeTextEditors/BadgeTextEditorResource.php b/Updated_Cms/app/Filament/Resources/Hotel/BadgeTextEditors/BadgeTextEditorResource.php index 5b97b1a9ea..4b19d5de52 100644 --- a/Updated_Cms/app/Filament/Resources/Hotel/BadgeTextEditors/BadgeTextEditorResource.php +++ b/Updated_Cms/app/Filament/Resources/Hotel/BadgeTextEditors/BadgeTextEditorResource.php @@ -55,7 +55,7 @@ class BadgeTextEditorResource extends Resource #[\Override] public static function table(Table $table): Table { - $settingsService = app(SettingsService::class); + $settingsService = resolve(SettingsService::class); $badgesPath = $settingsService->getOrDefault('badges_path', '/gamedata/c_images/album1584/'); return $table diff --git a/Updated_Cms/app/Filament/Resources/Hotel/CustomQueryBuilder.php b/Updated_Cms/app/Filament/Resources/Hotel/CustomQueryBuilder.php index d86c8abb6d..dea4526a41 100644 --- a/Updated_Cms/app/Filament/Resources/Hotel/CustomQueryBuilder.php +++ b/Updated_Cms/app/Filament/Resources/Hotel/CustomQueryBuilder.php @@ -10,7 +10,7 @@ class CustomQueryBuilder extends Builder public function __construct() { // Call the parent constructor with a dummy query - parent::__construct(app('db')->query()); + parent::__construct(resolve('db')->query()); } #[\Override] diff --git a/Updated_Cms/app/Filament/Resources/User/Users/Pages/EditUser.php b/Updated_Cms/app/Filament/Resources/User/Users/Pages/EditUser.php index ba5baa061f..03eb35a51c 100644 --- a/Updated_Cms/app/Filament/Resources/User/Users/Pages/EditUser.php +++ b/Updated_Cms/app/Filament/Resources/User/Users/Pages/EditUser.php @@ -58,7 +58,7 @@ class EditUser extends EditRecord $this->halt(); } - $rcon = app(RconService::class); + $rcon = resolve(RconService::class); if (! $user->online) { DB::transaction(function () use ($user, $data): void { @@ -152,7 +152,7 @@ class EditUser extends EditRecord return; } - app(SendCurrency::class)->execute($user, $currencyType, -$currency->amount + $updatedCurrencyAmount); + resolve(SendCurrency::class)->execute($user, $currencyType, -$currency->amount + $updatedCurrencyAmount); }); } diff --git a/Updated_Cms/app/Filament/Resources/User/Users/RelationManagers/BadgesRelationManager.php b/Updated_Cms/app/Filament/Resources/User/Users/RelationManagers/BadgesRelationManager.php index 312bc5ca91..04f37813ad 100644 --- a/Updated_Cms/app/Filament/Resources/User/Users/RelationManagers/BadgesRelationManager.php +++ b/Updated_Cms/app/Filament/Resources/User/Users/RelationManagers/BadgesRelationManager.php @@ -83,7 +83,7 @@ class BadgesRelationManager extends RelationManager ->persistent() ->send(); } else { - $rcon = app(RconService::class); + $rcon = resolve(RconService::class); $data = $action->getFormData(); $rcon->sendSafelyFromDashboard('sendBadge', [$user, $data['badge_code']], 'RCON: Failed to send the badge'); @@ -119,7 +119,7 @@ class BadgesRelationManager extends RelationManager ->persistent() ->send(); } else { - $rcon = app(RconService::class); + $rcon = resolve(RconService::class); $badge = $action instanceof DeleteAction ? $action->getRecord()?->badge_code : $action->getRecords()->map(fn ($record) => $record->badge_code)->join(';'); diff --git a/Updated_Cms/app/Helpers/helper.php b/Updated_Cms/app/Helpers/helper.php index 44789eeef6..63cae2a79b 100644 --- a/Updated_Cms/app/Helpers/helper.php +++ b/Updated_Cms/app/Helpers/helper.php @@ -9,21 +9,21 @@ use Illuminate\Support\Str; if (! function_exists('setting')) { function setting(string $setting): string { - return app(SettingsService::class)->getOrDefault($setting); + return resolve(SettingsService::class)->getOrDefault($setting); } } if (! function_exists('hasPermission')) { function hasPermission(string $permission): string { - return app(PermissionsService::class)->getOrDefault($permission); + return resolve(PermissionsService::class)->getOrDefault($permission); } } if (! function_exists('hasHousekeepingPermission')) { function hasHousekeepingPermission(string $permission): string { - return app(HousekeepingPermissionsService::class)->getOrDefault($permission); + return resolve(HousekeepingPermissionsService::class)->getOrDefault($permission); } } diff --git a/Updated_Cms/app/Http/Controllers/Shop/ShopController.php b/Updated_Cms/app/Http/Controllers/Shop/ShopController.php index 9d0c518ec5..86b97dee50 100644 --- a/Updated_Cms/app/Http/Controllers/Shop/ShopController.php +++ b/Updated_Cms/app/Http/Controllers/Shop/ShopController.php @@ -135,7 +135,7 @@ class ShopController extends Controller public function handleFurniture(array $furniture) { - $sendFurniture = app(SendFurniture::class); + $sendFurniture = resolve(SendFurniture::class); $sendFurniture->execute(Auth::user(), $furniture); } diff --git a/Updated_Cms/app/Http/Requests/AccountSettingsFormRequest.php b/Updated_Cms/app/Http/Requests/AccountSettingsFormRequest.php index a5abff49cd..c557ce9954 100644 --- a/Updated_Cms/app/Http/Requests/AccountSettingsFormRequest.php +++ b/Updated_Cms/app/Http/Requests/AccountSettingsFormRequest.php @@ -17,7 +17,7 @@ class AccountSettingsFormRequest extends FormRequest 'mail' => ['required', 'email', Rule::unique('users')->ignore($this->user()->id), new WebsiteWordfilterRule], 'motto' => ['nullable', 'string', 'max:127', new WebsiteWordfilterRule], 'g-recaptcha-response' => [new GoogleRecaptchaRule], - 'cf-turnstile-response' => [app(Turnstile::class)], + 'cf-turnstile-response' => [resolve(Turnstile::class)], ]; } diff --git a/Updated_Cms/app/Http/Requests/PasswordSettingsFormRequest.php b/Updated_Cms/app/Http/Requests/PasswordSettingsFormRequest.php index c57356df18..69ec1ba700 100644 --- a/Updated_Cms/app/Http/Requests/PasswordSettingsFormRequest.php +++ b/Updated_Cms/app/Http/Requests/PasswordSettingsFormRequest.php @@ -18,7 +18,7 @@ class PasswordSettingsFormRequest extends FormRequest 'current_password' => ['required', 'string', new CurrentPasswordRule], 'password' => $this->passwordRules(), 'g-recaptcha-response' => [new GoogleRecaptchaRule], - 'cf-turnstile-response' => [app(Turnstile::class)], + 'cf-turnstile-response' => [resolve(Turnstile::class)], ]; } } diff --git a/Updated_Cms/app/Http/Requests/RegisterFormRequest.php b/Updated_Cms/app/Http/Requests/RegisterFormRequest.php index 1dae173c81..4804eecb27 100644 --- a/Updated_Cms/app/Http/Requests/RegisterFormRequest.php +++ b/Updated_Cms/app/Http/Requests/RegisterFormRequest.php @@ -18,7 +18,7 @@ class RegisterFormRequest extends FormRequest 'password' => ['required', 'string', 'confirmed', 'min:8'], 'terms' => ['required', 'accepted'], 'g-recaptcha-response' => [new GoogleRecaptchaRule], - 'cf-turnstile-response' => [app(Turnstile::class)], + 'cf-turnstile-response' => [resolve(Turnstile::class)], ]; } diff --git a/Updated_Cms/app/Http/Requests/ShopVoucherFormRequest.php b/Updated_Cms/app/Http/Requests/ShopVoucherFormRequest.php index 179d67700e..fb56a9c3f2 100644 --- a/Updated_Cms/app/Http/Requests/ShopVoucherFormRequest.php +++ b/Updated_Cms/app/Http/Requests/ShopVoucherFormRequest.php @@ -13,7 +13,7 @@ class ShopVoucherFormRequest extends FormRequest return [ 'code' => ['required', 'string'], 'g-recaptcha-response' => [new GoogleRecaptchaRule], - 'cf-turnstile-response' => [app(Turnstile::class)], + 'cf-turnstile-response' => [resolve(Turnstile::class)], ]; } } diff --git a/Updated_Cms/app/Http/Requests/StaffApplicationFormRequest.php b/Updated_Cms/app/Http/Requests/StaffApplicationFormRequest.php index c5c1a80d96..97b7cea0cd 100644 --- a/Updated_Cms/app/Http/Requests/StaffApplicationFormRequest.php +++ b/Updated_Cms/app/Http/Requests/StaffApplicationFormRequest.php @@ -13,7 +13,7 @@ class StaffApplicationFormRequest extends FormRequest return [ 'content' => ['required', 'string'], 'g-recaptcha-response' => [new GoogleRecaptchaRule], - 'cf-turnstile-response' => [app(Turnstile::class)], + 'cf-turnstile-response' => [resolve(Turnstile::class)], ]; } } diff --git a/Updated_Cms/app/Models/User.php b/Updated_Cms/app/Models/User.php index 7fdfaa28eb..542f08ff2e 100644 --- a/Updated_Cms/app/Models/User.php +++ b/Updated_Cms/app/Models/User.php @@ -245,7 +245,7 @@ class User extends Authenticatable implements FilamentUser, HasName public function confirmTwoFactorAuthentication($code) { - $codeIsValid = app(TwoFactorAuthenticationProvider::class) + $codeIsValid = resolve(TwoFactorAuthenticationProvider::class) ->verify(decrypt($this->two_factor_secret), $code); if (! $codeIsValid) { diff --git a/Updated_Cms/app/Models/WebsiteAd.php b/Updated_Cms/app/Models/WebsiteAd.php index 578528c39e..331a918866 100644 --- a/Updated_Cms/app/Models/WebsiteAd.php +++ b/Updated_Cms/app/Models/WebsiteAd.php @@ -20,7 +20,7 @@ class WebsiteAd extends Model protected function imageUrl(): \Illuminate\Database\Eloquent\Casts\Attribute { return \Illuminate\Database\Eloquent\Casts\Attribute::make(get: function () { - $settingsService = app(SettingsService::class); + $settingsService = resolve(SettingsService::class); $adsPicturePath = Cache::remember('ads_picture_path', 3600, fn () => $settingsService->getOrDefault('ads_picture_path')); if (! str_starts_with((string) $adsPicturePath, 'http')) { $adsPicturePath = rtrim((string) config('app.url'), '/') . '/' . ltrim((string) $adsPicturePath, '/'); @@ -56,7 +56,7 @@ class WebsiteAd extends Model protected function configureAdsDisk(): void { - $settingsService = app(SettingsService::class); + $settingsService = resolve(SettingsService::class); $adsPath = Cache::remember('ads_path_filesystem', 3600, fn () => $settingsService->getOrDefault('ads_path_filesystem')); diff --git a/Updated_Cms/app/Providers/AppServiceProvider.php b/Updated_Cms/app/Providers/AppServiceProvider.php index d101747efd..4da8171f7b 100644 --- a/Updated_Cms/app/Providers/AppServiceProvider.php +++ b/Updated_Cms/app/Providers/AppServiceProvider.php @@ -56,7 +56,7 @@ class AppServiceProvider extends ServiceProvider $table->paginated([10, 25, 50]); }); - $settingsService = app(SettingsService::class); + $settingsService = resolve(SettingsService::class); $badgePath = $settingsService->getOrDefault('badge_path_filesystem', '/var/www/gamedata/c_images/album1584'); Config::set('filesystems.disks.badges.root', $badgePath); diff --git a/Updated_Cms/rector.php b/Updated_Cms/rector.php index 8632e6971a..be40331b0e 100644 --- a/Updated_Cms/rector.php +++ b/Updated_Cms/rector.php @@ -22,7 +22,7 @@ return RectorConfig::configure() ->withSets([ LevelSetList::UP_TO_PHP_85, // Dit activeert de gratis "Laravel Shift" naar versie 12: - LaravelLevelSetList::UP_TO_LARAVEL_120, + LaravelLevelSetList::UP_TO_LARAVEL_120, LaravelSetList::LARAVEL_CODE_QUALITY, SetList::CODE_QUALITY, SetList::DEAD_CODE, @@ -30,4 +30,4 @@ return RectorConfig::configure() ->withSkip([ __DIR__ . '/lang/vendor', __DIR__ . '/storage', // Altijd overslaan - ]); \ No newline at end of file + ]);