Commit Graph

188 Commits

Author SHA1 Message Date
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
Émile Ré
47aba96b69 Reimplement invitations
Signed-off-by: Émile Ré <emile@getprobo.com>
2026-02-19 16:12:58 +04:00
Émile Ré
a42fc4fa61 Reimplement remove / create in console
Signed-off-by: Émile Ré <emile@getprobo.com>
2026-02-19 16:12:57 +04:00