Bryan Frimin
11770b4058
Add OAuth2/OpenID Connect authorization server
...
Implement a full OAuth2 2.0 and OpenID Connect 1.0 authorization
server with support for authorization code flow (with PKCE),
refresh token rotation, device authorization grant, dynamic
client registration, token introspection, and token revocation.
Includes database schema, coredata layer, service logic, HTTP
handlers, OIDC discovery endpoint, and JWKS publishing.
Signed-off-by: Bryan Frimin <bryan@getprobo.com >
2026-04-19 12:00:53 +02:00
Bryan Frimin
f17fb7bf49
Upgrade to kit v0.3.0
...
Signed-off-by: Bryan Frimin <bryan@getprobo.com >
2026-04-03 11:56:06 +02:00
Bryan Frimin
8f59eb6b8a
Distinguish expired magic links from invalid tokens
...
When a magic link token expires, the user now sees a specific
error message ("This magic link has expired. Please request a
new one.") instead of the generic "Failed to connect" error.
This adds ErrExpiredToken to the IAM error types, checks for
statelesstoken.ErrExpiredToken in both GetMagicLinkEmail and
OpenSessionWithMagicLink, and handles it in the trust resolver
and frontend.
Signed-off-by: Bryan Frimin <bryan@getprobo.com >
2026-03-27 09:15:41 +01:00
Sacha Al Himdani
8c02c53315
Update copyright headers across all Go files
...
Signed-off-by: Sacha Al Himdani <sacha@getprobo.com >
2026-03-25 17:38:32 +01:00
Bryan Frimin
23084a72a2
Add OIDC login support for Google and Microsoft providers
...
Implements OpenID Connect authentication flow with PKCE, JWT verification, and enterprise-only account restrictions. Adds OIDC service with JWKS caching and state management, HTTP handlers for login/callback flows, GraphQL query for available providers, and sign-in UI integration.
Signed-off-by: Bryan Frimin <bryan@getprobo.com >
2026-03-23 14:17:43 +01:00
Bryan Frimin
2f8edfb6be
Add per-email sender name for compliance page emails
...
When an email has a sender name set (the organization name), the
mailer composes the From header as "OrgName via Probo" instead of
the default global sender name. This gives compliance page
recipients clearer context about which organization is contacting
them.
Signed-off-by: Bryan Frimin <bryan@getprobo.com >
2026-03-22 10:56:51 +01:00
Bryan Frimin
888838cfb0
Fix race condition in magic link token verification and typo in auth error message
...
- Hold SELECT FOR UPDATE lock within transaction by using tx directly instead of separate WithConn, ensuring mutual exclusion when multiple requests race to verify the same token
- Fix "resouce" → "resource" typo in authentication error messages
Signed-off-by: Bryan Frimin <bryan@getprobo.com >
2026-03-19 09:31:15 +01:00
Bryan Frimin
ef76a8d2e1
Remove deadcode
...
Signed-off-by: Bryan Frimin <bryan@getprobo.com >
2026-03-13 17:18:02 +01:00
Émile Ré
1d54f22cd9
Add ssoLoginURL in activate account outputs
...
Signed-off-by: Émile Ré <emile@getprobo.com >
2026-03-12 17:24:27 +04:00
Sacha Al Himdani
85ec106cd6
Send mailing list emails
...
Signed-off-by: Sacha Al Himdani <sacha@getprobo.com >
2026-03-11 15:34:37 +01:00
Émile Ré
97e957f394
Implement guard on empty full name before NDA is signed
...
Signed-off-by: Émile Ré <emile@getprobo.com >
2026-03-05 17:07:58 +04:00
Émile Ré
e1fb61979b
Remove create trust center access mutation from console api
...
Signed-off-by: Émile Ré <emile@getprobo.com >
2026-03-05 15:02:49 +04:00
Émile Ré
e856817d2b
Remove full name input from nda page
...
Signed-off-by: Émile Ré <emile@getprobo.com >
2026-03-05 11:19:19 +04:00
Émile Ré
9e106a8875
Add fullName to magic link form
...
Signed-off-by: Émile Ré <emile@getprobo.com >
2026-03-05 10:36:07 +04:00
Émile Ré
54e0353833
Fix typo
...
Signed-off-by: Émile Ré <emile@getprobo.com >
2026-03-04 20:38:56 +04:00
Émile Ré
1af887e4d1
Respond with unauthenticated on compliance page missing membership
...
Signed-off-by: Émile Ré <emile@getprobo.com >
2026-03-04 20:25:58 +04:00
Émile Ré
316e81f938
Implement continue on verify magic link
...
Signed-off-by: Émile Ré <emile@getprobo.com >
2026-03-03 22:07:00 +04:00
Émile Ré
2e4a011009
Do not create password reset token when user logs with saml
...
Signed-off-by: Émile Ré <emile@getprobo.com >
2026-02-19 16:13:03 +04:00
Émile Ré
9941a6a66a
Disable activation on scim profiles
...
Signed-off-by: Émile Ré <emile@getprobo.com >
2026-02-19 16:13:02 +04:00
Émile Ré
7971f88fcd
Create flow to add password after account activation
...
Signed-off-by: Émile Ré <emile@getprobo.com >
2026-02-19 16:12:58 +04:00
Émile Ré
5ab5d2cc4c
Implement activate account page
...
Signed-off-by: Émile Ré <emile@getprobo.com >
2026-02-19 16:12:58 +04:00
Émile Ré
47aba96b69
Reimplement invitations
...
Signed-off-by: Émile Ré <emile@getprobo.com >
2026-02-19 16:12:58 +04:00
Émile Ré
039ff7c5f0
Reuse existing session when signing in in for assume
...
Signed-off-by: Émile Ré <emile@getprobo.com >
2026-02-12 09:37:03 +04:00
Émile Ré
65ac873cff
Remove unused parameter
...
Signed-off-by: Émile Ré <emile@getprobo.com >
2026-02-12 09:37:03 +04:00
Émile Ré
6189a8ed81
Generate presigned URL for email assets at render time
...
Signed-off-by: Émile Ré <emile@getprobo.com >
2026-02-05 12:41:35 +04:00
Émile Ré
27821632c6
Serve email static assets from object store
...
Signed-off-by: Émile Ré <emile@getprobo.com >
2026-02-04 18:32:52 +04:00
Bryan Frimin
ece54f1616
Fix golint errors
...
Signed-off-by: Bryan Frimin <bryan@getprobo.com >
2026-02-02 18:42:50 +01:00
Émile Ré
d9c07ecdef
Fix bot review
...
Signed-off-by: Émile Ré <emile@getprobo.com >
2026-02-02 13:32:58 +04:00
Émile Ré
e13ff134ed
Extract email presentation configuration layer to streamline email branding
...
Signed-off-by: Émile Ré <emile@getprobo.com >
2026-02-02 13:32:57 +04:00
Émile Ré
5384e12ced
Make magic link single use and reduce duration to 15min
...
Signed-off-by: Émile Ré <emile@getprobo.com >
2026-01-17 12:35:45 -08:00
Émile Ré
5beceb58d2
Change magic link request to use url builder
...
Signed-off-by: Émile Ré <emile@getprobo.com >
2026-01-17 12:34:26 -08:00
Émile Ré
cbd873fd57
Revert ugly stripping by using a top level front route
...
Signed-off-by: Émile Ré <emile@getprobo.com >
2026-01-17 12:34:25 -08:00
Émile Ré
491caa9e22
Ask for fullName on NDA signing
...
Signed-off-by: Émile Ré <emile@getprobo.com >
2026-01-17 12:34:25 -08:00
Émile Ré
8b3bda56e6
Add magic link login for trust center
...
Signed-off-by: Émile Ré <emile@getprobo.com >
2026-01-17 12:34:24 -08:00
Émile Ré
7322201dab
Plug trust center part 1
...
Signed-off-by: Émile Ré <emile@getprobo.com >
2026-01-17 12:34:23 -08:00
Émile Ré
62aacced71
Plug verify email
...
Signed-off-by: Émile Ré <emile@getprobo.com >
2026-01-17 12:30:31 -08:00
Émile Ré
62569dc44c
Plug reset password page
...
Signed-off-by: Émile Ré <emile@getprobo.com >
2026-01-17 12:30:31 -08:00
Bryan Frimin
d4b039737e
Rename identity profile on membership profile
...
Signed-off-by: Bryan Frimin <bryan@getprobo.com >
2026-01-17 10:14:54 -08:00
Bryan Frimin
2f7a3a5f76
Add identity profile
...
Signed-off-by: Bryan Frimin <bryan@getprobo.com >
2026-01-17 10:13:29 -08:00
Bryan Frimin
0f7c755d53
Rename user into identity
...
Signed-off-by: Bryan Frimin <bryan@getprobo.com >
2026-01-17 10:10:27 -08:00
Bryan Frimin
a4964e817c
Change session from method tracking
...
Signed-off-by: Bryan Frimin <bryan@getprobo.com >
2026-01-17 10:10:23 -08:00
Bryan Frimin
811bebca48
Rename open session for saml
...
Signed-off-by: Bryan Frimin <bryan@getprobo.com >
2026-01-17 10:10:22 -08:00
Bryan Frimin
74fc3b8cd1
Rewrite identity and access management
...
Signed-off-by: Bryan Frimin <bryan@getprobo.com >
2026-01-17 10:07:34 -08:00