Commit graph jonnybarnes.uk/app/Http/Middleware
Author SHA1 Message Date
faf8e5c1ec
Fix CSRF exemption and array-input crash on revocation/introspection
An Opus code review of the branch caught two real bugs the test suite
structurally couldn't see:

- /revocation and /introspect were never added to bootstrap/app.php's
  CSRF except list, so both were fully broken (403) for any real
  external client, despite every feature test passing — CSRF
  verification is short-circuited entirely while running tests.
  Verified live against the running app before and after the fix, and
  added a regression test that asserts against the actual configured
  exemptions rather than relying on request-time behavior that tests
  can't exercise.

- An array-shaped `token` param (e.g. token[]=a&token[]=b) crashed
  both endpoints with a 500, since this app promotes PHP warnings
  ("Array to string conversion") to exceptions. Fixed at the shared
  root, MicropubToken::findActive(), which also closes the same latent
  hole in VerifyMicropubToken's access_token param that predates this
  branch. Verified live and covered with regression tests.

Also applied the review's lower-severity findings: added the missing
introspection_endpoint Link header and metadata test assertions,
removed the now-dead is_string($scopes) array branch in the Micropub
handlers and media controller (scope is unconditionally a string from
the DB now, this guarded against a JWT-array-claim shape that can no
longer occur), dropped a redundant #[Table] model attribute, sized
token_hash to its actual 64-char length, and removed a one-off inline
style in the admin view.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_014625MfkGZ7GVdbqKme4a8L
2026-08-13 17:03:43 +01:00
24da24a677
Add IndieAuth token introspection endpoint (RFC 7662)
Lets a resource server (or a client checking its own token, via
self-introspection) verify a token's active/me/client_id/scope without
needing to be tightly coupled to this token endpoint. Requires the
caller to present their own currently-active token as authorization,
per spec's requirement that the endpoint MUST require some form of
authorization. Inactive tokens get back only {"active": false}, no
detail on why, matching the privacy stance already used for
revocation.

