raucao
583bd882db
Store per-device user agent for remoteStorage authorizations
...
- Add user_agent to remote_storage_authorizations and rs_authorization_codes
- Capture the browser's user agent at consent, carry it on the authorization
code, and store it on the authorization when the code is exchanged
- Store it directly for the implicit flow too
With the reuse shortcut gone, each authorization is already a distinct
per-device token; this adds the metadata needed to label and display them.
Part of #254
2026-11-03 08:07:43 +04:00
raucao
a373e577dc
Shorten the authorization code lifetime to 60 seconds
...
CI / Test (pull_request) Failing after 48s
The code is redeemed by the client immediately in the OAuth callback, so
a 60-second window is plenty (and matches common practice; RFC 6749 caps
authorization codes at 10 minutes).
Part of #254
2026-11-03 08:07:34 +04:00
raucao
8fc7ffdd1d
Add PKCE support to remoteStorage OAuth
...
CI / Test (pull_request) Successful in 41s
Implements the optional OAuth 2.0 Authorization Code grant with PKCE
(RFC 7636) for remoteStorage, as described in the remoteStorage spec
(section 10.1).
- Advertise the authorization and token endpoints plus the supported
code_challenge method (S256) in WebFinger, and bump the advertised
spec version to draft-dejong-remotestorage-27
- Add RsAuthorizationCode: a short-lived (5 min), single-use authorization
code stored only as a SHA256 digest
- Add RsOauthManager services for issuing and exchanging codes, including
S256 verification
- Add a cross-origin POST /rs/oauth/token endpoint that exchanges a code
(and code_verifier) for an access token, with CORS and no CSRF token
- Consent dialog now carries response_type / code_challenge through the
form and redirects with the code in the query string for the code flow
- Remove the existing-token reuse shortcut so every authorization results
in a distinct authorization (and token)
Part of #254
2026-11-02 16:40:25 +04:00
raucao
bc37df52a0
Allow remote access to dev services
CI / Test (pull_request) Successful in 46s
Release Drafter / Update release notes draft (pull_request) Successful in 19s
2026-10-06 19:34:24 +02:00
raucao
8fae099c12
Gate remoteStorage by serviceEnabled instead of Flipper
...
CI / Test (pull_request) Successful in 2m4s
Release Drafter / Update release notes draft (pull_request) Successful in 2s
The admin "Default services" setting writes the LDAP serviceEnabled
attribute, but remoteStorage access was also gated behind an unused
per-user Flipper flag that nothing ever enabled, so remoteStorage was
inaccessible for everyone.
Gate remoteStorage on service_enabled? like the other services, and make
the admin toggle reflect the LDAP attribute (this also fixes it reading
current_user instead of the user being viewed). E-Mail keeps its Flipper
gate for now.
2026-10-06 15:10:00 +02:00
raucao
1957df3bbd
Fix avatars failing to be set on XMPP accounts
...
CI / Test (pull_request) Successful in 32s
Release Drafter / Update release notes draft (pull_request) Successful in 3s
There's a stray `end` that prematurely closes the class
2026-08-10 21:35:28 -06:00
raucao
7a63c87b03
Fix deprecation warning
2026-08-10 17:02:20 -06:00
raucao
c79c421b89
Fix Devise Turbo Stream responses for flash messages
...
CI / Test (pull_request) Successful in 33s
Release Drafter / Update release notes draft (pull_request) Successful in 2s
Wire Users::DeviseController as Devise parent controller with the
Turbo-aware responder, so failed form submissions (login, password
reset) render correctly as HTML with 422 status instead of
unprocessable turbo-stream content that Turbo silently drops.
Also fixes a NameError in the responder (rendering_options ->
error_rendering_options) and removes the dead TurboController.
2026-08-10 16:37:01 -06:00
raucao
8a8d407bcc
Add missing whitespace between Devise (sign-in) errors and forms
CI / Test (pull_request) Successful in 32s
2026-08-10 15:17:43 -06:00
raucao
89184cd851
Redirect to root after password reset
CI / Test (pull_request) Successful in 32s
Release Drafter / Update release notes draft (pull_request) Successful in 2s
2026-08-10 11:22:03 -06:00
raucao
29a9dee1cb
Consume user_return_to on sign-in
2026-08-10 11:21:59 -06:00
raucao
a62d84e20a
Validate rs/oauth redirect_uri before storing return URL
2026-08-10 11:21:33 -06:00
raucao
d58c995230
Admin users page: filter by username
...
CI / Test (pull_request) Successful in 33s
Release Drafter / Update release notes draft (pull_request) Successful in 2s
Allow admins to filter the user list/index by username (partial matches
allowed)
2026-08-10 10:36:05 -06:00
raucao
9f25b23e2e
Show ToS and Privacy Policy links when logged out
CI / Test (pull_request) Successful in 41s
Release Drafter / Update release notes draft (pull_request) Successful in 2s
2026-08-09 14:10:25 -06:00
raucao
6a32dd5ee9
Show log-in link in header when logged out
...
Except on the login page itself
2026-08-09 14:10:00 -06:00
raucao
b44b689caf
Additional styles for rich text
...
CI / Test (pull_request) Failing after 40s
Especially for editable content
2026-08-09 11:42:41 -06:00
raucao
3bd07472b2
Fix pages views when signed out
continuous-integration/drone/push Build is passing
continuous-integration/drone Build is passing
2025-06-12 16:09:42 +04:00
raucao
32b1c2748a
Fix wrong variable
continuous-integration/drone/push Build is passing
2025-05-30 20:22:04 +04:00
raucao
fc6cac8368
Remove superfluous link
...
continuous-integration/drone/push Build is passing
Already linked in the same paragraph
2025-05-30 16:53:05 +04:00
raucao
f2e8ca790c
Add Privacy and ToS pages, footer menu
continuous-integration/drone/push Build is passing
continuous-integration/drone/pr Build is passing
Release Drafter / Update release notes draft (pull_request) Successful in 3s
2025-05-30 13:27:15 +04:00
raucao
32cd4d896d
Fix link color for Devise links
continuous-integration/drone/push Build is passing
continuous-integration/drone/pr Build is passing
2025-05-29 17:26:18 +04:00
raucao
67c450860a
Fix tab links
continuous-integration/drone/push Build is passing
continuous-integration/drone/pr Build is passing
2025-05-29 16:24:33 +04:00
raucao
f1d9cf1e3d
Remove special link class
...
continuous-integration/drone/push Build is failing
continuous-integration/drone/pr Build is failing
This cleans up the code quite a bit, but also allows links in editable
content to be rendered with the default style.
2025-05-29 16:10:34 +04:00
raucao
ab1490f472
Remove Kosmos name from wording
...
continuous-integration/drone/push Build is passing
continuous-integration/drone/pr Build is passing
refs #222
2025-05-29 14:24:43 +04:00
raucao
6014134396
Finish MVP for content editing
2025-05-29 14:18:14 +04:00
raucao
6713665a61
WIP Rename "projects" page, make content editable
continuous-integration/drone/push Build is failing
2025-05-28 18:42:10 +04:00
raucao
315cf4dd9f
Add editable content helpers
2025-05-28 18:41:53 +04:00
raucao
2f86b3c16f
Add admin/editable_contents controller
2025-05-28 18:40:54 +04:00
raucao
55c63be9e2
Memoize instance variable
2025-05-28 18:39:48 +04:00
raucao
5c8ffc2630
Add editable contents table
2025-05-28 18:39:25 +04:00
raucao
c7a21c7a69
Add top margin to h3 within content
2025-05-28 18:37:59 +04:00
raucao
252b0f1792
Revert "Add ActionText configs, update spec helpers/configs"
...
This reverts commit c9d23f829d .
2025-05-28 16:53:31 +04:00
raucao
57246ea76d
Fix navbar current link
2025-05-28 15:35:57 +04:00
raucao
c9d23f829d
Add ActionText configs, update spec helpers/configs
2025-05-28 14:52:31 +04:00
raucao
55111f1b8b
Allow using icons without custom class
continuous-integration/drone/push Build is passing
2025-05-28 14:50:59 +04:00
raucao
4c6e64095f
Fix unused invitations count
continuous-integration/drone/push Build is failing
2025-05-28 14:28:59 +04:00
raucao
450ccff65b
Add custom class to all remaining icons
continuous-integration/drone/push Build is failing
2025-05-28 13:57:01 +04:00
greg
0778f29a8e
Merge pull request 'Refactor ejabberd API integration' ( #226 ) from core/refactor_ejabberd_integration into master
...
continuous-integration/drone/push Build is passing
Reviewed-on: #226
Reviewed-by: Greg <greg@noreply.kosmos.org >
2025-05-28 09:22:39 +00:00
raucao
c6a187b25a
Limit invitees on admin user page, link to invitations for more
continuous-integration/drone/push Build is passing
continuous-integration/drone/pr Build is passing
Release Drafter / Update release notes draft (pull_request) Successful in 4s
2025-05-28 12:50:10 +04:00
raucao
c99d8545c1
Add username filter to admin invitations index
continuous-integration/drone/push Build is passing
2025-05-28 12:34:52 +04:00
raucao
e8f912360b
Fix wrong stats number
continuous-integration/drone/push Build is passing
continuous-integration/drone/pr Build is passing
2025-05-28 12:11:26 +04:00
raucao
c94a0e34d1
Add donations to user details, link to filtered list
continuous-integration/drone/push Build is passing
continuous-integration/drone/pr Build is passing
2025-05-27 19:04:35 +04:00
raucao
04094efbdb
Add username filter with UI to admin donations page
2025-05-27 18:43:45 +04:00
raucao
71352d13d2
Add pending donations to admin donations index
...
continuous-integration/drone/push Build is passing
continuous-integration/drone/pr Build is passing
And add more info to the details page
2025-05-27 18:08:22 +04:00
raucao
fff7527694
Don't show njump link when no pubkey set
2025-05-27 17:35:48 +04:00
raucao
7a8ca0707a
Add missing dash for no member status
continuous-integration/drone/push Build is passing
continuous-integration/drone/pr Build is passing
2025-05-27 17:18:47 +04:00
raucao
b657a25d4d
Wording
2025-05-27 17:16:26 +04:00
raucao
e48132cf5f
Set member status to sustainer upon payment
...
continuous-integration/drone/push Build is passing
continuous-integration/drone/pr Build is passing
Introduces a state machine for the payment status as well.
refs #213
2025-05-27 16:39:03 +04:00
raucao
f313686b13
Add settings for member statuses
continuous-integration/drone/push Build is passing
2025-05-27 14:59:10 +04:00
raucao
0b4bc4ef5c
Improve color shade of sidebar link icon
...
Was a bit bright
2025-05-27 14:58:45 +04:00