Bryan Frimin
7b320916af
Add audit log feature for recording all actions
...
Adds audit logging that records all authorized actions performed by
users and API keys. The audit log is automatically populated whenever
the authorizer approves an action, and is queryable via GraphQL, MCP,
and CLI interfaces. Permission checks are excluded via a dry-run flag
to avoid phantom entries on page loads.
Signed-off-by: Bryan Frimin <bryan@getprobo.com >
2026-03-21 19:16:19 +01:00
Bryan Frimin
b87ea87c42
Fix organization profile using owner's full name instead of org name
...
When creating an organization, the owner's membership profile was being set with the organization name as the full name instead of the owner's actual full name. Fetch the identity's full name and use it for the profile.
Signed-off-by: Bryan Frimin <bryan@getprobo.com >
2026-03-19 11:38:04 +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
a5743729f7
Add file visibility (PRIVATE/PUBLIC) + public files API
...
Adds a visibility enum to files with PRIVATE (default) and PUBLIC states.
PUBLIC files are accessible via an unauthenticated /api/files/v1/{fileID}
endpoint that redirects to a presigned S3 URL. Introduces pkg/file service
to manage file operations. Logo uploads (trust centers, organizations,
frameworks, references) are marked PUBLIC; other files are PRIVATE.
Includes database migration and backfill for existing logos.
Signed-off-by: Bryan Frimin <bryan@getprobo.com >
2026-03-18 19:19:04 +01:00
Sacha Al Himdani
16b966b8fb
Fix multiline function call style violations
...
Expand mixed inline/multiline function calls so each argument
is on its own line, matching the one-argument-per-line rule.
Signed-off-by: Sacha Al Himdani <sacha@getprobo.com >
2026-03-17 15:59:26 +01:00
Bryan Frimin
6a77d42dd6
Style
...
Signed-off-by: Bryan Frimin <bryan@getprobo.com >
2026-03-16 00:28:47 +01:00
Bryan Frimin
76f781ead1
Clear conflicting external_id when enrolling manual profile into SCIM
...
When a SCIM provider sends CreateUser for a user whose email matches an
existing manual profile, but another profile already holds that
external_id (e.g. created by a prior CreateUser with a different email),
clear the conflicting external_id before enrolling the manual profile.
Signed-off-by: Bryan Frimin <bryan@getprobo.com >
2026-03-14 12:40:26 +01:00
Bryan Frimin
ef76a8d2e1
Remove deadcode
...
Signed-off-by: Bryan Frimin <bryan@getprobo.com >
2026-03-13 17:18:02 +01:00
Sacha Al Himdani
d5c62a9383
Run go fmt/fix
...
Signed-off-by: Sacha Al Himdani <sacha@getprobo.com >
2026-03-13 14:48:13 +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
Sacha Al Himdani
4d2cb793b6
Add compliance page mailing list base
...
Signed-off-by: Sacha Al Himdani <sacha@getprobo.com >
2026-03-11 15:34:36 +01:00
Émile Ré
15bcfeb4bf
Remove unused iam policy
...
Signed-off-by: Émile Ré <emile@getprobo.com >
2026-03-11 17:40:46 +04:00
Bryan Frimin
f99b2f7828
Rename nickname
...
Signed-off-by: Bryan Frimin <bryan@getprobo.com >
2026-03-11 13:09:03 +01:00
Bryan Frimin
3354bbd16b
Fix mapping google workspace
...
Signed-off-by: Bryan Frimin <bryan@getprobo.com >
2026-03-11 13:09:03 +01:00
Bryan Frimin
e1643d1e3a
Add missing validation
...
Signed-off-by: Bryan Frimin <bryan@getprobo.com >
2026-03-11 13:09:02 +01:00
Bryan Frimin
e393411333
Move kind to string
...
Signed-off-by: Bryan Frimin <bryan@getprobo.com >
2026-03-11 13:09:02 +01:00
Bryan Frimin
764f61bfa7
Remove debug logs
...
Signed-off-by: Bryan Frimin <bryan@getprobo.com >
2026-03-11 13:09:01 +01:00
Bryan Frimin
f674426dfa
Update Google SCIM bridge
...
Signed-off-by: Bryan Frimin <bryan@getprobo.com >
2026-03-11 13:09:01 +01:00
Bryan Frimin
dd3885ac54
Fix MS365 attributes handling
...
Signed-off-by: Bryan Frimin <bryan@getprobo.com >
2026-03-11 13:09:01 +01:00
Bryan Frimin
c6c6e29d73
Fix delete does not completly remove the record
...
Signed-off-by: Bryan Frimin <bryan@getprobo.com >
2026-03-11 13:09:01 +01:00
Bryan Frimin
346205f05a
Returns 409 when user already exist
...
Signed-off-by: Bryan Frimin <bryan@getprobo.com >
2026-03-11 13:09:00 +01:00
Bryan Frimin
85663d3a34
Fix delete user membership instead of profile
...
Signed-off-by: Bryan Frimin <bryan@getprobo.com >
2026-03-11 13:09:00 +01:00
Bryan Frimin
c8250f6794
Add userName and externalID support
...
Signed-off-by: Bryan Frimin <bryan@getprobo.com >
2026-03-11 13:09:00 +01:00
Émile Ré
87415c0324
Remove useless encryption key injections
...
Signed-off-by: Émile Ré <emile@getprobo.com >
2026-03-11 14:42:37 +04:00
Émile Ré
17c9f2eded
Fix profiles default filter
...
Signed-off-by: Émile Ré <emile@getprobo.com >
2026-03-10 18:19:16 +04:00
Bryan Frimin
d4b3025463
Use go 1.26 syntax
...
Signed-off-by: Bryan Frimin <bryan@getprobo.com >
2026-03-06 15:00:42 +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é
909beeb606
Migrate some trust_center_access columns to profiles
...
Signed-off-by: Émile Ré <emile@getprobo.com >
2026-03-05 10:36:08 +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
Sacha Al Himdani
21ed4113c3
Go format
...
Signed-off-by: Sacha Al Himdani <sacha@getprobo.com >
2026-03-03 11:17:05 +01:00
Sacha Al Himdani
6905472fba
Add user webhooks
...
Signed-off-by: Sacha Al Himdani <sacha@getprobo.com >
2026-02-27 10:14:53 +01:00
Bryan Frimin
0a0e722c68
Remove noisy SAML verification domain error
...
Signed-off-by: Bryan Frimin <bryan@getprobo.com >
2026-02-24 09:03:55 +01:00
Sacha Al Himdani
86e4c2eada
Fix auditor access to people
...
Signed-off-by: Sacha Al Himdani <sacha@getprobo.com >
2026-02-23 15:16:02 +01:00
Émile Ré
f75bde75f1
Remove unused schema fields
...
Signed-off-by: Émile Ré <emile@getprobo.com >
2026-02-20 18:24:57 +04:00
Émile Ré
872a1e3dd7
Set email address on create to get it in reponse payload
...
Signed-off-by: Émile Ré <emile@getprobo.com >
2026-02-20 18:09:46 +04:00
Émile Ré
c3a65c123a
Sync title in SCIM and Gbridge
...
Signed-off-by: Émile Ré <emile@getprobo.com >
2026-02-19 16:13:05 +04:00
Émile Ré
c74e7e23f6
Inline if block
...
Signed-off-by: Émile Ré <emile@getprobo.com >
2026-02-19 16:13:04 +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é
776af96170
Fix bot review
...
Signed-off-by: Émile Ré <emile@getprobo.com >
2026-02-19 16:13:02 +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é
ab5fe8e5e2
Fix e2e tests
...
Signed-off-by: Émile Ré <emile@getprobo.com >
2026-02-19 16:13:01 +04:00
Émile Ré
ae0119e2c5
Expire invitations when user is deactivated or switches to SAML source
...
Signed-off-by: Émile Ré <emile@getprobo.com >
2026-02-19 16:13:00 +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