Pulled the hash-and-lookup-active-token logic (now needed a third
time) into MicropubToken::findActive(), used by this, the revocation
endpoint, and VerifyMicropubToken.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_014625MfkGZ7GVdbqKme4a8L
2026-08-13 16:44:31 +01:00
9c9a6392c8
Add IndieAuth token revocation endpoint (RFC 7009)
Implements the current IndieAuth spec's dedicated /revocation endpoint
so clients can self-revoke a token (e.g. on user sign-out), rather than
only supporting revocation via the admin side. Always responds 200 per
spec, whether the token was found or not, so callers can't use it to
probe token validity. Skips the legacy action=revoke-on-/token fallback
the spec mentions for older clients, since the only real client here is
already being updated to use the current endpoint.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_014625MfkGZ7GVdbqKme4a8L
2026-08-13 16:13:11 +01:00
d5706b5f8f
Replace JWT Micropub tokens with revocable opaque tokens
Tokens now store a hashed row in micropub_tokens instead of being
self-contained signed JWTs, so a leaked or unwanted token can actually
be revoked. Since revocation already requires a DB lookup on every
request, JWT's stateless-verification benefit was gone anyway, so this
also drops the lcobucci/jwt dependency entirely.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_014625MfkGZ7GVdbqKme4a8L
2026-08-13 16:07:07 +01:00
9f012b01e4
Upgrade to Laravel 13 2026-04-07 09:01:19 +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
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
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
442c2061e8
Hopefully fix snow on prod 2023-12-17 14:55:36 +00: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
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
9743ba8eed
Fix some Laravel Pint issues 2023-02-18 09:53:57 +00:00
16b120bc73
Upgrade to Laravel 10 2023-02-18 09:34:57 +00:00
6d6e719f52
Update Laravel Pint, fix files in codebase 2023-02-16 16:57:06 +00:00
465c15f012
Dont run csp locally 2022-08-05 20:58:31 +01:00
e36f15d391
Fix files with Laravel Pint 2022-07-09 10:08:26 +01:00
48d1c9a00b Improve tests 2022-05-14 17:48:53 +01:00
78bd468d3d
Upgrade to Laravel 9 (#252) 2022-02-27 19:42:49 +00:00
b464ba9dd3 Remove un-needed elements from CSP header 2021-10-05 20:58:28 +01:00
ed54446f87 Follow laravel upgrade guide 2020-10-19 19:41:50 +01:00
5cf7a14ad6 Fix quote style 2020-06-25 20:57:32 +01:00
868efc36f6 Minor fixes
Improve how we link to external fonts, change csp generating code, fix
width of pagination links
2020-06-25 20:50:32 +01:00
c20a2f403c Add some colours and new fonts 2020-06-22 20:58:53 +01:00
20a3048aee Some more phpcs fixes 2019-10-27 20:55:46 +00:00
ef03d2209f Fixing various phpcs issues 2019-10-27 19:31:33 +00:00
ec01b3c6a2 Update Laravel to v6 2019-10-19 15:34:49 +01:00
490d9eaf7a Using mapbox from their CDN 2019-05-12 10:31:04 +01:00
546f952466 Add Fathom script to master view 2019-05-03 21:02:22 +01:00
2e79492b01 Protect admin routes with new eloquent sessions
When using Laravel’s own auth middleware an exception would then get
thrown which was being sent to Slack, hmmm.

So I modified the original MyAuthMiddleware to use the Auth facade
instead of a custom session key.

A logout page has also been added.
2019-03-23 09:35:07 +00:00
7a4ba43b4d Fix mapbox on safari (issue #87)
Squashed commit of the following:

commit 6be3d1b2a3dc29c2271035df60204efe859d516f
Author: Jonny Barnes <jonny@jonnybarnes.uk>
Date:   Fri Feb 1 14:44:38 2019 +0000

    Add blob to child-src, fixes mapbox on safari
2019-02-01 14:56:02 +00:00
76d474b335 Get repo up to date with changes in laravel/laravel (issue #95)
Squashed commit of the following:

commit 850a0dfe70412f0851d1f40fe96c7afdc8348aab
Author: Jonny Barnes <jonny@jonnybarnes.uk>
Date:   Sun Jan 27 13:42:09 2019 +0000

    Persist data cache

commit fc80710c96b33bf387e346f97a58ed3965520427
Author: Jonny Barnes <jonny@jonnybarnes.uk>
Date:   Sun Jan 27 13:15:10 2019 +0000

    Added another laravel dependency

commit 1a9ed1bc71e3a11624e4924ae75c4284e6071f6d
Author: Jonny Barnes <jonny@jonnybarnes.uk>
Date:   Sun Jan 27 13:14:50 2019 +0000

    Fix trailing comma

commit 81f31ae7116146b073c8f886cb74e32d806eba60
Author: Jonny Barnes <jonny@jonnybarnes.uk>
Date:   Sat Jan 26 19:07:55 2019 +0000

    Add Laravel’s illustration SVGs

commit d1f99e4ec2b39d0159689f586f37465cbf867c2b
Author: Jonny Barnes <jonny@jonnybarnes.uk>
Date:   Sat Jan 26 19:07:34 2019 +0000

    Add the dump-server

commit 28a09927a32d20510f6bc236d14daf948c5dd547
Author: Jonny Barnes <jonny@jonnybarnes.uk>
Date:   Sat Jan 26 18:58:27 2019 +0000

    Add mailgin endpoint

commit e80e3a9d53852d5f137918d79969f5a3a93fad81
Author: Jonny Barnes <jonny@jonnybarnes.uk>
Date:   Sat Jan 26 18:55:11 2019 +0000

    Update cache config

commit 3db2f952d420be7e49041d495db6ee59ee310841
Author: Jonny Barnes <jonny@jonnybarnes.uk>
Date:   Sat Jan 26 18:50:02 2019 +0000

    Update session config

commit 0b431150616cb15f17b571e9340e6805723344d6
Author: Jonny Barnes <jonny@jonnybarnes.uk>
Date:   Sat Jan 26 18:46:05 2019 +0000

    Add faker locale setting

commit 048e8ee0c7969ed9b2251f270aea8fee25b3bf98
Author: Jonny Barnes <jonny@jonnybarnes.uk>
Date:   Sat Jan 26 18:44:09 2019 +0000

    Add new Stripe webhook config values

commit 18ce7bee19fca7f920fdcca72049108fd5a7a9b6
Author: Jonny Barnes <jonny@jonnybarnes.uk>
Date:   Sat Jan 26 18:42:57 2019 +0000

    Add Authenticate to middleware

commit 05007f1f038cac4453e4b5d82cb04d6f0820606c
Author: Jonny Barnes <jonny@jonnybarnes.uk>
Date:   Sat Jan 26 18:34:28 2019 +0000

    Update phpunit config

commit 5c033735fbe148b3f3e3950ae97a21977895eeb7
Author: Jonny Barnes <jonny@jonnybarnes.uk>
Date:   Sat Jan 26 18:32:18 2019 +0000

    Update queue config

commit fe92a6f2896a52ab1486288878055cd81abe28e7
Author: Jonny Barnes <jonny@jonnybarnes.uk>
Date:   Sat Jan 26 18:27:22 2019 +0000

    Update database config

commit 19036d7cb1ffc583a571451a7ea00fb421beef8f
Author: Jonny Barnes <jonny@jonnybarnes.uk>
Date:   Sat Jan 26 18:22:41 2019 +0000

    Add asset_url config option

commit ce4b1e3195a6c43fdc4f6fabb2a41b68344220fc
Author: Jonny Barnes <jonny@jonnybarnes.uk>
Date:   Sat Jan 26 18:20:40 2019 +0000

    Allow custom compiled views path

commit b503bca8c6a27fef44d34b826c75a2ee68e0a178
Author: Jonny Barnes <jonny@jonnybarnes.uk>
Date:   Sat Jan 26 18:20:18 2019 +0000

    Add mail logging setting

commit 2988ba197bbd1b0ac78a17ad796f31cc0bb803df
Author: Jonny Barnes <jonny@jonnybarnes.uk>
Date:   Sat Jan 26 18:17:41 2019 +0000

    normalize composer.json

commit a1ff37d716c68f1dedec9644e9fe6f3a7a5ad04f
Author: Jonny Barnes <jonny@jonnybarnes.uk>
Date:   Sat Jan 26 18:11:58 2019 +0000

    Allow env for defining app base

commit e662de24e3a2b7f170c6fb0860c6c16f192aa642
Author: Jonny Barnes <jonny@jonnybarnes.uk>
Date:   Sat Jan 26 18:10:17 2019 +0000

    Get kernel/middleware upto date

commit 2f8c9de52bec8a54fa6745a42c9a8974de0a1467
Author: Jonny Barnes <jonny@jonnybarnes.uk>
Date:   Sat Jan 26 18:04:44 2019 +0000

    Update validation lang file

commit 8f6bf24eec602b21d28b0b6bae6e274c175ff643
Author: Jonny Barnes <jonny@jonnybarnes.uk>
Date:   Sat Jan 26 18:02:28 2019 +0000

    Update .gitignore

commit e219cc454f3e77b822fe761c672bf24824c06d0c
Author: Jonny Barnes <jonny@jonnybarnes.uk>
Date:   Sat Jan 26 17:59:32 2019 +0000

    Update logging.php config file

commit 5a13e1b89f9311918f3f9756d9607424f42e72c5
Author: Jonny Barnes <jonny@jonnybarnes.uk>
Date:   Sat Jan 26 17:56:36 2019 +0000

    Remove extra whitespace

commit 68edee0a9dca0d11d18964329d7f0ec49d32c6e8
Author: Jonny Barnes <jonny@jonnybarnes.uk>
Date:   Sat Jan 26 17:53:30 2019 +0000

    Recompile assets from new resources folder structure

commit 7ec8441a802cb1385fb40cdd22b2398180287512
Author: Jonny Barnes <jonny@jonnybarnes.uk>
Date:   Sat Jan 26 17:44:56 2019 +0000

    Change reference to assets files in various scripts

commit c2f6dfccf2843b25038475d2a5f492decc9e8124
Author: Jonny Barnes <jonny@jonnybarnes.uk>
Date:   Sat Jan 26 17:42:25 2019 +0000

    Flatten assets directory
2019-01-27 13:51:21 +00:00
7eacb52723 Update dependencies and improve CSP headers 2018-04-14 18:46:40 +01:00
ce27e82b55 phpcs fixes 2018-03-17 13:57:03 +00:00
104bcfb7f5 StyleCI fix 2018-03-17 13:55:30 +00:00
57b6a4ac29 More readable formatting, include dev S3 bucket 2018-03-09 22:58:51 +00:00
8cbbc821bf Shorten some lines to less than 120 chars 2018-03-02 17:47:20 +00:00
f5b69244df Only use double-quotes when necessary 2018-03-02 17:21:36 +00:00
f35e2b4f15 Add the CSP headers
Squashed commit of the following:

commit 468945826621d2e586f7e5fa773623c4accc316a
Author: Jonny Barnes <jonny@jonnybarnes.uk>
Date:   Fri Mar 2 16:42:30 2018 +0000

    Update changelog

commit 36c6edce091c41861879a982e6ad250b395abbcf
Author: Jonny Barnes <jonny@jonnybarnes.uk>
Date:   Fri Mar 2 16:42:23 2018 +0000

    Add a test

commit ef9d7b564f8ea4f4528c42f411c14ddfaa132082
Author: Jonny Barnes <jonny@jonnybarnes.uk>
Date:   Fri Mar 2 16:42:13 2018 +0000

    Apply the CSPHeader middleware to all `web` requests

commit 737bfca3a6b446d52c0d0a8cc1b7b1c422876c0b
Author: Jonny Barnes <jonny@jonnybarnes.uk>
Date:   Fri Mar 2 16:41:45 2018 +0000

    Add a CSP header to a response, as well as the Report-To header
2018-03-02 16:46:45 +00:00
c52f0e17d7 Add CORS headers to the media endpoint
Squashed commit of the following:

commit 0a620148dfad998f7b00804cae1db8208b23cc02
Author: Jonny Barnes <jonny@jonnybarnes.uk>
Date:   Fri Mar 2 15:08:36 2018 +0000

    Add tests for the Cors Headers

commit dd8518d279cdf3857597fa7ee6150bf383203fe1
Author: Jonny Barnes <jonny@jonnybarnes.uk>
Date:   Fri Mar 2 15:08:20 2018 +0000

    Only add Cors Headers to requests to the media endpoint

commit 6c79ca5632581345ef406f211b1576a4b7f400fe
Author: Jonny Barnes <jonny@jonnybarnes.uk>
Date:   Fri Mar 2 15:07:53 2018 +0000

    Add CorsHeaders to middleware array

commit e12d48ca1e837b14b75bbd87d6197d59d60cf32e
Author: Jonny Barnes <jonny@jonnybarnes.uk>
Date:   Fri Mar 2 15:06:32 2018 +0000

    We need to send something to the OPTIONS request to the media endpoint

commit f11c638be464373bff09bf015d4a989e48e61f0c
Author: Jonny Barnes <jonny@jonnybarnes.uk>
Date:   Fri Mar 2 15:05:45 2018 +0000

    Change routes to allow for responses to an OPTIONS request to the media endpoint
2018-03-02 15:49:07 +00:00
c7670afaf8 Update to Laravel 5.6 2018-02-15 12:26:59 +00:00
e4fe2ecde3 Struct Types
Squashed commit of the following:

commit 74ed84617fcbecf661695763323e50d049a88db7
Author: Jonny Barnes <jonny@jonnybarnes.uk>
Date:   Mon Jan 15 12:46:29 2018 +0000

    Test passes so remove the dump statement

commit a7d3323be02da64f76e8ec88713e3de84a13ded7
Author: Jonny Barnes <jonny@jonnybarnes.uk>
Date:   Mon Jan 15 12:40:35 2018 +0000

    Values with spaces need to be quoted

commit 58a120bb238f14346793c388b948b7351d3b51fd
Author: Jonny Barnes <jonny@jonnybarnes.uk>
Date:   Mon Jan 15 12:37:23 2018 +0000

    We need a diplay name for the tests to work now we are using strict type checking

commit b46f177053bd697db9a4835d073f2f37e088b26f
Author: Jonny Barnes <jonny@jonnybarnes.uk>
Date:   Mon Jan 15 12:31:29 2018 +0000

    Get travis to show more info about failing test

commit 60323f3ce5a0561329a1721ee94821571cdcc86a
Author: Jonny Barnes <jonny@jonnybarnes.uk>
Date:   Mon Jan 15 12:23:27 2018 +0000

    Remove un-used namnepsace imports

commit 096d3505920bc94ff8677c77430eca0aae0be58a
Author: Jonny Barnes <jonny@jonnybarnes.uk>
Date:   Mon Jan 15 12:21:55 2018 +0000

    we need php7.2 for object type-hint

commit bb818bc19c73d02d510af9f002199f5718a54608
Author: Jonny Barnes <jonny@jonnybarnes.uk>
Date:   Mon Jan 15 12:15:48 2018 +0000

    Added lots of strict_types
2018-01-15 14:02:13 +00:00
8772db973b Squashed commit of the following:
commit fcebc08f6d89437ba84288a25498ae094fd4f16d
Author: Jonny Barnes <jonny@jonnybarnes.uk>
Date:   Wed Jan 10 21:59:33 2018 +0000

    update changelog

commit 74491698857cb2e111006efb349e1f10c2e3cf1d
Author: Jonny Barnes <jonny@jonnybarnes.uk>
Date:   Wed Jan 10 21:58:25 2018 +0000

    Modify the micropub controller to look for the token in the right palce (as set by the token middleware

commit 0fd11ff8391062fbe70f3a28d6a98694dc25b36b
Author: Jonny Barnes <jonny@jonnybarnes.uk>
Date:   Wed Jan 10 21:57:40 2018 +0000

    If the access token is sent as a bearer token in the http headers, merge it into the request data so the controllers only have one place to look

commit 9e154ec4bc17be3071280409a3f6bb7f02dad816
Author: Jonny Barnes <jonny@jonnybarnes.uk>
Date:   Wed Jan 10 21:56:33 2018 +0000

    Add a test with the access token being form encoded
2018-01-10 22:00:03 +00:00