Commit Graph
3177 Commits
Author SHA1 Message Date
b82df887fe Enhance CI/CD with Docker optimizations and error handling (#3509)
* Bump Dockerfile syntax to 1.18

* Add getStatusCode to Response and update test

* Expect error code 740 for invalid theme action

* Use Docker-based CI/test image and live test script

* Add PHP 8.5 to CI matrix

* Add Buildx caching and optimize Docker build

* Add CI timeouts, quoting fixes, and release tree build

* Add concurrency, caching, and cleanup to CI

* Grant permissions for preview-build job

* Map error code 740 to HTTP 404 and update test

* Update cache-scope names in GitHub workflows

* Remove redundant status guard in theme admin test

Agent-Logs-Url: https://github.com/FOSSBilling/FOSSBilling/sessions/b20f484f-0aaa-4afc-ae43-adb264bb05aa

Co-authored-by: admdly <2807620+admdly@users.noreply.github.com>

* Grant cache export permissions to CI build job

Agent-Logs-Url: https://github.com/FOSSBilling/FOSSBilling/sessions/a088c94f-a176-40fb-9e0b-ee3cac2aeb5b

Co-authored-by: admdly <2807620+admdly@users.noreply.github.com>

* Disable cache for release artifact build

* Fix for pull request finding

Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com>

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: admdly <2807620+admdly@users.noreply.github.com>
Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com>
2026-05-10 22:43:16 +01:00
Copilotandadmdly 35ae244041 Gate debug bar to debug mode, harden URL/error handling, and fix UpdatePatcher query typing/binding (#3508)
* Initial plan

* fix: apply requested routing, patcher, and test hardening diffs

Agent-Logs-Url: https://github.com/FOSSBilling/FOSSBilling/sessions/e959bfdb-4f67-4b6b-a029-cc296b5e8057

Co-authored-by: admdly <2807620+admdly@users.noreply.github.com>

* test: make theme invalid-action status assertion compatible with live API helper

Agent-Logs-Url: https://github.com/FOSSBilling/FOSSBilling/sessions/675d486f-4242-4143-9d17-987d7e104fd2

Co-authored-by: admdly <2807620+admdly@users.noreply.github.com>

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: admdly <2807620+admdly@users.noreply.github.com>
2026-05-10 17:39:58 +01:00
Adam Daley f7f7fbc3df Enhance security, validation, and configuration for various services (#3507)
* Use `\A` and `\z` anchors in Finder regex

* Run config patches before core patches

* Ensure cron log exists and owned by www-data

* Change numeric inputs to text for plan limits

* Invoke global listeners for fired event

* Sanitize PDF filenames in `createPdfResponse`

* Use `array_key_exists` for blacklist check

* Prefer custom package value for DirectAdmin

* Validate password argument type in isPasswordStrong

* Skip non-installed non-core modules in Hook Service

* Instantiate `DoctrinePaginator` after limits

* Validate guest message is a string

* Adjust mocks in Hook ServiceTest

* Validate currency conversion rate input

* Stop accepting CSRF header token

* Add `.dockerignore` and modernize CI/Dockerfile

* Mock `CurrencyRepository` in `ServiceTest`

* Add antispam hooks for client/admin login

* Move password reset captcha before rate limiting

* Add sandbox attribute to email preview iframe

* Skip reprocessing and include payment_intent check

* Check password reset captcha after rate limit

* Enhance testCreateAndProcess with DB and TX mocks
2026-05-10 16:46:22 +01:00
Adam Daley ff0fef38a6 Fix fatal error when registering Doctrine PDO with debugbar collector (#3506)
Fix debugbar Doctrine PDO collector wrapping
2026-05-10 16:32:59 +01:00
Adam DaleyandCopilot Autofix powered by AI 38aa818aa1 Reject non-scalar select/radio config values (#3504)
* fix(order): reject non-scalar select/radio config values

* Fix for pull request finding

Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com>

---------

Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com>
2026-05-10 15:31:22 +01:00
Adam Daley d49168bd43 Fix patch 46 enum migration for legacy client values (#3503)
* Fix patch 46 enum migration for legacy client values

* Remove `document_type` updates from UpdatePatcher
2026-05-10 14:40:40 +01:00
Copilotandadmdly aa45a9dbd1 Initialize Plesk DNS params, normalize Staff service naming/docs, and harden admin integration tests (#3499)
* Initial plan

* Apply requested fixes for Plesk, Staff service, and tests

Agent-Logs-Url: https://github.com/FOSSBilling/FOSSBilling/sessions/bac3f6d2-a36b-4de4-b716-074e94a52148

Co-authored-by: admdly <2807620+admdly@users.noreply.github.com>

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: admdly <2807620+admdly@users.noreply.github.com>
2026-05-08 08:00:43 +01:00
Copilotandadmdly 654ea31f2f Clarify exception annotations, remove dead massmailer code, normalize staff permission schema, and harden integration test assertions (#3498)
* Initial plan

* Apply requested fixes for annotations, permissions, and tests

Agent-Logs-Url: https://github.com/FOSSBilling/FOSSBilling/sessions/724562e3-bb44-420b-9399-fef57791b724

Co-authored-by: admdly <2807620+admdly@users.noreply.github.com>

* Narrow ip lookup test error suppression to warnings only

Agent-Logs-Url: https://github.com/FOSSBilling/FOSSBilling/sessions/724562e3-bb44-420b-9399-fef57791b724

Co-authored-by: admdly <2807620+admdly@users.noreply.github.com>

* Simplify invalid action regex and document error severity delegation

Agent-Logs-Url: https://github.com/FOSSBilling/FOSSBilling/sessions/724562e3-bb44-420b-9399-fef57791b724

Co-authored-by: admdly <2807620+admdly@users.noreply.github.com>

* Sanitize ip lookup warning text before logging in system test

Agent-Logs-Url: https://github.com/FOSSBilling/FOSSBilling/sessions/724562e3-bb44-420b-9399-fef57791b724

Co-authored-by: admdly <2807620+admdly@users.noreply.github.com>

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: admdly <2807620+admdly@users.noreply.github.com>
2026-05-08 07:06:28 +01:00
Yağızhan Burak Yakar 236e6a8572 Added type casting to more places (#3496) 2026-05-08 06:00:58 +01:00
FOSSBilling BotandFOSSBilling Bot 0ba0512618 Apply PHP Code Styling & Quality Changes (#3497)
Co-authored-by: FOSSBilling Bot <fossbilling-bot>
2026-05-08 05:47:16 +01:00
Copilotandadmdly 435852feb9 Fix label/input mismatch, duplicate autofocus, and improve error test assertions in staff password reset (#3493)
* Initial plan

* Fix email input accessibility, label/for mismatch, duplicate autofocus, and improve error test assertions

Agent-Logs-Url: https://github.com/FOSSBilling/FOSSBilling/sessions/ff78cfe6-ae66-4c93-ba35-5af569b40725

Co-authored-by: admdly <2807620+admdly@users.noreply.github.com>

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: admdly <2807620+admdly@users.noreply.github.com>
2026-05-06 23:42:05 +01:00
Yağızhan Burak Yakar 186dced3ff Fixed invisible company logo in staff auth pages (#3489)
* Fixed invisible company logo in staff auth pages

* Add missing API calls
2026-05-07 00:22:37 +03:00
Adam Daley 53eb4f2fca Refactor Twig environments and extensions (#2752)
* Replace Custom Twig components

Replace custom Twig components with native Twig components, remove unused custom Twig components, and move functionality to macros where appropriate.

m

Update partial_extensions.html.twig

* Update Twig components and migrate to FOSSBilling namespace

* Update Currency module...

* Refactor Twig environment config and loading

* Switch CSRF to cookie-based double-submit

* Add Api Twig extension and restore widget/svg helpers

* Cast language flags; improve JSON parsing

* Add markdown DI service and use in Admin API

* Refactor Twig extensions and markdown, simplify APIs

* Add sandboxed email Twig env, update render APIs

* Fix pagination URL usage and menu class

* Fix HTML markup in email templates

* Use macro for avatars and status badges

* Fix Twig spacing and pagination URL filter order

* Replace Custom Twig components

Replace custom Twig components with native Twig components, remove unused custom Twig components, and move functionality to macros where appropriate.

m

Update partial_extensions.html.twig

* Update Twig components and migrate to FOSSBilling namespace

* Refactor Twig environment config and loading

* Add Api Twig extension and restore widget/svg helpers

* Cast language flags; improve JSON parsing

* Add markdown DI service and use in Admin API

* Refactor Twig extensions and markdown, simplify APIs

* Fix pagination URL usage and menu class

* Fix Twig spacing and pagination URL filter order

* Use `current_theme` global and refactor `period_title`

* Allow markdown and date in email Twig sandbox

* Update email template examples

* Fix Twig URLs, quoting, and logo alt text

* Fix Twig templates: URLs, i18n, search params

* Use `templates/*` directories for module templates

* Tighten Twig sandbox and add tests

* Add Twig environment and template docs to `AGENTS.md`

* Use Symfony Filesystem/Finder and assorted fixes

* Fix ticket reply link fragment concatenation

* Close missing divs in dashboard template

* Use detailed `toApiArray` for client

* Fix module name resolution for email templates

* Regenerate `composer.lock`

* Use `markdown_to_html` filter in admin macro

* Handle null price/quantity and rename test method

* Use `Tools::isHTTPS()` for HTTPS checks

* Add 'area' param to `url` filter and update templates

* Use client area URLs in admin templates

* Use client area and guest API URLs in templates

* Remove client-side invoice delete feature

* Create Twig env via `TwigFactory` for PDF rendering

* Add embedded orderbutton JS and update render

* Add 'srclink' to cspell allowlist

* Use `renderEmailTplString` for email rendering

* Bump twig/markdown-extra to v3.24

* Use `markdown_to_html` for privacy policy

* Escape API JSON, handle null IP, client URLs

* Remove initial admin creation flow

* Handle HTTP failures and make tests robust

* Use `api_url` helper in admin templates

* Use `url` filter for footer link 5

* Add patch53 to remove legacy html templates

* Bump setting last_patch to 53

* Add patch54 to restore legacy email templates

* Use renderEmailTplString for email templating

* Remove redundant else/endif in order template

* Add file-hash cache buster for asset URLs

* Remove raw Twig filter and handle missing modules dir

* Return '-' for future timestamps

* Register and reuse TwigFactory and add CSRF cookie

* Adjust API URL helper and add Twig error handling

* Update composer.lock and package-lock.json

* Add twig_factory to ServiceTest DI

* Use url filter for link_page in template

* Composer - update deps and add markdown-extra

* Remove docblocks and inline comments in `TwigFactory`

* Add patches 53-55 and update `last_patch`

* Add `has_permission` Twig function; exclude `href`

* Remove duplicate network interface form

* Guard removal of legacy dirs; add network input

* Handle null category descriptions in template

* Add Twig adapter env and sandbox policy

* Add 'striptags' to cspell word list

* Update composer.lock (deps updated/removed)

* Sanitize custom payment adapter templates

* Remove redundant legacy API tests

* Bump `last_patch` setting to 56

* Coalesce null before `markdown_to_html`

* Move update patcher to system CLI command

* Remove stray `endif` from recaptcha macro

* Update composer.lock

* Fix extra closing brace in Api ServiceTest

* Fix test errors from main merge

- Remove testGetRequestCount tests (method moved to RateLimiter)
- Remove testGetDi from Staff and System GuestTest (protected method)
- Fix IP error message in testLoginCheckIpException
- Add rate_limiter mock to Staff GuestTest tests that need it

* Fix remaining Staff GuestTest issues

- Add extension service mock for captcha check
- Fix error message from 'User not found' to 'Admin not found'

* Fix Staff GuestTest: update query and add logger mock

* Fix Staff GuestTest: set admin status to active for password reset flow

* Fix stale API calls and inverted required condition

- Notification: replace removed system_string_render with direct output
- Antispam settings: replace |alink/|link with |url/|api_url filters
- build_form macro: fix inverted required condition for non-textarea inputs

* Sanitize JS/data URIs and disable buttons by permission

* Use client login/profile links in support emails

* Encode fb-api JSON and tighten URL sanitization

* Prefer session auth for API key methods

* Remove stray endif and fix template formatting

* Add CSRF token to CSV exports; fix template

* Remove stray endif in currency template

* Make invoice PDF generation return Response

* Fix Twig filters, templates, and form handling

* Remove readonly from anonymous class in test

* Inline DebugBar CSS/JS in renderHead

* Add Bootstrap Tab to global bootstrap

* Capitalize template UI strings

* Use CKEditor API for reply quotes

* Remove WYSIWYG module and move CKEditor to themes

* Bump `last_patch` in install SQL to 59

* Remove Spamchecker module

* Run domain management script only for active orders

* Standardize UI text capitalization & minor fixes

* Remove Spamchecker legacy tests; fix period test

* Rename Spamchecker tests to Antispam

* Restore antispam config in tests; remove fixture

* Refactor Antispam Guest tests for config checks

* Update theme build docs; remove Wysiwyg module

* Remove spamchecker from cspell and tweak comment

* Add spamchecker to cspell word list

* Capitalize 'Update Graphs' button label
2026-05-06 21:02:16 +01:00
renovate[bot] 2c5e03b20e Update dependency postcss to v8.5.14 (#3485)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-05-06 08:52:29 +01:00
Adam Daley ab957e4ac2 Support returning PDF as HttpFoundation Response (#3482)
Support returning HttpFoundation Response (PDF)
2026-05-05 08:48:24 +01:00
Adam Daley 1d83a6c051 Prefer session auth for API key methods (#3479) 2026-05-05 05:56:17 +01:00
Yağızhan Burak YakarandAdam Daley 091bd5c67b Refactor guest API routes and reduce the information passed (#3474)
* Remove guest API system version endpoint

* Moved theme information to Admin API

* Removed references to the old "comment" module

* Remove unused cron endpoints

* Don't pass registrar information to guests

* Filter out Product toApiArray properties

* Redact public ticket information passed via the guest API

* Move redaction logic to the serializer

* Moved honeypot information to a Twig function

* More redaction

* Fixed tests

* Block additional paths

* Reduce the amount of information passed to clients

* Mask file downloads behind sendFile rather than serializing original path

* Move honeypot information to the new Twig function

* Add missing curly bracket

* Removed unused `get_slider` endpoint

* Turn publicMessageToApiArray into an allowlist

---------

Co-authored-by: Adam Daley <admdly@users.noreply.github.com>
2026-05-04 21:48:11 +01:00
Yağızhan Burak Yakar e05ce7a7e2 Rate limit system improvements (#3461) 2026-05-04 16:53:28 +01:00
renovate[bot] e6ee38070b Update dependency postcss to v8.5.13 2026-05-04 00:48:27 +00:00
Copilotandadmdly cfa1c16a6b Fix spelling, grammar, strict comparison, and style issues in UpdatePatcher and AdminTest (#3478)
* Initial plan

* fix: correct spelling, grammar, strict comparison, and code style in UpdatePatcher and AdminTest

Agent-Logs-Url: https://github.com/FOSSBilling/FOSSBilling/sessions/96e4e3ba-aa45-4ff5-b9f9-5d47a74424bf

Co-authored-by: admdly <2807620+admdly@users.noreply.github.com>

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: admdly <2807620+admdly@users.noreply.github.com>
2026-05-03 23:47:21 +01:00
Yağızhan Burak Yakar d4ddf7e318 Remove document_type enum from patch 46 (#3476)
* Remove document_nr enum patch

* Use single quotes

* Remove the removed Queue tables from structure.sql

* Add missing unique keys to `currency` and `exeension`
2026-05-03 22:15:09 +01:00
Yağızhan Burak Yakar 5653843e91 Hotfix: Fix wrong usage of uninstall() in update patches (#3475)
Fix wrong usage of `uninstall()` in update patches
2026-05-03 14:07:28 +03:00
Copilotandadmdly 5292c10d0e Fix spelling, test correctness, and code quality across System/Invoice modules (#3469)
Apply fixes: spelling, test assertions, strict equality, try-finally, and named constants

Agent-Logs-Url: https://github.com/FOSSBilling/FOSSBilling/sessions/a85810bc-0126-402f-89ac-2da2d08d8fd9

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: admdly <2807620+admdly@users.noreply.github.com>
2026-05-02 03:14:06 +01:00
Copilotandadmdly 7a1ad8a892 TLD column widening and cart fixes (#3468)
* Fix issues #3464, #3465, #3466: TLD column size, duplicate domain cart check, restore Check button visibility

Agent-Logs-Url: https://github.com/FOSSBilling/FOSSBilling/sessions/caa5e0e6-0a4b-49a0-a167-ee479bb21a71

Co-authored-by: admdly <2807620+admdly@users.noreply.github.com>

* Add patch56 to UpdatePatcher to widen tld.tld column to VARCHAR(64) for existing installations

Agent-Logs-Url: https://github.com/FOSSBilling/FOSSBilling/sessions/0e01fd68-04a0-4f23-a253-41adda86eafa

Co-authored-by: admdly <2807620+admdly@users.noreply.github.com>

* Update last_patch to 56 in installer content.sql

Agent-Logs-Url: https://github.com/FOSSBilling/FOSSBilling/sessions/16e52dcc-dfde-428d-8507-21f52324b473

Co-authored-by: admdly <2807620+admdly@users.noreply.github.com>

* Improve duplicate domain guard to handle nested domain config and add PHPUnit tests

Agent-Logs-Url: https://github.com/FOSSBilling/FOSSBilling/sessions/adc3bb65-c14e-4546-a9ca-2d19153f7c95

Co-authored-by: admdly <2807620+admdly@users.noreply.github.com>

* Fix spellcheck: normalised -> normalized

Agent-Logs-Url: https://github.com/FOSSBilling/FOSSBilling/sessions/9e3c0829-d30d-4e92-9201-bf0d48b8be93

Co-authored-by: admdly <2807620+admdly@users.noreply.github.com>

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: admdly <2807620+admdly@users.noreply.github.com>
2026-05-02 03:05:28 +01:00
Yağızhan Burak Yakar b63f592266 Remove guest API system version endpoint (#3467) 2026-05-01 22:33:19 +03:00
32897962ac Migrate Spamchecker to Antispam and validate invoice payments (#3463)
* Migrate Spamchecker to Antispam

* Bump `last_patch` setting to 55

* Validate payment amounts for invoices

* Address review feedback: fix UpdatePatcher merge, PayPalEmail subscr order, Stripe error handling, add tests

Agent-Logs-Url: https://github.com/FOSSBilling/FOSSBilling/sessions/50b1ca53-9198-4a33-b8e7-532fa680843e

Co-authored-by: admdly <2807620+admdly@users.noreply.github.com>

* Refine review feedback fixes: clearer variable names, remove redundant assertion

Agent-Logs-Url: https://github.com/FOSSBilling/FOSSBilling/sessions/50b1ca53-9198-4a33-b8e7-532fa680843e

Co-authored-by: admdly <2807620+admdly@users.noreply.github.com>

* Fix invoice tests and add assertion

* Use AWS checkip in external IP services

* Add 'checkip' and reformat cspell.json wordlist

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: admdly <2807620+admdly@users.noreply.github.com>
2026-04-30 20:33:50 +01:00
Copilotandadmdly 0cd6913d7f Remove invalid loading="lazy" from script tags; improve AdminTest coverage (#3462)
* Initial plan

* fix: remove invalid loading="lazy" from script tags; improve AdminTest coverage and DataProvider usage

Agent-Logs-Url: https://github.com/FOSSBilling/FOSSBilling/sessions/2b9d02ed-eb73-469b-8286-b311d701efb7

Co-authored-by: admdly <2807620+admdly@users.noreply.github.com>

* fix: rename 'subshell' key to 'sub-shell' to fix spellcheck CI failure

Agent-Logs-Url: https://github.com/FOSSBilling/FOSSBilling/sessions/be0ff0c6-9e75-4078-a5fe-a598fc47110d

Co-authored-by: admdly <2807620+admdly@users.noreply.github.com>

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: admdly <2807620+admdly@users.noreply.github.com>
2026-04-30 18:51:21 +01:00
FOSSBilling BotandFOSSBilling Bot 47944d18ea Apply PHP Code Styling & Quality Changes (#3460)
Co-authored-by: FOSSBilling Bot <fossbilling-bot>
2026-04-30 16:44:41 +01:00
b2f4cb8ffa Enhance API rate limiting, validation, and subscription features (#3459)
* Validate redirect paths and targets

* Sanitize guest client data and misc cleanups

* Implement API rate limiting and pruning

* Bump `last_patch` setting to 54

* Add tests for `shouldUseTokenLogin` logic

Add tests to cover logic added in #3451.

* Add order/renewal line config for domain pricing

Resolves #2793.

* Add PayPalEmail adapter subscription test

* Add width/height styling for textarea fields

Resolves #2448.

* Send invoice-created email on approve

Resolves #3012.

* Enforce cumulative cart stock and stockSale

Resolves #3130.

* Centralize subscription period retrieval

Resolves #1035.

* Support wildcard staff permissions (default.all)

Resolves #2376.

* Enable quantity selection and enforce stock max

Resolves #2573.

* Extend order expiry on first paid invoice

Resolves #2864.

* Rate-limit request prefix; invoice & promo fixes

* Update src/modules/Redirect/templates/admin/mod_redirect_settings.html.twig

Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>

* Update src/modules/Api/Service.php

Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>

* Update src/modules/Client/Controller/Client.php

Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>

* Update src/modules/Cron/Service.php

Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>

* Fix quantity not passed to getOrderLineConfig in createOrder

Agent-Logs-Url: https://github.com/FOSSBilling/FOSSBilling/sessions/669f845c-50c4-4f7e-95cd-f44de162ad72

Co-authored-by: admdly <2807620+admdly@users.noreply.github.com>

* Simplify quantity injection into getOrderLineConfig call

Agent-Logs-Url: https://github.com/FOSSBilling/FOSSBilling/sessions/669f845c-50c4-4f7e-95cd-f44de162ad72

Co-authored-by: admdly <2807620+admdly@users.noreply.github.com>

* Fix rate limit prefix isolation, whitelist headers, and staff controller prefix

Agent-Logs-Url: https://github.com/FOSSBilling/FOSSBilling/sessions/11f3fd58-bb44-46a5-a6cf-0992b038f4a7

Co-authored-by: admdly <2807620+admdly@users.noreply.github.com>

* Enforce promo usage limit and add test

---------

Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: admdly <2807620+admdly@users.noreply.github.com>
2026-04-28 22:11:39 +01:00
b836b88dc1 Add Antispam module and UI integration (#3458)
* Add Antispam module and UI integration

* Update src/modules/Antispam/Api/Admin.php

Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>

* Update src/modules/Page/templates/client/mod_page_signup.html.twig

Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>

* Fix Antispam module review issues: remove dead code, fix setConfig, use fb_api_link

Agent-Logs-Url: https://github.com/FOSSBilling/FOSSBilling/sessions/a5cc814b-66d5-4148-857f-2650a90f0206

Co-authored-by: admdly <2807620+admdly@users.noreply.github.com>

* Fix setConfig calls to include ext key in config array

Agent-Logs-Url: https://github.com/FOSSBilling/FOSSBilling/sessions/a5cc814b-66d5-4148-857f-2650a90f0206

Co-authored-by: admdly <2807620+admdly@users.noreply.github.com>

* Fix: add real client update events, normalize unblock_ip, Spamchecker fallback, guest honeypot API

Agent-Logs-Url: https://github.com/FOSSBilling/FOSSBilling/sessions/48af265b-059f-4993-8a0e-5119d7e56c5d

Co-authored-by: admdly <2807620+admdly@users.noreply.github.com>

* Fix: add spamchecker to cspell ignoreWords to fix spellcheck CI failure

Agent-Logs-Url: https://github.com/FOSSBilling/FOSSBilling/sessions/bf460ae3-c897-4670-9623-6a46fb17dbde

Co-authored-by: admdly <2807620+admdly@users.noreply.github.com>

---------

Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: admdly <2807620+admdly@users.noreply.github.com>
2026-04-28 21:10:08 +01:00
Copilotandadmdly 3c8298056d Fix multiple code quality bugs in API controller, Client service, and tests (#3456)
* Initial plan

* Apply code quality fixes across Api/Controller/Client.php, Client/Service.php, and tests

Agent-Logs-Url: https://github.com/FOSSBilling/FOSSBilling/sessions/8f544bdc-a7a5-47aa-b25f-bafe2536dd5c

Co-authored-by: admdly <2807620+admdly@users.noreply.github.com>

* Add nullable type declaration for apiConfig property

Agent-Logs-Url: https://github.com/FOSSBilling/FOSSBilling/sessions/8f544bdc-a7a5-47aa-b25f-bafe2536dd5c

Co-authored-by: admdly <2807620+admdly@users.noreply.github.com>

* Fix test expectations to match corrected SQL placeholders in Client/ServiceTest.php

Agent-Logs-Url: https://github.com/FOSSBilling/FOSSBilling/sessions/1f23a81e-b05f-4684-86df-aa53a165b298

Co-authored-by: admdly <2807620+admdly@users.noreply.github.com>

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: admdly <2807620+admdly@users.noreply.github.com>
2026-04-28 18:47:32 +01:00
wucm667andAdam Daley 3443e3c051 fix(api): require both username and password for token auth detection (#3451)
The getProvidedBasicAuthUsername() method previously only checked for
PHP_AUTH_USER, causing shouldUseTokenLogin() to return true even when
no password was provided. This forced the code path into _tryTokenLogin
which then threw an authentication exception when PHP_AUTH_PW was missing.

This broke the client/profile/api_key_get endpoint, which should allow
session-based auth when no Basic Auth credentials are provided.

Now token auth is only triggered when both PHP_AUTH_USER and PHP_AUTH_PW
are explicitly set, allowing proper fallback to session authentication.

Co-authored-by: Adam Daley <admdly@users.noreply.github.com>
2026-04-28 17:30:23 +01:00
FOSSBilling BotandFOSSBilling Bot ae4ed4410c Apply PHP Code Styling & Quality Changes (#3454)
Co-authored-by: FOSSBilling Bot <fossbilling-bot>
2026-04-28 15:33:40 +01:00
Yağızhan Burak YakarandAdam Daley 710993ed1f Add 5 new email permission keys (#3447)
* Add 5 new email permission keys

* Address code reviews

* Fixed tests

---------

Co-authored-by: Adam Daley <admdly@users.noreply.github.com>
2026-04-28 14:13:17 +01:00
Adam Daley 4cb7198006 Remove ClientPasswordResetTable and inline cleanup (#3453) 2026-04-28 14:39:31 +03:00
Yağızhan Burak Yakar b4b984509d Pass API data to pagination methods (#3449)
* Pass API data to pagination methods

* Fixed phpStan finding

* Added filtering for data parameters

* Simplify the pagination class by extracting pagination options into a class

* Updated imports

* Move SQL validation before the getAll()

* Moved constants to PaginationOptions and put a sane per_page cap

* Removed `Pagination::getDefaultPerPage()`

* Add focused tests
2026-04-28 06:36:04 +01:00
Copilotandadmdly ade0c4d0c1 Fix bugs and typos in installer/pricing templates, improve System admin test coverage (#3444)
* Initial plan

* Fix HTML/JS bugs and typos in installer and pricing templates, improve test coverage

Agent-Logs-Url: https://github.com/FOSSBilling/FOSSBilling/sessions/d16eb3f4-9538-40af-a14b-3f110fe8bed1

Co-authored-by: admdly <2807620+admdly@users.noreply.github.com>

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: admdly <2807620+admdly@users.noreply.github.com>
2026-04-26 21:04:48 +01:00
52081d284a Improved type casting and removed unnecessary parameters (#3431)
* Cast ticket ID to integer

* Added type casting and removed unnecessary $per_page params

* Fixed tests

* Updated ddev PHP and nginx config

* Support ticket validation and upgrade checks

* Add order mock and constants in ServiceTest

* Require active status for API auth and clear tokens

* Validate client/admin sessions against DB

* Invalidate sessions on user status deactivation

* Check locale availability before toggling

* Escape database name properly

* Validate and cast rel_id to int in ticketCreateForClient to prevent TypeError

Agent-Logs-Url: https://github.com/FOSSBilling/FOSSBilling/sessions/ce700346-2168-43cc-8309-fc6baee7cc82

Co-authored-by: admdly <2807620+admdly@users.noreply.github.com>

* Improve rel_id validation error message to include the invalid value

Agent-Logs-Url: https://github.com/FOSSBilling/FOSSBilling/sessions/ce700346-2168-43cc-8309-fc6baee7cc82

Co-authored-by: admdly <2807620+admdly@users.noreply.github.com>

* Fix Notification AdminTest mock expectation to match actual paginateDoctrineQuery call

Agent-Logs-Url: https://github.com/FOSSBilling/FOSSBilling/sessions/2fb587cf-6312-4b98-89e5-10f074646eaa

Co-authored-by: admdly <2807620+admdly@users.noreply.github.com>

* Validate interface and custom interface inputs

* Tighten custom interface hostname validation

* Accept `per_page` in paginated API responses

* Validate HTTP interfaces and normalize upgrades

* Enforce active status and secure config export

* Cast rel_type/rel_task/rel_status to string in SupportTicketValidator to prevent TypeError

Agent-Logs-Url: https://github.com/FOSSBilling/FOSSBilling/sessions/1ecf2bb3-1139-420f-8421-41ae8f6d1d5f

Co-authored-by: admdly <2807620+admdly@users.noreply.github.com>

* Use FILTER_VALIDATE_INT instead of is_numeric for rel_id validation in Service.php

Agent-Logs-Url: https://github.com/FOSSBilling/FOSSBilling/sessions/7bacd505-ba15-42da-8f52-7621afa1d634

Co-authored-by: admdly <2807620+admdly@users.noreply.github.com>

* Validate rel_new_value as a positive integer before using as Product ID in upgrade tickets

Agent-Logs-Url: https://github.com/FOSSBilling/FOSSBilling/sessions/842c7e1c-255b-4f09-8235-f34681e0392b

Co-authored-by: admdly <2807620+admdly@users.noreply.github.com>

* Tighten `sValidHttpInterface` validation

* Add page parameter to pager calls

---------

Co-authored-by: Adam Daley <admdly@users.noreply.github.com>
Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: admdly <2807620+admdly@users.noreply.github.com>
2026-04-26 20:30:22 +01:00
renovate[bot] 420120091a Update dependency postcss to v8.5.12 (#3443)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-04-26 19:49:59 +01:00
LaoDCandAdam Daley b2f7dac1e1 Fix product recurrent pricing enabling (#3417)
* Fix product recurrent pricing enabling

The new api call function was passing both the hidden element and the input checkbox for enabled.
As the hidden element is no longer required, it has been removed.

* Overwrite duplicate params and default pricing

---------

Co-authored-by: Adam Daley <admdly@users.noreply.github.com>
2026-04-26 18:51:12 +01:00
Manuel de AlmeidaandAdam Daley b574e4c7f5 Show password requirements on setup page (#3381)
* Show password requirements on setup page

* Use small tag for password help

---------

Co-authored-by: Adam Daley <admdly@users.noreply.github.com>
2026-04-26 18:29:04 +01:00
renovate[bot] 477975f7d0 Update dependency ckeditor5 to v48.0.1 2026-04-26 01:40:41 +00:00
Yağızhan Burak Yakar 06e4a693c3 Fixed boolean types and improved status checks for orders (#3437)
* Normalize booleans

* Require the order to be active for client domain actions

* Require the order to be active for client hosting actions
2026-04-24 17:28:53 +01:00
Yağızhan Burak Yakar 0a11a7f6a6 Added missing password strength checks while updating passwords (#3436)
Added missing password strength while updating passwords
2026-04-24 17:57:46 +03:00
66c05c0db6 Apply PHP Code Styling & Quality Changes (#3433)
Co-authored-by: FOSSBilling Bot <fossbilling-bot>
Co-authored-by: Adam Daley <admdly@users.noreply.github.com>
2026-04-24 05:52:09 +01:00
Adam DaleyandCopilot Autofix powered by AI 5fceb5a775 Refactor API validation and enhance payment IPN handling with tests (#3432)
* Improve API validation and payment IPN security

* Validate `order_id` param before use

* Fix for PR finding

Co-Authored-By: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com>

* Set admin transaction source; fix params/tests

* Require non-empty order_id for send_file

---------

Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com>
2026-04-22 19:16:22 +01:00
FOSSBilling Bot 0880f6f7e7 Apply PHP Code Styling & Quality Changes (#3430) 2026-04-21 18:20:19 +01:00
Copilotandadmdly 0241b2ccca Add void return typing and normalize Staff service lookup casing; remove unreachable Profile admin test assertions (#3429)
* Initial plan

* fix staff event handler typing and service casing; clean unreachable test assertions

Agent-Logs-Url: https://github.com/FOSSBilling/FOSSBilling/sessions/213a9ffb-09ed-47ec-a512-5fcfe6d2c9c7

Co-authored-by: admdly <2807620+admdly@users.noreply.github.com>

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: admdly <2807620+admdly@users.noreply.github.com>
2026-04-21 09:58:25 +01:00
LaoDC 083906799f Fixed invalidateSessions() (#3427)
As $id is expected to be an int or null, basic typecasting to ensure correct type is being provided.
2026-04-21 09:17:11 +01:00
renovate[bot] 14d356427b Update dependency postcss to v8.5.10 2026-04-20 08:59:03 +00:00