Commit Graph

409 Commits (e4120ce106ca1b2d80ae3d27bb96cd2f889e4e55)

Author SHA1 Message Date
Daniel Supernault 584ce27f71
Add Sanctum support 3 weeks ago
Your Name b4e9a20af0 Merge remote-tracking branch 'origin/fix/phpstan-auth-request-scope-3' into tests/critical-path-smoke-tests
# Conflicts:
#	app/Http/Controllers/AccountController.php
4 weeks ago
Your Name 8a2649b3ff feat: add critical path test suite and fix auth/config issues
Test Infrastructure:
- Modernize phpunit.xml (bootstrap, source block, Laravel 12 env vars)
- Configure tests/Pest.php with pest()->extend(TestCase::class)->in('Feature')
- Add docker-compose.test.yml (Redis for test suite)
- Add composer test/test:quick scripts
- Rename CACHE_DRIVER to CACHE_STORE across config (backwards compatible)
- Update .env.testing for in-memory SQLite + Docker Redis

Test Coverage (190 tests):
- CriticalRoutes: public routes, auth routes, API endpoints, middleware, schedule
- Auth/LoginTest: login, logout, rate limiting, redirect behavior
- Auth/RegisterTest: registration flow, validation, disabled registration
- Auth/PasswordResetTest: reset request, token validation, password update
- Auth/TwoFactorTest: 2FA checkpoint, setup behind password confirmation
- Auth/PasswordConfirmationTest: sudo mode flow via Laravel password.confirm
- Api/ScopeTest: scope enforcement, public endpoints, admin access

Bugs Fixed:
- Fix unauthenticated API returning 500 instead of 401 (AuthenticationException
  not handled in custom exception renderer in bootstrap/app.php)
- Replace custom DangerZone middleware with Laravel password.confirm
- Add HasFactory trait to Profile model for test factories

Bugs Documented (known-bugs group):
- Registration crashes with str_ends_with TypeError (RegisterController:82)
- OAuth routes use legacy array syntax causing ReflectionFunction TypeError
4 weeks ago
Your Name 76d187edd8 fix: convert OAuth routes from legacy array syntax to modern fluent syntax
The old 'uses' => [Controller::class, 'method'] array format causes a
ReflectionFunction TypeError in Laravel 12 when Livewire's
SupportPageComponents tries to resolve route bindings. The framework's
RouteSignatureParameters::fromAction() expects a Closure or string,
not an array.

Convert all OAuth/Passport routes to the modern fluent syntax:
Route::post('/path', [Controller::class, 'method'])->name('name')
4 weeks ago
Your Name 8e41f6fdf8 refactor: migrate to modern bootstrap/app.php architecture
Consolidate the legacy Laravel 5-era kernel/handler architecture into
the modern Application::configure() pattern introduced in Laravel 11:

- HTTP middleware stack → bootstrap/app.php withMiddleware()
- Console schedule → bootstrap/app.php withSchedule()
- Exception handling → bootstrap/app.php withExceptions()
- Route registration → bootstrap/app.php withRouting()
- Service providers → bootstrap/providers.php

Deleted files:
- app/Http/Kernel.php
- app/Console/Kernel.php
- app/Exceptions/Handler.php
- app/Providers/RouteServiceProvider.php
- app/Providers/BroadcastServiceProvider.php

Removed framework providers from config/app.php (auto-registered by
Application::configure). Package providers use auto-discovery.

All 107 tests pass. Schedule, routes, and middleware verified working.
4 weeks ago
Your Name 28927f6f66 refactor: convert string-based routes to ::class array syntax
Replace all 'Controller@method' string references with
[Controller::class, 'method'] array syntax across all route files.
Remove the $namespace property and ->namespace() calls from
RouteServiceProvider.

This is required for Laravel 13 compatibility where string-based
controller routing and automatic namespace prefixing will be removed.

742 route references converted across 5 route files.
4 weeks ago
Your Name 53759e3ad6 Prevent deletion of personal access OAuth client
Fixes #6630 (partial — deletion causing broken PAT)

If a user deletes the OAuth client that serves as the personal access
client, all PAT creation breaks for the entire instance with a 500 error.

Changes:
- Add custom OAuthClientController@destroy that checks if the client
  has the personal_access grant type before allowing deletion
- Returns 403 with a clear error message if deletion is blocked
- Add confirmation dialog before client deletion in the frontend
- Add error handling to show server error messages to the user

