Commit Graph

35 Commits

Author SHA1 Message Date
Émile Ré
4a276e3ef7 Split inactive profile state
Replace the binary profile ACTIVE/INACTIVE model with PENDING, ACTIVE,
and DEACTIVATED so invited-but-not-yet-activated members remain
assignable to assets, data, and risks instead of being treated like
deactivated users.

Add activated_at/deactivated_at timestamps and Mark* lifecycle helpers,
and update every transition (create, invite/re-invite, activation,
archive, SCIM, SAML, sessions, compliance-portal grant) to the new
states. Expose a multi-state states[] filter across coredata, GraphQL,
MCP, and the console owner pickers, which now request ACTIVE and
PENDING members.

A migration renames the membership_state enum, classifies existing
inactive profiles as PENDING from recent invitation activity, and
backfills the new timestamp columns.

Signed-off-by: Émile Ré <emile@probo.com>
2026-07-30 09:19:42 +02:00
Sacha Al Himdani
4c57d201a4 Make license declarations consistently MIT
The source headers, LICENSE files, and license metadata had drifted
apart. Align the entire project to MIT:

- Convert every source-file header to the MIT text across all comment
  styles (Go, TS, TSX, JS, MJS, SQL, CSS, GraphQL, shell), including
  SPDX-License-Identifier tags
- Set the root and cookie-banner LICENSE files to the MIT text with a
  "MIT License" title line
- Switch the package.json license fields, Docker image label, and
  cookie-banner README to MIT
- Update docs and the genmodels header generator accordingly
- Normalize copyright lines to a single format
  (Copyright (c) <year(s)> Probo Inc <hello@probo.com>.): unify the
  hello@getprobo.com and hello@probo.inc emails to hello@probo.com and
  the comma-separated years to a hyphenated range

Genuine third-party references are intentionally left untouched: the
Lucide icon attributions (Lucide is ISC) and the trivy dependency
license allowlist.

Signed-off-by: Sacha Al Himdani <sacha@probo.com>
2026-07-13 16:21:14 +02:00
Bryan Frimin
2c8ae26ea1 Open OIDC child session when assuming organization
OIDC login dropped organization_id before the provider redirect, so
callbacks with an existing matching root session never created an org
child session. Persist organization_id in OIDC state, open the child
session on callback, and forward the parameter from the sign-in UI.

Signed-off-by: Bryan Frimin <bryan@probo.com>
2026-06-18 12:11:01 +02:00
Sacha Al Himdani
9ac71f948f Update contact email to hello@probo.com
Signed-off-by: Sacha Al Himdani <sacha@getprobo.com>
2026-06-09 16:45:23 +02:00
Émile Ré
9156d6a16a Add wsl linter and fix
Signed-off-by: Émile Ré <emile@probo.com>
2026-05-20 09:27:28 +04:00
Bryan Frimin
febf4a930e Treat OIDC and magic link sessions as password-equivalent when assuming an org
Users authenticated via Google/Microsoft OIDC or magic link previously
relied on a fall-through in the password-only org check. Make the rule
explicit so SSO-only users can access password-only organizations
without being bounced to the password login form they cannot satisfy.

Signed-off-by: Bryan Frimin <bryan@getprobo.com>
2026-04-30 17:24:04 +04: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
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
ef76a8d2e1 Remove deadcode
Signed-off-by: Bryan Frimin <bryan@getprobo.com>
2026-03-13 17:18:02 +01: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é
5ab5d2cc4c Implement activate account page
Signed-off-by: Émile Ré <emile@getprobo.com>
2026-02-19 16:12:58 +04:00
Émile Ré
f931bda10f Reimplement remove and invite user
Signed-off-by: Émile Ré <emile@getprobo.com>
2026-02-19 16:12:56 +04:00
Émile Ré
7794563e94 Remove duplicate membership method
Signed-off-by: Émile Ré <emile@getprobo.com>
2026-02-19 16:12:56 +04:00
Émile Ré
56ec0ab3c3 Move source and state from membership to profile
Signed-off-by: Émile Ré <emile@getprobo.com>
2026-02-19 16:12:55 +04:00
Émile Ré
00cc91c102 Fix assume SAML required error redirect
Signed-off-by: Émile Ré <emile@getprobo.com>
2026-02-18 15:16:00 +04:00
Émile Ré
e46c1d4894 Rename redirect-path to continue + handle redirection on forbidden from wrong org assume
Signed-off-by: Émile Ré <emile@getprobo.com>
2026-02-12 09:37:07 +04:00
Émile Ré
942b6f5144 No need to reuse child session in assume function
Signed-off-by: Émile Ré <emile@getprobo.com>
2026-02-12 09:37:07 +04:00
Émile Ré
e0bb27bff4 Various fixes
Signed-off-by: Émile Ré <emile@getprobo.com>
2026-02-12 09:37:06 +04:00
Émile Ré
a8d1ce0097 Implement redirect path for saml
Signed-off-by: Émile Ré <emile@getprobo.com>
2026-02-12 09:37:06 +04:00
Émile Ré
070000c46a Implement redirect-path for password method
Signed-off-by: Émile Ré <emile@getprobo.com>
2026-02-12 09:37:05 +04:00
Émile Ré
b305d5b337 Do not error on expired existing child session when assuming
Signed-off-by: Émile Ré <emile@getprobo.com>
2026-02-12 09:37:04 +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é
1e1ec72ee7 Assume organization when loading org layout
Signed-off-by: Émile Ré <emile@getprobo.com>
2026-02-12 09:37:02 +04:00
Bryan Frimin
7030d06aed Add membership state
Signed-off-by: Bryan Frimin <bryan@getprobo.com>
2026-01-17 12:22:47 -08:00
Bryan Frimin
1cdf005087 WIP
Signed-off-by: Bryan Frimin <bryan@getprobo.com>
2026-01-17 10:35:52 -08:00
Bryan Frimin
3e95c8c38a Fix missing child session on SAML
Signed-off-by: Bryan Frimin <bryan@getprobo.com>
2026-01-17 10:27:44 -08:00
Émile Ré
46656303b8 Assume sets child auth at to now + explicit auth method setting
Signed-off-by: Émile Ré <nemile.re@gmail.com>
2026-01-17 10:10:28 -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
393343e557 Fix lastSession always return an error
Signed-off-by: Bryan Frimin <bryan@getprobo.com>
2026-01-17 10:10:24 -08:00
Bryan Frimin
342d93911b Add session membership
Signed-off-by: Bryan Frimin <bryan@getprobo.com>
2026-01-17 10:10:23 -08:00
Bryan Frimin
7013612a43 Fix assume session on expire root session
Signed-off-by: Bryan Frimin <bryan@getprobo.com>
2026-01-17 10:10:23 -08:00
Bryan Frimin
12679057f4 Add assume organization session support
Signed-off-by: Bryan Frimin <bryan@getprobo.com>
2026-01-17 10:10:23 -08:00
Bryan Frimin
970a734964 Fix active session must not be return if expired
Signed-off-by: Bryan Frimin <bryan@getprobo.com>
2026-01-17 10:07:42 -08:00
Bryan Frimin
7a26473e8f Add activeSession on membership
Signed-off-by: Bryan Frimin <bryan@getprobo.com>
2026-01-17 10:07:42 -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