Commit graph jonnybarnes.uk/app/Http
Author SHA1 Message Date
1137d2a07e
Move request parsing into DTOs via fromRequest(), expand update handler
Each DTO now owns its own parsing logic via fromRequest(), removing
the normalization layer from MicropubRequest entirely. UpdateHandler
gains delete support and allows replace/add/delete to compose in a
single request rather than being mutually exclusive.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-03-13 20:39:50 +00:00
ad15b36f4d
Introduce typed DTOs and sub-namespaces for Micropub handlers
Each handler now declares the data class it needs via dataClass(). The
controller builds the appropriate typed DTO from the raw request array
before calling handle(), giving handlers typed property access instead
of raw array lookups.

Handlers moved to App\Services\Micropub\Handlers, data objects to
App\Services\Micropub\Data. MicropubHandlerRegistry and the interface
are documented with flow diagrams and guidance for adding new types.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-02-22 10:41:33 +00:00
24cb6d61aa
Implement micropub update support with clean exception-based error handling
- Add MicropubUnsupportedModelException for non-note update attempts
- Refactor UpdateHandler to throw exceptions instead of returning JsonResponse objects; extract applySyndication() to DRY up duplicated syndication URL mapping
- Fix MicropubController: InvalidTokenScopeException now returns 401 + insufficient_scope; add catches for ModelNotFoundException (404) and MicropubUnsupportedModelException (500); updates return 200 not 201
- Slim MicropubRequest.normalizeMicropubJson() to branch on action type, keeping update and create fields cleanly separated
- Update tests to match corrected status codes and error keys; remove markTestSkipped() from all update tests

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-02-22 10:15:35 +00:00
76db869af5
Allow files to be added to notes
This is specifically when a Micropub client is using the JSON syntax and
initially uploads the photo via the media endpoint
2025-12-27 17:58:43 +00:00
d3d6913474
Switch local setup to PHP8.5
Also pull in config changes from upstream laravel/laravel
2025-12-13 15:53:00 +00:00
363254d13c
Some fixes related to developing my Micropub client 2025-08-17 11:05:38 +01:00
83d10e1a70
Refactor of micropub request handling
Trying to organise the code better. It now temporarily doesn’t support
update requests. Thought the spec defines them as SHOULD features and
not MUST features. So safe for now :)
2025-04-27 16:38:25 +01:00
23c275945a
Refactor micropub token verification 2025-04-12 11:47:30 +01:00
cd5c97afd3
Remove psalm annotations 2025-04-10 20:09:36 +01:00
cf978cd749
Fix PasskeysController with new webauthn library version
Some checks failed
PHP Unit / PHPUnit test suite (pull_request) Has been cancelled
Laravel Pint / Laravel Pint (pull_request) Has been cancelled
2025-04-07 19:44:13 +01:00
7a58287b34
Remove references to short domain 2025-04-06 17:22:36 +01:00
1dfa17abca
Update Laravel to v12
Some checks failed
PHP Unit / PHPUnit test suite (pull_request) Has been cancelled
Laravel Pint / Laravel Pint (pull_request) Has been cancelled
2025-04-01 21:10:30 +01:00
d7da42b626
Host images locally
Some checks failed
PHP Unit / PHPUnit test suite (pull_request) Has been cancelled
Laravel Pint / Laravel Pint (pull_request) Has been cancelled
We don’t need the complexity of S3. Sepcifically the complexity of
managing my own AWS account, flysystem made the Laravel side easy.