This prevents accidental destruction of the PAT infrastructure.
4 weeks ago
dansup 7354f63563
Merge branch 'staging' into remove-exp-rec 1 month ago
dansup 24697b77fc
Merge pull request #6579 from shleeable/remove-exp-loops
Remove deprecated legacy loops feature entirely
1 month ago
Daniel Supernault 0f781cba34
Update Personal Access Tokens 3 months ago
Daniel Supernault e557d37b9e
Fix PAT 3 months ago
Daniel Supernault 13e490262d
Update web.php 3 months ago
Daniel Supernault 25d5142f12
Fix PAT + oauth routes 3 months ago
Your Name 715c671712 Remove deprecated Loops feature entirely
- Remove 'loops' from config/exp.php and instance.discover.loops from config/instance.php
- Remove loops API routes (loopsApi, loopWatch) from web-api.php
- Delete LoopComponent.vue, loops.js entry point, and loops blade view
- Remove EXP_LOOPS diagnostic row from admin diagnostics page

The Loops feature was deprecated and hardcoded to disabled.
5 months ago
Your Name 10a5eb7228 Remove exp.rec recommendations dead code
- Remove userRecommendations controller method and /api/local/exp/rec route
- Remove suggestions UI panel, data properties, and methods from Timeline.vue
- Remove commented-out suggestions card from feed template

The recommendations feature was deprecated and hardcoded to false/empty.
5 months ago
Daniel Supernault ef803ae9b6
Fix oauth/token 6 months ago
Daniel Supernault 80a2f4f2b0
Add api/v1/accounts/lookup endpoint 8 months ago
Ross Bearman db03733415 Add admin invite interface and email support
This commit does two things:

* Add invite email support to AdminInviteCommand
  - Moves `invite_code` generation to AdminInvite model `creating` event
* Add admin invite management section under admin users dashboard
  - Adds `Admin/AdminUserInviteController` and associated `home` and
    `create` Blade templates.
  - Adds "Invites" button to admin user dashboard
1 year ago
Daniel Supernault 6b1e21aae4
Update API routes 1 year ago
Daniel Supernault 86af73455f
Update DirectMessageController, add mutuals endpoint 1 year ago
Daniel Supernault 5a3a1cf76c
Update remove_from_followers api endpoint 1 year ago
daniel 92482c24cd
Merge pull request #5895 from eufelipemateus/feat-remove-follow
[Improvement] Add button remove follow
1 year ago
Gavin Mogan 441c8e0d4c Generic OIDC Support
* Everything should be configurable by env variables
* Basic request tests
1 year ago
Felipe Mateus fed800acfb
Merge branch 'dev-contrib-origin' into feat-remove-follow 1 year ago
Daniel Supernault dfd628ed90
Update api routes, add custom filter endpoints 1 year ago
Daniel Supernault adc4cffc38
Add custom filter components 1 year ago
Daniel Supernault 437d742ac4
Add custom filters
Add custom filters, compatible with Mastodon `/api/v2/filters`

Todo:
- [ ] fix routes
- [ ] finish other context filtering
1 year ago
daniel e5c577054b
Add Pinned Posts + WebUI profile fixes (#5914)
* translate notifications

* translate  profile

* fix translate privacy

* add missing keys

* pinned posts

* fix key  settings

* fix key

Co-Authored-By: daniel <danielsupernault@gmail.com>

* Update AccountImport, improve webp support

* Update GroupSettings, add missing avatar/header deletion

* Update i18n

* Update compiled assets

* Update 2025_03_19_022553_add_pinned_columns_statuses_table.php

* Fix pinned posts implementation

* Update docker readme, closes #5909

* Update post pinning, and dispatch Notification cache warming to a job, and fix reblogged state on some endpoints

* Refactor following check

* Fix ProfileFeed bookmark, likes and shares. Closes #5879

* Update PublicApiController, use pixelfed entities for /api/pixelfed/v1/accounts/id/statuses with bookmarked state

* Update changelog

* Update compiled assets

* Update i18n

---------

Co-authored-by: Felipe Mateus <eu@felipemateus.com>
1 year ago
Daniel Supernault 0f1819125c
Update post pinning, and dispatch Notification cache warming to a job, and fix reblogged state on some endpoints 1 year ago
Felipe Mateus 456f96d574
add remove follow 2 years ago
Felipe Mateus cce4c41d97
pinned posts 2 years ago
daniel d066a5cff5
Add app register email verify resends (#5814)
* Update iar.blade.php - Fix in-app reg without hcaptcha (#5807)

* Staging (#5674)

* Update .env.docker

Registry has changed. Old registry has been discontinued in August 2024. New Registry added, format of Docker tag has been adjusted as it now contains the Debian Release as well.

Sample Version is set to current stable but can be adjusted to any of the available branches.

* Update .env.docker

Stick major.minor according to https://jippi.github.io/docker-pixelfed/customize/tags/#pixelfed-version

Disable Debian Release Check until it's solved in dottie.

Closes https://github.com/pixelfed/pixelfed/issues/5264

* New translations web.php (Finnish)
[ci skip]

* New translations web.php (Finnish)
[ci skip]

* fix: don't restore memory limit after cities import

Since this command can only be invoked by CLI, the process will exit after a successful import, so restoring the transient PHP memory limit doesn't really have any affect.

In PHP 8.4, this throws the following error (which doesn't happen in 8.3 and below)

> [entrypoint / 11-first-time-setup.sh] - (stderr) 128769/128769 [▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓] 100%[2025-01-20 11:29:23] production.ERROR: Failed to set memory limit to 134217728 bytes (Current memory usage is 134746112 bytes) {"exception":"[object] (ErrorException(code: 0): Failed to set memory limit to 134217728 bytes (Current memory usage is 134746112 bytes) at /var/www/app/Console/Commands/ImportCities.php:140)

It seems to be a 8.4 behavior change, so removing the logic would make it go away

* New translations web.php (Finnish)
[ci skip]

* New translations web.php (Finnish)
[ci skip]

* New translations web.php (Portuguese)
[ci skip]

* New translations web.php (Portuguese)
[ci skip]

* fix(compose-modal): avoid WebGL if it's not needed

* fix(compose-modal): update webgl-media-editor

* New translations web.php (Hungarian)
[ci skip]

* New translations web.php (Russian)
[ci skip]

* New translations web.php (Russian)
[ci skip]

* Update .env.example

Adding the parameter INSTANCE_DISCOVER_PUBLIC="true" to prevent a HTTP 403 error at the explorer tab in the instance preview.

* New variable for lang spanish

* Variable for lang spanish

* Update Dockerfile, fixes #5535 #5559

* Fix #5582

* Fix #5632

* Update status twitter:card to summary_large_image for images/albums

* Update changelog

---------

Co-authored-by: Lioh Moeller <lioh.moeller@gmx.net>
Co-authored-by: Christian Winther <jippignu@gmail.com>
Co-authored-by: Taye Adeyemi <dev@taye.me>
Co-authored-by: stemy2 <stemy2@users.noreply.github.com>
Co-authored-by: Uthanien <feldarec@gmail.com>

* Update iar.blade.php

---------

Co-authored-by: daniel <danielsupernault@gmail.com>
Co-authored-by: Lioh Moeller <lioh.moeller@gmx.net>
Co-authored-by: Christian Winther <jippignu@gmail.com>
Co-authored-by: Taye Adeyemi <dev@taye.me>
Co-authored-by: stemy2 <stemy2@users.noreply.github.com>
Co-authored-by: Uthanien <feldarec@gmail.com>

* Add app register email verify resends

* Update composer

* Update changelog

* Update IG import command

---------

Co-authored-by: Shlee <github@shl.ee>
Co-authored-by: Lioh Moeller <lioh.moeller@gmx.net>
Co-authored-by: Christian Winther <jippignu@gmail.com>
Co-authored-by: Taye Adeyemi <dev@taye.me>
Co-authored-by: stemy2 <stemy2@users.noreply.github.com>
Co-authored-by: Uthanien <feldarec@gmail.com>
2 years ago
Daniel Supernault eac222d243
Move fallback media route 2 years ago
Daniel Supernault ee01e073ef
Update AppRegisterController 2 years ago
Daniel Supernault 4e6e6b4ab7
Update routes 2 years ago
Daniel Supernault 455711332b
Fix redirects 2 years ago
Daniel Supernault 3c249616ef
Add rate limits, fix typo and styling 2 years ago
Daniel Supernault 604746bd5e
Add AppRegister 2 years ago
Daniel Supernault 8afbdb03a8
Fix oauth oob (urn:ietf:wg:oauth:2.0:oob) support. Fixes #2522 2 years ago
Daniel Supernault 838cec458b
Update admin routes 2 years ago
Daniel Supernault 956b14cf69
Update web-admin routes 2 years ago
Daniel Supernault afc6db143a
Update web routes 2 years ago
Daniel Supernault 3004c438f1
Update Admin routes 2 years ago
Daniel Supernault 886d6ec789
Update API routes 2 years ago
Daniel Supernault 669f8b280b
Update api routes 2 years ago
Daniel Supernault 4ca7c6c328
Add preliminary Authorize Interaction support 2 years ago
daniel 1dbcdee289
Merge branch 'staging' into feat/implement-admin-domain-blocks-api 2 years ago
Daniel Supernault b03f5cec8b
Update ApiV1Dot1Controller, add new single media status create endpoint 2 years ago
daniel c13826e44b
Merge pull request #5215 from pixelfed/groups
Add Groups
2 years ago
Daniel Supernault 8f7becc58b
Add push notification api endpoints 2 years ago