A command is added to copy the the S3 files over to local storage.
2024-10-25 20:40:52 +01:00
d77f2302ba
Store requested scopes as a string during IndieAuth flow
Some checks failed
PHP Unit / PHPUnit test suite (pull_request) Has been cancelled
Laravel Pint / Laravel Pint (pull_request) Has been cancelled
2024-08-03 11:33:09 +01:00
bcf61bb6a0
Fis Laravel Pint issues 2024-07-13 14:58:11 +01:00
baee7ade4f
Improve scope checking
Whether the scopes are defined as a space separated string, or an array,
we should now be checking them without any errors.
2024-07-13 14:52:57 +01:00
3cf11b0d72
Store scope data correctly
I was using the key `scopes` instead of `scope`
2024-06-30 11:13:27 +01:00
1521130f55
Parse scope value from authorization URL correctly 2024-06-22 20:48:03 +01:00
5d8929ac29
Save full url during login
This means the query params should be kept when redirecting back to
`/auth?...` during the IndieAuth flow.
2024-06-22 20:28:18 +01:00
58b31bb4c1
Add Indieweb related link to the HTTP headers 2024-06-08 19:39:09 +01:00
7f70f75d05
IndieAuth endpoint can now return access tokens 2024-06-08 10:56:15 +01:00
5b2bfd5270
Auth endpoint
The IndieAuth endpoint should be added, currently adding the unt tests
2024-06-02 10:16:16 +01:00
db8f885092
Remove CSP header 2024-03-23 14:37:30 +00:00
cf62d756af
Update CSP
Mastodon webmention images are served via my instance, so add to the CSP
2024-03-22 19:05:45 +00:00
7660b1c731
Upgrade to Laravel 11 2024-03-19 20:13:36 +00:00
1874bc6f94
Laravel Pint fix 2024-02-17 17:59:18 +00:00
5fa788b362
Update intervention/image package
Also fix a unit test, the image package had changed how it loads images
so my test for is a file upload an image was failing
2024-02-17 17:47:12 +00:00
f51c37103c
Update articles JSON feed to version 1.1 2023-12-20 14:46:27 +00:00
2aa60db548
Update JSON notes feed to version 1.1 2023-12-20 14:44:11 +00:00
ba9330cdf1
Expose RSS feed
Though actually its the json feed 🤫
2023-12-19 17:12:49 +00:00
442c2061e8
Hopefully fix snow on prod 2023-12-17 14:55:36 +00:00
6d5b298837
Update Intervention/Image class to v3 2023-12-17 13:56:10 +00:00
3c0c375fbb
Update composer dependencies 2023-12-06 20:11:41 +00:00
81e19fec1d
Run Laravel Pint on codebase 2023-11-25 16:12:52 +00:00
92098a793e
feat: Add webmention counts and icons for replies, likes, and reposts.
- Add new SVG icons for the "reply", "like", and "repost" actions
- Update webmention info display in note template to include counts and icons for replies, likes, and reposts
- Add webmention counts to FrontPageController.php and modify queries in NotesController.php
- Modify WebMentionsTableSeeder.php to change URLs, commentable ID, and add new WebMentions
2023-11-25 16:08:07 +00:00
483b3016ba
refactor: Refactor PasskeysController and Passkey model
- Remove unused `use` statements and imports in `PasskeysController.php` and `Passkey.php`
- Improve code cleanliness and remove unnecessary dependencies
2023-10-27 20:33:43 +01:00
03c8f20a8c
feat: Add Passkey support
- Added a button for logging in with Passkeys in `login.blade.php`
- Refactored the `register` method and added the `login` method in `auth.js`
- Made various modifications and additions to the passkey functionality in `PasskeysController.php`
- Added event listener for login-passkey element in `app.js`
- Modified the passkeys table schema and made modifications to `Passkey.php`
- Changed the redirect route in the `login` method of `AuthController.php`
- Made modifications and additions to the routes in `web.php`
- Added `"web-auth/webauthn-lib": "^4.7"` to the list of required packages in `composer.json`
- Changed the redirect URL in `AdminTest.php`
2023-10-27 20:22:40 +01:00
2fb8339d91
Admin can now hopefully add a passkey to their account 2023-09-25 18:31:38 +01:00
630ec46186
chore: Update and clean up file imports and annotations
- Update various factory files in the `database/factories` directory
- Remove unused imports and annotations in factory files
- Add or update comments and PHPDoc blocks for better understanding and readability
- Remove unused imports in controller and command files
- Remove commented out code in middleware file
2023-07-28 12:05:11 +01:00
39a197ae7b
refactor: Refactor file headers and add Psalm suppressions
- Added Psalm suppression annotations to multiple controller classes
- Added PHPDoc comment blocks to seeders and factories
- Added comments to indicate unused classes and methods
- Removed unused annotations and imports
2023-07-28 11:48:07 +01:00
a2f2dae140
Run Laravel Pint 2023-06-25 14:22:56 +01:00
3a681c0a44
Initial work with Psalm reporting 2023-06-25 14:18:40 +01:00
051f6a4b03
Update Laravel Pint 2023-06-21 18:46:31 +01:00
462c710295
fix: Use correct config variables post L10-config update
Specifically the header name had disappeared.
2023-06-11 16:54:56 +01:00
bebbfec510
chore: Refactor configuration files based on Laravel 10 skeleton 2023-06-09 18:31:53 +01:00
e62f68f514
style: Improve security by updating CSP headers
- Update `CSPHeader.php` to improve security by removing unsafe-inline.
2023-05-29 12:46:17 +01:00
eb82ff4ca5
fix: Add unsafe-inline to style-src CSP header
- Improve content-security policy for better website security
- Add `'unsafe-inline'` to the `style-src` header in `CSPHeader.php`
2023-05-27 18:19:42 +01:00
f2ad3a6626
Fix code style with Laravel Pint 2023-05-12 15:35:41 +01:00
86ac67698e
Remove activity stream functionality from controllers and providers.
- Remove activity stream related code and files
- Update configuration for HtmlSanitizer and RetryGuzzle
- Add `paginate` macro for `Collection`
- Remove unused code for `Codebird`
- Simplify `FrontPageController` and `NotesController` methods
2023-05-12 15:30:05 +01:00
7ee5bb00ba
Update Laravel Pint 2023-04-20 17:34:06 +01:00