From 173a56ab6413c734ec370902be46f27191ebb756 Mon Sep 17 00:00:00 2001 From: Michael Sukkarieh Date: Mon, 14 Jul 2025 20:14:41 -0700 Subject: [PATCH] Revamp onboarding flow (#376) * sign up copy nits * first pass at new onboarding page * wip join onboard logic * refactor auth provider fetch logic * add member approval and invite link flag logic * update join request flow and remove jit logic * onboard guard * nits, onboard role check, invite link enabled check * fix bg color issue in onboarding page * refactor onboard UI * ui nits and more onboarding resource cards * revamp auth docs * change member approval default behavior and updated docs * merge prisma migrations * add id to resource card * feedback * feedback * feedback and fixed build * settings drop down UI nit * ui nits * handle join when max capacity case * add news data for member toggle * refactor for public access case * add iap bridge to onboard logic * fetch member approval req and invite link enabled flag on server * ui nits * fix invite link enable toggle snapping issue * ui nits * styling and ui nits, pass in invite id from server * add mcp resource in onboard step * get invite link in server * fix build issue * refactor docs on config * minor doc nit --- CHANGELOG.md | 1 + docs/docs.json | 7 +- docs/docs/configuration/audit-logs.mdx | 1 - docs/docs/configuration/auth/faq.mdx | 46 ++ .../configuration/auth/inviting-members.mdx | 30 ++ docs/docs/configuration/auth/overview.mdx | 131 +----- docs/docs/configuration/auth/providers.mdx | 105 +++++ .../configuration/environment-variables.mdx | 1 - docs/docs/connections/local-repos.mdx | 2 +- docs/docs/connections/overview.mdx | 36 +- docs/docs/overview.mdx | 6 +- docs/images/invite_link_toggle.png | Bin 0 -> 178693 bytes docs/images/member_approval_toggle.png | Bin 0 -> 256806 bytes .../migration.sql | 13 + packages/db/prisma/schema.prisma | 7 +- packages/shared/src/entitlements.ts | 2 +- packages/web/src/actions.ts | 268 ++++------- .../app/[domain]/components/onboardGuard.tsx | 6 +- .../[domain]/components/pendingApproval.tsx | 76 ++-- .../[domain]/components/settingsDropdown.tsx | 6 +- ...ton.tsx => submitAccountRequestButton.tsx} | 19 +- .../[domain]/components/submitJoinRequest.tsx | 55 +++ packages/web/src/app/[domain]/layout.tsx | 59 ++- .../onboard/components/completeOnboarding.tsx | 30 -- .../onboard/components/connectCodeHost.tsx | 164 ------- .../onboard/components/inviteTeam.tsx | 135 ------ .../onboard/components/onboardBackButton.tsx | 23 - .../web/src/app/[domain]/onboard/page.tsx | 87 ---- .../app/[domain]/settings/members/page.tsx | 12 + .../src/app/components/authMethodSelector.tsx | 77 ++++ .../src/app/components/authSecurityNotice.tsx | 98 ++++ .../web/src/app/components/dividerSet.tsx | 13 + .../src/app/components/inviteLinkToggle.tsx | 130 ++++++ .../app/components/joinOrganizationButton.tsx | 55 +++ .../app/components/joinOrganizationCard.tsx | 23 + .../web/src/app/components/providerButton.tsx | 45 ++ packages/web/src/app/invite/actions.ts | 52 +++ packages/web/src/app/invite/page.tsx | 86 ++++ .../app/login/components/credentialsForm.tsx | 5 +- .../onboard => login}/components/demoCard.tsx | 0 .../src/app/login/components/loginForm.tsx | 107 +---- .../app/login/components/magicLinkForm.tsx | 5 +- packages/web/src/app/login/page.tsx | 21 +- .../components/completeOnboardingButton.tsx | 53 +++ .../memberApprovalRequiredToggle.tsx | 90 ++++ .../app/onboard/components/onboardHeader.tsx | 38 -- .../app/onboard/components/orgCreateForm.tsx | 122 ----- packages/web/src/app/onboard/page.tsx | 420 +++++++++++++++++- packages/web/src/app/page.tsx | 34 +- packages/web/src/app/redeem/page.tsx | 7 + packages/web/src/app/signup/page.tsx | 21 +- packages/web/src/components/ui/switch.tsx | 4 +- packages/web/src/data/org.ts | 19 +- .../ee/features/publicAccess/publicAccess.tsx | 3 +- packages/web/src/ee/features/sso/sso.tsx | 83 +--- packages/web/src/env.mjs | 2 - packages/web/src/initialize.ts | 48 +- packages/web/src/lib/authProviders.ts | 18 + packages/web/src/lib/authUtils.ts | 349 +++++++++------ packages/web/src/lib/errorCodes.ts | 5 +- packages/web/src/lib/newsData.ts | 16 +- packages/web/src/lib/serviceError.ts | 16 + packages/web/src/lib/utils.ts | 23 +- packages/web/src/middleware.ts | 4 +- 64 files changed, 1985 insertions(+), 1435 deletions(-) create mode 100644 docs/docs/configuration/auth/faq.mdx create mode 100644 docs/docs/configuration/auth/inviting-members.mdx create mode 100644 docs/docs/configuration/auth/providers.mdx create mode 100644 docs/images/invite_link_toggle.png create mode 100644 docs/images/member_approval_toggle.png create mode 100644 packages/db/prisma/migrations/20250713041019_add_onboarding_revamp_changes/migration.sql rename packages/web/src/app/[domain]/components/{resubmitAccountRequestButton.tsx => submitAccountRequestButton.tsx} (73%) create mode 100644 packages/web/src/app/[domain]/components/submitJoinRequest.tsx delete mode 100644 packages/web/src/app/[domain]/onboard/components/completeOnboarding.tsx delete mode 100644 packages/web/src/app/[domain]/onboard/components/connectCodeHost.tsx delete mode 100644 packages/web/src/app/[domain]/onboard/components/inviteTeam.tsx delete mode 100644 packages/web/src/app/[domain]/onboard/components/onboardBackButton.tsx delete mode 100644 packages/web/src/app/[domain]/onboard/page.tsx create mode 100644 packages/web/src/app/components/authMethodSelector.tsx create mode 100644 packages/web/src/app/components/authSecurityNotice.tsx create mode 100644 packages/web/src/app/components/dividerSet.tsx create mode 100644 packages/web/src/app/components/inviteLinkToggle.tsx create mode 100644 packages/web/src/app/components/joinOrganizationButton.tsx create mode 100644 packages/web/src/app/components/joinOrganizationCard.tsx create mode 100644 packages/web/src/app/components/providerButton.tsx create mode 100644 packages/web/src/app/invite/actions.ts create mode 100644 packages/web/src/app/invite/page.tsx rename packages/web/src/app/{[domain]/onboard => login}/components/demoCard.tsx (100%) create mode 100644 packages/web/src/app/onboard/components/completeOnboardingButton.tsx create mode 100644 packages/web/src/app/onboard/components/memberApprovalRequiredToggle.tsx delete mode 100644 packages/web/src/app/onboard/components/onboardHeader.tsx delete mode 100644 packages/web/src/app/onboard/components/orgCreateForm.tsx create mode 100644 packages/web/src/lib/authProviders.ts diff --git a/CHANGELOG.md b/CHANGELOG.md index f4da16c2..68996d2f 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -9,6 +9,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ### Fixed - Fixed issue with external source code links being broken for paths with spaces. [#364](https://github.com/sourcebot-dev/sourcebot/pull/364) +- Revamped onboarding experience. [#370](https://github.com/sourcebot-dev/sourcebot/pull/376) - Makes base retry indexing configuration configurable and move from a default of `5s` to `60s`. [#377](https://github.com/sourcebot-dev/sourcebot/pull/377) - Fixed issue where files would sometimes never load in the code browser. [#365](https://github.com/sourcebot-dev/sourcebot/pull/365) diff --git a/docs/docs.json b/docs/docs.json index c8b3888e..3af230d7 100644 --- a/docs/docs.json +++ b/docs/docs.json @@ -52,7 +52,7 @@ "group": "Configuration", "pages": [ { - "group": "Connecting your code", + "group": "Indexing your code", "pages": [ "docs/connections/overview", "docs/connections/github", @@ -72,7 +72,10 @@ "group": "Authentication", "pages": [ "docs/configuration/auth/overview", - "docs/configuration/auth/roles-and-permissions" + "docs/configuration/auth/providers", + "docs/configuration/auth/inviting-members", + "docs/configuration/auth/roles-and-permissions", + "docs/configuration/auth/faq" ] }, "docs/configuration/transactional-emails", diff --git a/docs/docs/configuration/audit-logs.mdx b/docs/docs/configuration/audit-logs.mdx index 2a3c0624..f229caaf 100644 --- a/docs/docs/configuration/audit-logs.mdx +++ b/docs/docs/configuration/audit-logs.mdx @@ -125,7 +125,6 @@ curl --request GET '$SOURCEBOT_URL/api/ee/audit' \ | `user.join_requested` | `user` | `org` | | `user.join_request_approve_failed` | `user` | `account_join_request` | | `user.join_request_approved` | `user` | `account_join_request` | -| `user.join_request_removed` | `user` | `account_join_request` | | `user.invite_failed` | `user` | `org` | | `user.invites_created` | `user` | `org` | | `user.invite_accept_failed` | `user` | `invite` | diff --git a/docs/docs/configuration/auth/faq.mdx b/docs/docs/configuration/auth/faq.mdx new file mode 100644 index 00000000..5d37bc66 --- /dev/null +++ b/docs/docs/configuration/auth/faq.mdx @@ -0,0 +1,46 @@ +--- +title: FAQ +--- + +This page covers a range of frequently asked questions about Sourcebot's built-in authentication system. + + + + No, at this time it's not possible to disable the authentication system. If this is preventing you from deploying Sourcebot + within your organization please [reach out](https://www.sourcebot.dev/contact) + + + + Every user must register an account within your Sourcebot deployment. However, this dosn't mean their access + is restricted. + + Unless member approval is required, anyone can sign up for an account on your deployment and immediately be granted access. + + + + **No data related to authentication (or your code) leaves your deployment**. Authentication is handled + purely by your deployment and the authentication providers you configure. + + This data does not leave your device and is stored within in the database managed by your deployment. If you're + using credential login, passwords are encrypted at rest and in transit. + + + + Please note that IAP bridges are an enterprise feature + Sourcebot supports connecting your identity proxy directly into the built-in auth system using an IAP bridge. This allows Sourcebot to + register and authenticate automatically on a successful identity proxy log in. + + Sourcebot currently supports [GCP IAP](/docs/configuration/auth/providers#gcp-iap). If you're using a different IAP + and require support, please [reach out](https://www.sourcebot.dev/contact) + + + + Sourcebot uses [Auth.js](https://authjs.dev/) as its underlying authentication framework. Auth.js provides authentication providers + (credientials, Google, GitHub, etc) and an interface to enable user registration and log in. Internally, Auth.js uses JWT to provide + Sourcebot secure and reliable information about user authentication. + + + + +Have a question that's not answered here? Submit it on our [GitHub discussions](https://github.com/sourcebot-dev/sourcebot/discussions) +page and we'll get back to you as soon as we can! \ No newline at end of file diff --git a/docs/docs/configuration/auth/inviting-members.mdx b/docs/docs/configuration/auth/inviting-members.mdx new file mode 100644 index 00000000..d67e497b --- /dev/null +++ b/docs/docs/configuration/auth/inviting-members.mdx @@ -0,0 +1,30 @@ +--- +title: Inviting Members +sidebarTitle: Inviting members +--- + +There are various ways to configure how members can join a Sourcebot deployment. + +## Member Approval + +**By default, Sourcebot requires new members to be approved by the owner of the deployment**. This section explains how approvals work and how +to configure this behavior. + +### Configuration +Member approval can be configured by the owner of the deployment by navigating to **Settings -> Members**: + +![Member Approval Toggle](/images/member_approval_toggle.png) + +### Managing Requests + +If member approval is enabled, new members will be asked to submit a join request after signing up. They will not have access to the Sourcebot deployment +until this request is approved by the owner. + +The owner can see and manage all pending join requests by navigating to **Settings -> Members**. + +## Invite link + +If member approval is required, an owner of the deployment can enable an invite link. When enabled, users +can use this invite link to register and be automatically added to the organization without approval: + +![Invite Link Toggle](/images/invite_link_toggle.png) \ No newline at end of file diff --git a/docs/docs/configuration/auth/overview.mdx b/docs/docs/configuration/auth/overview.mdx index 3b11a4a9..732fef35 100644 --- a/docs/docs/configuration/auth/overview.mdx +++ b/docs/docs/configuration/auth/overview.mdx @@ -4,124 +4,23 @@ title: Overview If you're deploying Sourcebot behind a domain, you must set the [AUTH_URL](/docs/configuration/environment-variables) environment variable. -Sourcebot has built-in authentication that gates access to your organization. OAuth, email codes, and email / password are supported. +Sourcebot's built-in authentication system gates your deployment, and allows administrators to manage users and their permissions. -The first account that's registered on a Sourcebot deployment is made the owner. All other users who register must be [approved](/docs/configuration/auth/overview#approving-new-members) by the owner. + + + Configure additional authentication providers for your deployment. + + + Learn how to configure how members join your deployment. + + + Learn more about the different roles and permissions in Sourcebot. + + + Have a question about Sourcebot's auth system? We might have the answers here. + + -![Login Page](/images/login.png) - - -# Approving New Members - -All account registrations after the first account must be approved by the owner. The owner can see all join requests by going into **Settings -> Members**. - -If you have an [enterprise license](/docs/license-key), you can enable [AUTH_EE_ENABLE_JIT_PROVISIONING](/docs/configuration/auth/overview#enterprise-authentication-providers) to -have Sourcebot accounts automatically created and approved on registration. - -You can setup emails to be sent when new join requests are created/approved by configurating [transactional emails](/docs/configuration/transactional-emails) -# Authentication Providers - -To enable an authentication provider in Sourcebot, configure the required environment variables for the provider. Under the hood, Sourcebot uses Auth.js which supports [many providers](https://authjs.dev/getting-started/authentication/oauth). Submit a [feature request on GitHub](https://github.com/sourcebot-dev/sourcebot/discussions/categories/ideas) if you want us to add support for a specific provider. - -## Core Authentication Providers - -### Email / Password ---- -Email / password authentication is enabled by default. It can be **disabled** by setting `AUTH_CREDENTIALS_LOGIN_ENABLED` to `false`. - -### Email codes ---- -Email codes are 6 digit codes sent to a provided email. Email codes are enabled when transactional emails are configured using the following environment variables: - -- `AUTH_EMAIL_CODE_LOGIN_ENABLED` -- `SMTP_CONNECTION_URL` -- `EMAIL_FROM_ADDRESS` - - -See [transactional emails](/docs/configuration/transactional-emails) for more details. - -## Enterprise Authentication Providers - -The following authentication providers require an [enterprise license](/docs/license-key) to be enabled. - -By default, a new user registering using these providers must have their join request accepted by the owner of the organization to join. To allow a user to join automatically when -they register for the first time, set the `AUTH_EE_ENABLE_JIT_PROVISIONING` environment variable to `true`. - -### GitHub ---- - -[Auth.js GitHub Provider Docs](https://authjs.dev/getting-started/providers/github) - -**Required environment variables:** -- `AUTH_EE_GITHUB_CLIENT_ID` -- `AUTH_EE_GITHUB_CLIENT_SECRET` - -Optional environment variables: -- `AUTH_EE_GITHUB_BASE_URL` - Base URL for GitHub Enterprise (defaults to https://github.com) - -### GitLab ---- - -[Auth.js GitLab Provider Docs](https://authjs.dev/getting-started/providers/gitlab) - -**Required environment variables:** -- `AUTH_EE_GITLAB_CLIENT_ID` -- `AUTH_EE_GITLAB_CLIENT_SECRET` - -Optional environment variables: -- `AUTH_EE_GITLAB_BASE_URL` - Base URL for GitLab instance (defaults to https://gitlab.com) - -### Google ---- - -[Auth.js Google Provider Docs](https://authjs.dev/getting-started/providers/google) - -**Required environment variables:** -- `AUTH_EE_GOOGLE_CLIENT_ID` -- `AUTH_EE_GOOGLE_CLIENT_SECRET` - -### GCP IAP ---- - -If you're running Sourcebot in an environment that blocks egress, make sure you allow the [IAP IP ranges](https://www.gstatic.com/ipranges/goog.json) - -Custom provider built to enable automatic Sourcebot account registration/login when using GCP IAP. - -**Required environment variables** -- `AUTH_EE_GCP_IAP_ENABLED` -- `AUTH_EE_GCP_IAP_AUDIENCE` - - This can be found by selecting the ⋮ icon next to the IAP-enabled backend service and pressing `Get JWT audience code` - -### Okta ---- - -[Auth.js Okta Provider Docs](https://authjs.dev/getting-started/providers/okta) - -**Required environment variables:** -- `AUTH_EE_OKTA_CLIENT_ID` -- `AUTH_EE_OKTA_CLIENT_SECRET` -- `AUTH_EE_OKTA_ISSUER` - -### Keycloak ---- - -[Auth.js Keycloak Provider Docs](https://authjs.dev/getting-started/providers/keycloak) - -**Required environment variables:** -- `AUTH_EE_KEYCLOAK_CLIENT_ID` -- `AUTH_EE_KEYCLOAK_CLIENT_SECRET` -- `AUTH_EE_KEYCLOAK_ISSUER` - -### Microsoft Entra ID - -[Auth.js Microsoft Entra ID Provider Docs](https://authjs.dev/getting-started/providers/microsoft-entra-id) - -**Required environment variables:** -- `AUTH_EE_MICROSOFT_ENTRA_ID_CLIENT_ID` -- `AUTH_EE_MICROSOFT_ENTRA_ID_CLIENT_SECRET` -- `AUTH_EE_MICROSOFT_ENTRA_ID_ISSUER` - ---- # Troubleshooting diff --git a/docs/docs/configuration/auth/providers.mdx b/docs/docs/configuration/auth/providers.mdx new file mode 100644 index 00000000..ae52ea46 --- /dev/null +++ b/docs/docs/configuration/auth/providers.mdx @@ -0,0 +1,105 @@ +--- +title: Providers +--- + +Sourcebot supports a wide range of different authentication providers through it's integration with [Auth.js](https://authjs.dev/). This page +highlights how to configure the various supported providers. + +If theres an authentication provider you'd like us to support, please [reach out](https://www.sourcebot.dev/contact). + +# Core Authentication Providers + +### Email / Password +--- +Email / password authentication is enabled by default. It can be **disabled** by setting `AUTH_CREDENTIALS_LOGIN_ENABLED` to `false`. + +### Email codes +--- +Email codes are 6 digit codes sent to a provided email. Email codes are enabled when transactional emails are configured using the following environment variables: + +- `AUTH_EMAIL_CODE_LOGIN_ENABLED` +- `SMTP_CONNECTION_URL` +- `EMAIL_FROM_ADDRESS` + + +See [transactional emails](/docs/configuration/transactional-emails) for more details. + +# Enterprise Authentication Providers + +The following authentication providers require an [enterprise license](/docs/license-key) to be enabled. + +### GitHub +--- + +[Auth.js GitHub Provider Docs](https://authjs.dev/getting-started/providers/github) + +**Required environment variables:** +- `AUTH_EE_GITHUB_CLIENT_ID` +- `AUTH_EE_GITHUB_CLIENT_SECRET` + +Optional environment variables: +- `AUTH_EE_GITHUB_BASE_URL` - Base URL for GitHub Enterprise (defaults to https://github.com) + +### GitLab +--- + +[Auth.js GitLab Provider Docs](https://authjs.dev/getting-started/providers/gitlab) + +**Required environment variables:** +- `AUTH_EE_GITLAB_CLIENT_ID` +- `AUTH_EE_GITLAB_CLIENT_SECRET` + +Optional environment variables: +- `AUTH_EE_GITLAB_BASE_URL` - Base URL for GitLab instance (defaults to https://gitlab.com) + +### Google +--- + +[Auth.js Google Provider Docs](https://authjs.dev/getting-started/providers/google) + +**Required environment variables:** +- `AUTH_EE_GOOGLE_CLIENT_ID` +- `AUTH_EE_GOOGLE_CLIENT_SECRET` + +### GCP IAP +--- + +If you're running Sourcebot in an environment that blocks egress, make sure you allow the [IAP IP ranges](https://www.gstatic.com/ipranges/goog.json) + +Custom provider built to enable automatic Sourcebot account registration/login when using GCP IAP. + +**Required environment variables** +- `AUTH_EE_GCP_IAP_ENABLED` +- `AUTH_EE_GCP_IAP_AUDIENCE` + - This can be found by selecting the ⋮ icon next to the IAP-enabled backend service and pressing `Get JWT audience code` + +### Okta +--- + +[Auth.js Okta Provider Docs](https://authjs.dev/getting-started/providers/okta) + +**Required environment variables:** +- `AUTH_EE_OKTA_CLIENT_ID` +- `AUTH_EE_OKTA_CLIENT_SECRET` +- `AUTH_EE_OKTA_ISSUER` + +### Keycloak +--- + +[Auth.js Keycloak Provider Docs](https://authjs.dev/getting-started/providers/keycloak) + +**Required environment variables:** +- `AUTH_EE_KEYCLOAK_CLIENT_ID` +- `AUTH_EE_KEYCLOAK_CLIENT_SECRET` +- `AUTH_EE_KEYCLOAK_ISSUER` + +### Microsoft Entra ID + +[Auth.js Microsoft Entra ID Provider Docs](https://authjs.dev/getting-started/providers/microsoft-entra-id) + +**Required environment variables:** +- `AUTH_EE_MICROSOFT_ENTRA_ID_CLIENT_ID` +- `AUTH_EE_MICROSOFT_ENTRA_ID_CLIENT_SECRET` +- `AUTH_EE_MICROSOFT_ENTRA_ID_ISSUER` + +--- \ No newline at end of file diff --git a/docs/docs/configuration/environment-variables.mdx b/docs/docs/configuration/environment-variables.mdx index 86df22b4..9378b023 100644 --- a/docs/docs/configuration/environment-variables.mdx +++ b/docs/docs/configuration/environment-variables.mdx @@ -41,7 +41,6 @@ The following environment variables allow you to configure your Sourcebot deploy | Variable | Default | Description | | :------- | :------ | :---------- | | `SOURCEBOT_EE_AUDIT_LOGGING_ENABLED` | `true` |

Enables/disables audit logging

| -| `AUTH_EE_ENABLE_JIT_PROVISIONING` | `false` |

Enables/disables just-in-time user provisioning for SSO providers.

| | `AUTH_EE_GITHUB_BASE_URL` | `https://github.com` |

The base URL for GitHub Enterprise SSO authentication.

| | `AUTH_EE_GITHUB_CLIENT_ID` | `-` |

The client ID for GitHub Enterprise SSO authentication.

| | `AUTH_EE_GITHUB_CLIENT_SECRET` | `-` |

The client secret for GitHub Enterprise SSO authentication.

| diff --git a/docs/docs/connections/local-repos.mdx b/docs/docs/connections/local-repos.mdx index 58090886..9ba4b0d1 100644 --- a/docs/docs/connections/local-repos.mdx +++ b/docs/docs/connections/local-repos.mdx @@ -5,7 +5,7 @@ icon: folder import GenericGitHost from '/snippets/schemas/v3/genericGitHost.schema.mdx' -Sourcebot can sync code from generic git repositories stored in a local directory. This can be helpful in scenarios where you already have a large number of repos already checked out. Local repositories are treated as **read-only**, meaing Sourcebot will **not** `git fetch` new revisions. +Sourcebot can sync code from generic git repositories stored in a local directory. This can be helpful in scenarios where you already have a large number of repos already checked out. Local repositories are treated as **read-only**, meaning Sourcebot will **not** `git fetch` new revisions. ## Getting Started diff --git a/docs/docs/connections/overview.mdx b/docs/docs/connections/overview.mdx index e095b6d6..5165a2aa 100644 --- a/docs/docs/connections/overview.mdx +++ b/docs/docs/connections/overview.mdx @@ -6,12 +6,24 @@ sidebarTitle: Overview import SupportedPlatforms from '/snippets/platform-support.mdx' import ConfigSchema from '/snippets/schemas/v3/index.schema.mdx' -A **connection** in Sourcebot represents a link to a code host (such as GitHub, GitLab, Bitbucket, etc.). Each connection defines how Sourcebot should authenticate and interact with a particular host, and which repositories to sync and index from that host. Connections are uniquely identified by their name. +To index your code with Sourcebot, you must provide a configuration file. When running Sourcebot, this file must be mounted in a volume that is accessible to the container, with its +path specified in the `CONFIG_PATH` environment variable. For example: -A JSON configuration file is used to specify connections. For example: +```bash icon="terminal" Passing in a CONFIG_PATH to Sourcebot +docker run \ + -v $(pwd)/config.json:/data/config.json \ + -e CONFIG_PATH=/data/config.json \ + ... \ # other config + ghcr.io/sourcebot-dev/sourcebot:latest +``` -```json -// Specifies two connections: +## Config Schema + +The configuration file defines a set of **connections**. A connection in Sourcebot represents a link to a code host (such as GitHub, GitLab, Bitbucket, etc.). + +Each connection defines how Sourcebot should authenticate and interact with a particular host, and which repositories to sync and index from that host. Connections are uniquely identified by their name. + +```json wrap icon="code" Example config with two connections { "$schema": "https://raw.githubusercontent.com/sourcebot-dev/sourcebot/main/schemas/v3/index.json", "connections": { @@ -43,16 +55,7 @@ A JSON configuration file is used to specify connections. For example: Configuration files must conform to the [JSON schema](#schema-reference). -When running Sourcebot, this file must be mounted in a volume that is accessible to the container, with its path specified in the `CONFIG_PATH` environment variable. For example: - -```bash -docker run \ - -v $(pwd)/config.json:/data/config.json \ - -e CONFIG_PATH=/data/config.json \ - ... \ # other config - ghcr.io/sourcebot-dev/sourcebot:latest -``` - +## Config Syncing Sourcebot performs syncing in the background. Syncing consists of two steps: 1. Fetch the latest changes from `HEAD` (and any [additional branches](/docs/features/search/multi-branch-indexing)) from the code host. 2. Re-indexes the repository. @@ -70,10 +73,9 @@ On the home page, you can view the sync status of ongoing jobs: src="https://framerusercontent.com/assets/7YyxK8ctPEy9Rf68X2kIdMI.mp4" > -## Getting started ---- +## Platform Connection Guides -To get started, pick a platform below and follow the instructions to connect your code. +To learn more about how to create a connection for a specific code host, check out the guides below. diff --git a/docs/docs/overview.mdx b/docs/docs/overview.mdx index 624b044a..35bf8be3 100644 --- a/docs/docs/overview.mdx +++ b/docs/docs/overview.mdx @@ -2,7 +2,7 @@ title: "Overview" --- -Sourcebot is an open-source ([GitHub](https://github.com/sourcebot-dev/sourcebot)), self-hosted code search tool that is purpose built to help teams find and navigate code quickly, at scale. +[Sourcebot]((https://github.com/sourcebot-dev/sourcebot)) is an open-source, self-hosted code search tool. It allows you to search and navigate across millions of lines of code across several code host platforms. @@ -16,10 +16,10 @@ Sourcebot is an open-source ([GitHub](https://github.com/sourcebot-dev/sourcebot - **Full-featured search:** Fast indexed-based search with regex support, filters, branch search, boolean logic, and more. - - **Self-hosted:** Ships as a single [docker container](https://github.com/sourcebot-dev/sourcebot/pkgs/container/sourcebot) that can be deployed anywhere. + - **Self-hosted:** Deploy it in minutes using our official [docker container](https://github.com/sourcebot-dev/sourcebot/pkgs/container/sourcebot). All of your data stays on your machine. - **Modern design:** Light/Dark mode, vim keybindings, keyboard shortcuts, syntax highlighting, etc. - **Scalable:** Scales to millions of lines of code. - - **Open-source:** Core features are MIT licensed, no vendor lock-in. + - **Open-source:** Core features are MIT licensed. diff --git a/docs/images/invite_link_toggle.png b/docs/images/invite_link_toggle.png new file mode 100644 index 0000000000000000000000000000000000000000..979033e8261d57c19b786a1a9d88f59517cc543b GIT binary patch literal 178693 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

y)E=l)4gc5Zc|WQ3UdlR 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 QfnV1yTmD^b>iYEm0BzCRKAYR9 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

P%a2&+Rv%eigF z4)@$RL&}-CtVqlS%^g#|7F6j!uh%2s&o39?VmdGHYAkga!_C72LLtH^m73De>Dtb+ zH4K8muJZGSj1aZQ>a%;SokXFf*Uk-JLMYPc!Q5KsK9FILAxHx&?r-L$M1la`{-V8*E`{(pd?Z9xxw_YrIO>zLA!rjegxkk7GVVyu5$u$FPlGx5`Ysaq5b@BGadh4?oe-=mA@j^yYiJ`TBt-6>6#LZP(iT86$g}CNU z*`>m_D-`xjm#H)JyF%?><;tx?n zAtp#J{$y}rnh2g+ynu7-{NaK2s~N3=AyKrncTkpc!Hgj!2DONHT)`R2Ma@^5PM!Ll z^ZLGq*J!NmVi?Zz?$1&h3PKBmjG(%_{1f)gZ*YkGH)l`eE0^BN@UvGOADNBG_VOkV zvd(A9$8a34SDl*dzre|DYnu0GlLE|r%QBvXWl&NOd3|--^Q3`L$9&~-iz_Ktnc>w! zt?^6E*|h`Mn8q)L#+jKb8VH>zxC`11W{`Z?v9Po;WIIwJdTu&ps?+a6+T-&`VIUWm z%>1Z3e;J+g3eM2Kk>cyT9m(V zN>;1!aqU8baEjd8q8}}p7QO0ylQnPRTt+a7%ESl{=8KK zW-3xYkF!jOtD{2TXow92!BxRpD(k$HF-W6IV9qQb@IX0>pGQGPWa}B*QT}9+TB>Zb z^?!r_lPhJH^@3lQi@&h%W;u#ZkUV0!>rMe>cOXheHM}QT-S7jv@and^5-#>bo!w-C ztnb@gG(4=2dC=ps*DR-O54v!lWT{)85wyIceKINkX%^?3?56+`%MTAHYYZH1_Maoj z1dSlv;r@9^mdn=K4W_jNa0f;K!9V*>F0Bf3CEWIOffjQl?E_XMcn#v>y=kn~z6LpT z_;=8nl$&?w{>EocP|a`Xy>vVziNLw9O1^pUoas8|(flF>6>GYp*}HaRQY?zDwk^V{ z-Rl0~(nR*BRV%jge1X?~j8|x3z^iX4^=pgppWAz`?qZYf%xAA%wCeCkL>VCPx*Mry zJn(9}XenjfeXXee(11_-*qZe^_hJIZ&JrV7C)Z$e`X-n=-P(uERU66@p zxd(ji{jUQQSt^jg$X(-O*`>o)k|<(-=Me5TGq@kR)gK=8um`^bQ-W#hW8&FreU0hL z>$;{h!6B-pZ#r>MKlpWQ* zc3{5o<_Wm&beH5R;D~&4;;8lPt~<;bEuCg0&6`~UeXI$R>aEa@?CN8P!s&F!?#^#p z8$f@(+K{RdVUAX==k5B^@;s|4fA=sw@YO~|zTFJd>+V_(4`p8*&*5o6-&ZB0LW6=GNq)=`f(o!fs7NxK)SUkQiV z)nzkhwi7qQ##(uGTi+O{F~(tp>i2nZ;?=%3- zZ~igFh*7ya5Pju}D+u;QzbJ*~5FL1NO71RP>5_+@ar{%PPWY_aC;e;g;o^nf$JSsT z_A(k0bA9!8&_8mYdOa>H>JFhE9rn-wmFpmJ3Y3>o?>t>b3k>oJ!XZAz;H04%Aya}P zm40JSUj7wKyms-`vWf|=?qtJzZf@&JwxGkWplwM+Zqo4?8bn%PK5m{@alU$t8?%6g zOx6ZX;+eu`0_SS!vSjv?71qzrhXXvj%4JOs?dt%~b15m{P4^!OtZF=$CO8f&gWO_X z^ugGta5-^4^$p?zY;93?NXbH{y`jrX$Zc7Xj|25bAPz4RKdz1Ob*Ea<+4Gv}UVfOa z6qeSCKCPWuoDqCW({E5kkt$UmyDUwhUzmzG77ewW{S!MOvv5|ruI-aR_`!1eH9vdM z&=5r48y;i0&xvNZ_(ks6H{xy3`Zg`BB?_7S#QWp5ZqT}0c4CqbkDe{#Ttjdxuphf| zlWu?XKo7T=dz1U5cYV_JI6{61cMW{#(S%h(((KYXeFp}2VIgYq(dyYxQ9ML9KtG@B z#{R4W-+h)XemDrO@opM4UH{c5TD5oQm1-6-7SH(*L{!&19Vna%fxu&!Gt> zUjqgwUHzEku#ie>JgAu!hLsRG1$UUXz2Gis<=hq=nVoX!%h-Hm5Y22b@hgZy`r|eF zz(8c;;$zVaji=AbIKkhmF1|KQl(+{D)8V|V+syL3ytk9?v~8xmk=+!!pvvR5gDQ`2 zFN=DD25;?(4W3du4ek4P%|@KUjcy3~S;oN`_~1vnX);ESvccQ0q;7RxTC?WpnWMrt z2R(|uDtCKuJ>B+}_wPx@O8S&X#^wb(%&9Oekc#ZpiO*56Dfik_K<}_|&y<_}MZr-% zn5%wwPhGF>$ou5g@R~~siy>&I$%H(j_OX0*PyfF9pLMxJ$Y=}WE=4dCT-C#kR17tZ z>EmOrQgc+1Z5UWsgJu<=S+CHz8uZ@!ktv)$UD5+J4$rH9G{Ag;r3)nR8A|`95i+T~r*8t9@~A zZ#rHw_J!vg-8?}E`H(ln>jZSES81*A^Qo1c^tNTh@qI6>f^$gBn;oSuOr*! z5)zj0N|k7-oSAA_l#NXsZ||1=c=FSOshtlz=Xcuu`OzqST>fnGU%|I``H4+u-xD<0~FdA*HZDZe;!WH-H7pnRURd^0;+It5j`tf}Gk zC8ys`;;|9&#NJ)>)1uMf4$`%}sdG-hH^U7xIB%6$S|Vsie=Y)+aE#)N0Rsb(kdD{vFzhvj=`^jLRY6#`$}AoD3h&tQlE7xRXD zpHAHVQ}9O4h0zg&y_d>Rw{j{|>wxV{4JAud!C()5UDpFN{C$3m*y~I?-pI~Yq~RXh ztigg>N^vMx^r~MDyiAX>daY0HuFyN6*if$Tp{Yw5*_LtO2pQhoD1!TDuB1n^GwNoQ zcAr~U;dg%)E;H@B+S@OCKK1qsg)E=hInXg^o-`*D`+K4{7_x!4Jo*`{duH+#G5l>? zee#=(48s1eFP;=Yb?KxUUR*R(0JHTZ&b%0Gze3*qHE%u}@`;!e1nNGhk<8LLzX)}D z8lyKsYbmHzc=f|gmT)44!Y zu}buT=!3f0Vu7nCTw|{INZll+Q`-6*3e>B7^c7`JeYypLD{M^f=zeZ!JWomWkIM{Y zjv*&~B__XJoAj+)h}^K>`*Y75E$#ICzcJ4n`RoOw&HaMY6^^EnKP;~WQ869fmBcbm zpX|~HP2PlWmB_uC%yRgJfL|Rumehm(o(nJT@c+9%{J8<_QBXyY9PClWJgJCv$*5@7 z4vqSK`b-_&Js1-iKS`xOnmR*{4V(3ySV=x zN*l&l91^Y;et&{2;7^fJbS+T*EPXVqIAzSw#LGv9@at%1PuBQSUx2waU+yU_;l#CR z-%&9!-C>>@u#7-X2gr9DUR3;Dg>os1&&6sa+(EgeJ{(n%7m0}wqo~Qt98n^M1dW_= zuu(cw;%VQvUp$~xQRgI9r1GknUdLyM`6xrUfM$5KA-Gkk1oinNnb zir0#@sQmRXaY4CWrx86xL+x$9Am!>^-uW!sH1~Kxu*#Q1PX!%@%!bqAvv`$JzbdUg zB6x-Z>_rOK&1ppW=Z9)m>%(t_>AeK;pxcL`t6lCKtBu9$kxolq7Ejq$xu|1H*Z1iq znFe@2&yi~WP$c+(cxtxirBhnxlE&0kY)oojn@jNKPUd$=Pxkux_bC+CBW}-Sk<#0V zrQ{^cSQe7j-zSkrlw|iku-6^~O9sXIVg+|(LGwNGv8dN~*tAiJfO@aD9jI{SGsZVH zx%7VgPg%8v?vx87LV6lZ=AXVvvW@bI5HX#|aE1eGGigP7nG8nan zod8mFA^zi^$rJ&W5L=AW;Y$XT2ol&}2ys6gezSj1?N{&%i&4Zs%RTIJAlJ*(Jqm7?!s>=`6|e$zkH-;e4EKnn z3q9;7hfn44Mc+Rb9mz3yQ$bp~<>66Eq9O45FGxpkGgIQ2vH_P6k@8hX>Cd;GO2Z}n zP9*7drP;FijemQ(ts<}Qu4Wqp-U@^=ee%K%=7Unuwp*LHLj&#t!JP*_7Z#$xKa|{H z+-;b?u|IZN%j2re>oi#Rz+S@_t3O1hwkn{}G}h-ar%iTZbA2ppiOxs_gQ1>WwBb$_ zVYa>ufhSD^ed`K%+eP1T6>zv^U>7I!^iK96P%hiA3(X}9kHdpeIm9vLrE~I)rD-XU z=8-AZAxw9W{9kw=B-}p+YUH2BjLmvvyi!A;j>U~bv6$)=Rt&m3XgTeJ<6zIW`Xtt5 zQ2g95?(-NN`?HBlNI@)rrMrO0-`Kh2S;Zc?TKDZxn5PRpF7>~}K)Bk@VWN)2oDfrD z?haU)Hg$4BucSoQ~QHHd90kVYX>J?D$CtL7b8)c zaOPNIs`1^gW7-cT_J4gGo$p{ZZS*^SAxqjxVEvhsARWDj432v<*GjAj>J=f<#4|iu ze+3f|GEe$@Gn(CUf_QSSi6^yTF3P_p7W#TclU(_`89D(~O24w=-@A5y()U=zdk0fc17*I#{~8|BJy|*Me!p8A9U!qwMYfnf~AZ z|K$8El{}s0te(*`oT3tvq>_^&78=5anUjbVNoUS-UI;liCp&SLlM0(8Y_>Uz zIoU?ou<*TmUA~_`;QfPLE+!YWJ?@X=xEa zPi@zdZX9YEpUDVzm4DJe$~xsoiyj?1H0mSG()*ANN0#C0yO#E{6yBNf{DDwR=>tW(&9)}wf)DBW& zt6Xq5j#mky@XzNqj0u7RqFaYenx*$K`Tl^;xwJE9>)g5B)bW{m()~hEpcjnp_RM`l zeon+~6fa4ZEK9my=Hkw^v)Ac3D-$B1khG~p9D$)p56ZHuwm26L0mwB%%!2#+q9{1y zWMdeFLi{3s$qn#k^o5>`a;YO_d6s48Z=udOMLwM=O=;b|hW{D$nQbwAU>uJ(umPWg z8P2BYOL>MuNCNTF0osA0mWyZVkf0tIqGlP!Qm1c?Ufc(*OOYcb&xD(j$5QAt_v1R~ zL-96KOx7~0X6y(e-voo>t@T?7IbpTru(M1&54W?4;!vXY)s4Zglj{@?Q|e?LEC zZcKvGeXyH?M((dMsJwNG3 z_*^TqFq|_b=#AdsEvjD{87VZ8I^1tYln)C%;Fqi;5OKB3x&F66!b)O2mA!|K#| zH=RdfzLqbXZy7w=dt)Z2^|qVsJ;vDUn+Es1`+6>o=*Q>=1>Yd(#|(9-RekIEmOr&$ z*6_vKBi&W^qK_QF=N^c>wR7O)LgC@AAFeN2Ij%zyCSUqE6|o1Y3K7zuIjHnu%O$*Y z5I>fc`k6yXKRS_}$>L+}rOgp)!vqERvHsGMW|J;r2dT&lQ`yd}V0R4&^%%CeuM5M& z`p*XwG?hKE#aq`YOr=@*CJ|ja3<$kTKa)gRwZ5?vxKEitYqx)hK>hA;l)`eoz4@@t z^zBzU8Ot+XcS1QPgvvSBvsf#-A|Jgl?3CLgUe?%uaoqM{7%*o)<|dD!l*FfZbPJF& z<$@?fCBLZKe)W=Qwew(WEwUyKO>)cuL(Fi?E1gIK`{Ogv}ule+z4-`Db&DdNE#o9}#n z&9waiYSB(FU3)?n=^)d^87P?bihSctUySIB@}!E z%`^+Qk$zp6(5+Qxl6>XAyWF4>&0~JEpV{$$oJ@CxTK~LDbtGC>xrk4_WL=bU{+34~ zL!NlVnekcIxp7FN^#X3|c?)+;L+>a3gFl${!U=Rubyz*3`+@xC*(*?%&HH$0oha1g zIeuE7sFH^IBuck-IUhCu%CFX;Y)eGo{4`I_oUhFOd_Bx4wAc&dQ*RAy)7de|BYBi3 zo9z=u62Zj)lBaR*E1u#61as`ZH=aU-!)(9v9e$Nbz$W?MRwbK#3U}=?Ic4FX(^PaH z%#N!BjatHpM&-Y4l_b(Lh0QqaK<_n%`gA=+lL?Gl8F}vva7CoWrV0=LX4>)K26<-b zvhlVJg7U~|+;+IC3pqij-fqxwcb&Omj@Y|?a@@5+`16r{CEgb6BbIexqjBiQY*U({$F{P^sA=gs{XH}rsDDY({B=1_D;{f|Kjs@;`L3Vh=XPEwlV|j z_*b`=4vwdZMwo~^VOeuuxIduXJvnD|Qq}v*;uT0=|Kaum4Ii9u1m`x3!EIWjsxIS( z+Bo||ixFBxy%u3s9j$W7rGqN~!)7hz{92;sym8P;lu#Kr>R-}WG7`i#oJ~eZg4*}W z>k(l3h(^o?41IGtAi!EP4n~YqMnegqK{|4@ExPS%9ZNFm`YFz=mI^&`ux{*=jX#8< zR`lEUVw8@1IKCxb{t2@%h9$q@;TO!QAG3bEC;W&j2E5YdQ54m>!6~)WB|WlZEhUZ( z{4Ye~a6kVgFnb`)1zfKj+Rho+r4U-#C%nzOI>3l@(11F(1SC~hKX^C$?(V((qkLV0 z9F~i-I76oBVFr9Efu1_*qj{Lrw4dJI%rz_ti!`dr-iE-!1KiYGUD`0sryFPE5tba~ zP`8-L|K5ycG22cd_6F7tRVZR?)~by)`N%`FmSEvSC#-!ofjOE-i9ns{VQ$Mv4z8fy zYZgdvhIw4zEW;YT{p$zsmQSTHBF_4BGE{3EYF!jwT}~)0#R2v00MXdSt|ydeJk?#2 zv+VJ+mq>IqnDXusXUx0*q^a1K-)2OeubCFsLYq7Z{;#il-I*bNU$Zd(uVXx02S}SG)2ycirvS* z$q$o}^7h4T`-+8a2w1F1%D6dDH|qJAt+RPg!;X4@X6d}JKc%;B_I$IfXtI&wnEkern^^?5K`{N%npSnPus3#;3chpQrTW(~oIuSH1 zN#Mg7^qK!4^*mX=o}S*&Vsx!v4J7D!cGjXs&5G+;6$3_sx@Rse^>b%`!egLNby(Cw zMx?4%4kwM?k#049blBI?6KvidlN2b({gS<6xAAEBFJb)qV?sb$&x5i0)}FtEjo-h5 zFLZpv5(0|9jS;GBy%^vTKCM$OtN%ndDCuH^TC^L32iwk>x~U&w>It+%BramgpkTs5Wbg3M!6SE7o9qlnGdJ9UGCvcfD}R1i*)K}fsutxp0)vog6CL&-o-U%73oYH;W8&B zjANfbnp=7p=#rX-6al_K_VKR-VysW?^W%O_33(^{KqYu$ZEj>mTLZoDNd_*wa@AoA zlxKo%%^RefsYdcSWw{XgRCi|>B6x<J~U=Lgv-wpQdLJ{ds?)y%k@ z;`H?C3}z3gh45m(CO!qfEUjeZFm(BsHty7J9d2@UYIN<6v@ z?SmsLao7Cn%W!O^{LAhJtU4!oaL+V|1Xvu@92DR6I&%R(-3nkcmHX8{1l%vL=*Qvq5wI=6Lf)ZQB7^XHTc5U01lF9@s_OMTVP$5byMC!0fBN&G6nY9-C z*cb66zwXK&n1nYz-h}3URtLRKUb#!G!0W$coM=gP|JyK^9A59pavg&FyBebWao;OP zr;yh2u(vGbmo2P$j>&MnNthJ8BG2SOv1S*Mi2Ds$mwU0u<8XR1@1)PUPehs; zjGomj@-w!Azcm~U$Ar4Tn!F#>H4HtB%VLkH-c0m2PmtZq`Jx)Es#o~B%BASJ9K*8t z(@+leF!lp-WK;dsH5s-(vqnu8*vJF{7T>;*D3%;r!79#u2agnGD&m7ay{5 zHDB=(qeXz_RqFZ^(=nbQBR}#W$i?sTbM`sAb|H7Q>rNSngNRa@#{STX{aZR?xTU(c z$bWLWj6?}>(bhtqgwMx?jIiDM?qP2PWN6DrHV(SC37y^o88*;&$nz2KLfjB>}K27>mbiM zh0!*D$Qi|Wp3k`>{r^}1_`P)eS92YmNB6v5?(6wTjA=TfGpNj=EI{%h7Nf_BI5hxv z&8;1AnX@ClEr@kAvGl&CSf05qq`=1veCF5OO|_EOr7Rq06UrmN%Cs z9LBJ__=c32_E&f+S8e~u>Efadal+Kov}xP&^}sQ?u)Woj<6l1WdK_y;M*Xro;%Xj9 zq;PkLIv3wu%ehdqs-H2Ndh#PS`nv4z3mITxdep5MsSn@Xq_P-wOVV^si}&+5oTm!FAN*TfwHKJpyN(9)9t=yr$Y)K}{MR zawZ-zXRsfhCJ&e&GrIM&u*1HS=Mz=dVxE$*sgPx;Rx8NRmWu3#CIrcp8VPH3o7-Ny9_+KOXT$txh$H@373kTGKqZ7^%*6Go25OyvkQ?%o z(ZfD)QZMD2SoaS8%j3r!>q62L)%k{R;~JQH+R zFtF|dYrqIWF(8bEm$_=F)+pJt`$YFX=ByPDGj18MF-nlOtzgA*TjgAF^3cNW6T@JR z9SG{3CB=LU_1ASFRsu)Z0^vK1I!T93Mzq#l0cC4bpgcpPru)!te{d&0+NIM1OyMri z9rpyLF8S~U{at;QJV5K|(a6h|V~Bv&6j_MVt?0#r%GShw8+gw1uR~tmo=yqbibCnn z?0X_Xy(B!E%xm+Tr^qMBg;B0kMQ)57{_D`_%k$*!7W0W-Ijxp{hIuQv>l^NQe>>PI zhdJIdR=ad~@qMR}=>31dBj2ADeMFy$Xus^3zMU6ScI?s~lXm+({tYy{#JP+ii!&xc z*V?(lT3Ds-Kar0)9`2zMtsG`Y!7{#aVgElNiiZv)l*2DZq&et_P{XD`jTeuoW@#{a zw`ZP@Akvm>=~UW9I-Vc3HWu74Ze+344-7RL<3<_0RQ~4g4>`@8f14%ok|2bZdWZY& z>=gie^HG!GpbU~5lftV9I5|CG%nb1%!u`yV=~cH(BluWCc-iRga4GYel<7||j92H*pVKd_|LHlO^A5NGAfvm8pEJbVn?m(Pn%4v*v@ zzEi%eMksn)tW^!yT7VkPjNi=W)`EVYF7)#kbQtwXmQJ;}|i(61ii2#Sh#P|)wMw3XDV zueFt6hwzD6@w(39zyW}?V!-yJ5x*F(F%S3{!KIwL8!qmWB)bA9&~~A7FGT%$p9HIu z_#iZ@TPIOeDbo|_cmyd^m!NFG!#RHx!(G{Vn-8`m91TXa0qUe-Y-f`QRC}f#HCeN$ zb7Q|5VXF^L3D-|Aq`)S*4Pq2r)Obl0ozF$8!W-kN77PT{zHg07uzTSuDY8`2c=&)P zv|)&2QpNrS@t;sxPj;H$TD4(kKUf= zDZ#IwWa>VmO$IgkCuVcg-Y1wy2kaa);GDwmF_;ac-8=fcf6Ddkli5I4`%0sCn|>-r z`aN%F2Pe!sa2Q+L=+MfQEzh#9UPgU}wnWA2cJQ%^^Ttshp;$>EXS34Qsm04KbyVaF z)84-QScJks`z4LrtVcdxct7mQL@9E5qBQA$k~KGAMWb?A!z+Fo4J;8HYtWpe>FCJj zWXyf#XB9BEQ(>5HV^imSp%8i2UWza6l?^Al3pum^z4j0xK?%F93YKpSf(0_?Ootlh z-(mRH|M-pcSEf|_2FOjgAB1)^*vTF0dNi0bg{K4*cX7YuA@zWy=GrpUW+b)?I2W0? zNs@q{<}o|Ziz{05KVjFg5A@-J5c0xzS~SIv<6&R{G8#~(CoBv=_uB`ASQxtO2G@(? zgQxk6n zsl)fU6bwc7ATf?9e)SyH!%({%v#4u#fh=x1UvM7$M_U4E(qgVm2K4h+XM!|4GBjK5 zZP=RHcXr;U>94tUn%=MH>HYrI;+b#l zE9Y)yzymAd!?P*^vjGCFfRH*z>#*TjIUO^SBTjLN8zzwF(Wc%yr1{5#iexdj$*cj` z7vCCDPuk=DxEBeFag0x3(~EXRRx9=OfDKSEIl6w*DxNHVPvFX-CAQr!_dXf|64A49pb*VeQZ|dXIf78)@g~8xah^Er-JVUX19+?-?b|EJ1N>o zrmYSvgVr-e6|z`zLJ^S*lnEF6z{UcJBNHp(>ny=!U(3-Mx<& z_kpFP&psNxIePPl&2k6VJccP))#{5Wi*-DPeGaZ#ta@k~=Xt0apPhvGnQs{x@t^lE zF?Fd@*p;72Fid6ILyp~--lX)*KyLt4HFP}&fKX^<;J8a~FE&OshADuRY?WW9jvp?$ z?Y8kuTgT!v!o#O)EC@1gk zb5bYtGdk#pf=+{ZSIVLuIz_O`+X^mCm8DpL<;hGBLByuM$OX=&--Ap6t2Qur##dU5 zo{6t>vegySe9Eu`zU7U5;_2I&u#I^&X(V?V4+!>@r&y~U4IR5 zwI{)&I$+SQtyFlMA*E^U7bR}S#ApBmx)}wZbQ@l=F-N591OgmHk-O@6Fx*oY_1KRl4Z1 z$HKsa>%MvV3RLOaez2y?+i$pMn?HV`<;!7Bx4X8uXE7td4V?9&HyP*`vX^V!R$|s8Gt;%FdcQXY z>1=)d9x#}O<#Q|lnvoYKyZby0>rD=XxS1qS<1+3zGv__bh+t}%fWYu5p;M_S*f$#pp-^U<(3GL>zw1=lqY;p)0u0yiyENs7D3uoB#E?Phwp2-k z8!Gl8NRh)_W?M?E9)&V|2-sRSRa|2X-5jTm59^jJGyO3uF*oPe7|^o5>|dlkPtz*v zhkihi4FaB`B%k{yuR~&t$R5c|IUw2_sY=ow!;dN~pQ2x+ABVCo!=6a*g}<%ysqv4s zWHacWz1_h8wx=QwRdwkICK~Q@%Gxv6M$qer2IkzJkdy&0$V))(b39U^wK_GLO#S2J z#rY)%OZIQxNYB|*?5UeN37Ly(%0>5P9zD;_qgcTG72_epo&C-2YZtsht)O5TBLBfza&iD9kkD@_hs#O)_K05rJd%U}&-`cvWp`KM972bu9gw5G#xL_yO%PA=l-+$>{CV` zeVN3RPtK5)ry7)_xe5CPO9fgnP0JNUUYWi$%OLT--ix7?k&?CNg(z0MET4OpF0$0Q ztBwoGLwiD<_Ec6(2!7fObS=d04IhFjvC1g#B*;m{DYFS&NnMAjzu1oi+3Yz+(ZcM_!N^@^K>Cx;13F4VG3W_SL4c$quKNdFiW<_Gbs`sMZX6 z09A!jff#v^Vnp7D*$9`ZE3@2KYZUm4Jf&WqutoOAn)J7z!2!lH+gQcu@1?Q!)>FS5 z1ve~Ha{QoPgR6jTqx!jfk}6bn_V@fR!&S zf7~{=vMpQDik|av%T=o}MXfo7x6y!Ty99bvW-%iwz@Mi7?GIqen8ydx1 z3xJrWKQ3pSa0xRfeCng(Mu(KZI3fC1W-=7GK2AX^DXRIX;y5;ip2WD27RP3;^X#wV z9EaK+zTiKZ9?$;QjO)FZ%;iVtc9_l^%7Cf9;9#1&Iq1~I869i69*sHCpca3!@Q1Xd zJ0tT|bX0yPDYdI5DTqEBeDEoEGi#5lq^s^^=g>B58L~E)CBkOKj54KDjH$Gm8r57}Pl4!`DcT!cT@<0|&PeXYIAm*IVCFg+Ti#iT{+aNQcs z1vOBJn4ADytV~HK=;Gx^hc9`y1St}}jOn{6_??KMjJP<}YWeK5EvB$Hppa)(=i`3!XRn4_p|tzIA*V z)y5AEHPMu3%?8XGinMWWl^3Qj8K0a$J(XkS-W^ibrP>8fp~nBU>x*mW-mP55m%N5h zrQwI;prG3DcX-IbrIVYbgPdikvvpe7=LicT#Fs7);bWb#J}-IUAhlBkJ89}l4Fv{~ zM9@r3pt%CUAB8Bxg*ulWB4AiDU~x<5Gh{Qf9=uH`1E4KuoOXm?;XRr?1NqS zg=tx?XmxRM+nbMh(Zr}w44QI@F>nc4$yVfoSFc`(qHu=*Z!F_y@+BT<=4LTAOi|#p z0$Wu_Y&coM#0)?b;H+^He~7tT)RKRHFD05xLWZ`>#xZa22HM)pA9S`?h}>_`fsvpTm%loNc)|?x!`i9F^$S+^5t~~G3%iFIfJ*nVwfrEn9!bKo5~MKm zqL~-D1zmpigufC$H*bSKHY%3yF7hj@mAGy7!L!WB26&Bq>cO;rqqgUbNy08hdr|WA zTi~!fcAMd!-}Fa8n8EUZuO+0rY#jhyNFM4nR17@~yI{qD2mfT4dQ&ule=+{~%+`ou zaNCHHFY}E8`EZJLN>*-v_%^RV?Xu0H=1&S-lLJ?=^j&lA)tP60HDJ1MHb}f2COHd?a(>rz@oJKvpXXHkHf!N4odn$&-Z^VS*Il3Dgp7Cwyy(nP-5qXoI}=C^S%s zIEy9sD2lNf_BT5N9!Bs}<|$5ItYhp;3aZbN6A+-J6s(k+%vpZWoS;;G*(S7Mlxghr zkbP&kWDeZVv&8fKQi62HhPo>Rn4a3|jg{)ogpZACZ+N9jg(A(h|43vXwoDfnlb^wey^GxuJS?sZ#aWng44d_kbIU-M zDonW`M4h8Zkxd25*q1^%^_0O<1~Y;4;!C%3sDDZnoq=gcXfe!A9N~jg_k&dG0S`is5|&Fe3UKu@yv>pv2qsAO)|vsAi51=0RY{akDhE;XT)lyW?do!F-SZpi`!ZiF-@`w@o?GU5)Bxu^bZP_&b(%G^5A3$S zvzuqUz|YvYg5%5QLa!PPr`VesZx3IR8f3-xJG+9b= zGMJ|7VORQ*>@H0F;++6Sx3t5QOFh>#Lar)j-u660rdWR%HN6hl389d`6*&P1rJ90QL}4jhmiY3UlXd>o>qQM1Fp zlKJ=#Eq(ZnK~UDVJbe3clMTP>{w;>v)Ws=Cj{>)4bX%1dwWz+#wP>;O@(V3SA$9(~ zh*9<%uAIX~;Iea3x4pD%lrSf*5qo<>ce4pzFwf?P-)zS>imdPL%Y3IF185L-dG8lp z%G!sdFc}Bphot39C@p>GtWdb$w#5;$$J!0jc-a=(c`ZeXQ@YEwLz)}H{I?uGf5dH)(e(Xad$dE)Od+92>(GI zcs=^U^)e11Qbc3rJe0IR7W{6&J9D<3_7xrFd#Al1e0ASH?H};+*LjJH1sg?>!@xws zH9L9WwYJEpgvTww)v!!nee8oNbDx^C9mZ9;-tL|z$(W&kxJRT%H?9tH({d!U79>s@ zXsX@Scq%I+G2(RROGiPq?dLV?P*48+W|67QLiNh=0mnCGh5bj>E8D+4D+@h8Ga==) zy!1#xl){g7TPAMt@UYVOn`xTFt%FSG(66yT!jsm*iUvzBMJgitjnryj(8rOI zL7H=4(fgP1Si3fikxmDhX;szuoK2Ahjkd%+GfX0rt6gc6&vlicSb2TVkR1q4dx!{! zJc;APs6Jr^zleUH@d@aN1#@^|qrKp}FxSLbrHuYv_O*7oLXYY^PvzC6dJkWtwk>Af zS=zQVo!SaHb0cG2F{07O;-gP$E7Z_j$Q3!$fRWcx)7 zp4mQvn1)Qg_)< zjs&_aDmH^&;VMt?9ckgW+F8CNrNd09I zgW$F<>f1;LRXWp@`x9wD{~SloktZvimu1xd|006Lqrz-7Ny)79jMNY`>d@Q0pdE>l zemnS|PjPl8V>EB8y99q!5G}p6S38lhe8i`IM^26umEbwYN<9JQZOyB8<2Sg2J#YSl zM(taZ(#$h+=YF4T{iHeotkzMIwWUHNS}JiHAIDB1-d;&;W$R_893bL5W7#i8_62vr zh5cC17-mipm2qrd`lbD7Yp9*#1-EPWkl*6jF{`p-9|-r9QTt-S8V*q)9mYLoPi(3m z9MP>Kd}VrY@*_`2Y8S&ty~ku)fSJI8NqOQa_sGO{biTM z0YM(aD2sMJ1grXe4j^QgT>4h&WnJ*0#}eis^FTS;JD9U%gp%TgMF>{8wwYcoHVNT} z|IK1iVtprt|k zTfwn`*L>eOmekT$aQjq5NXv1FaAu^6(&`;tvMyOyXp}Ns1H7r>TIdCU-T>Qb&|S>t zO<1shCHYBJ-4Nq^C_L}829mUZEUGuuLPi(0xlp(K+O8?dAzZ(H_LFJDrFd zWZ_N2wM>ZxC)dtGkqMiKw54t0pR!P>>~E1qhHWz9F-M(9kCf$THlHLj-)jd#{vQh< zNBOh{5PAMlIN=F%4DM$1Ug`+e=8|y%(SaNvN z?Gj4S+RX&tw@VtCOl01`mV+4KNHFb5{;fEs7z;SW$u4<-UJj#cG*AWwu-3t>%kvo- z%AkJHkY{N$Hyj6Nmn~o};r;s&DMYR_xjGl$+FW^+e`>ur^(00yOyp}#b@38~V{QhxSb_wV zlFg}_-L^!Fc5fI;SOzv^7;h7{5Ug>4Vcj6>t?=S}HOSA%Vr+XM zzm57qswoDC>nB4zb`u(YJ3~vRW9{X?L?prLAvf?6lH?0zxF4PDCE<*Ba_6EFRCxfZ z&LM@|jcp(?!YsDK9ixn_-B_i(_H*By8QIlakMvZz!B?CX_n-CA=xP#Bd>MYoML3)J zMLT`&(&1Q>?t#};gV|?ayid$>uTYd0nR&7Ym2bkKn;9+Msk-!5N0IO2y)NFwXS|AjV3RV&yD$=9B*rjTd2j4i|GT47M@{od z|LNZM<*$|6)$b5E^N*3ngcY+e

UV+A&~?*(zw_mR#_4DqHt><{jv-0_dZ=|K(u! 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 Vhg+8cA8*omd|TGx=$^ix4Rk3ABC0 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 { } export const getSeats = (): number => { - const licenseKey = getLicenseKey(); +const licenseKey = getLicenseKey(); return licenseKey?.seats ?? SOURCEBOT_UNLIMITED_SEATS; } diff --git a/packages/web/src/actions.ts b/packages/web/src/actions.ts index e9adbc2a..7bdd4a5a 100644 --- a/packages/web/src/actions.ts +++ b/packages/web/src/actions.ts @@ -2,7 +2,7 @@ import { env } from "@/env.mjs"; import { ErrorCode } from "@/lib/errorCodes"; -import { notAuthenticated, notFound, secretAlreadyExists, ServiceError, ServiceErrorException, unexpectedError } from "@/lib/serviceError"; +import { notAuthenticated, notFound, orgNotFound, secretAlreadyExists, ServiceError, ServiceErrorException, unexpectedError } from "@/lib/serviceError"; import { CodeHostType, isServiceError } from "@/lib/utils"; import { prisma } from "@/prisma"; import { render } from "@react-email/components"; @@ -28,15 +28,16 @@ import InviteUserEmail from "./emails/inviteUserEmail"; import { MOBILE_UNSUPPORTED_SPLASH_SCREEN_DISMISSED_COOKIE_NAME, SINGLE_TENANT_ORG_DOMAIN, SOURCEBOT_GUEST_USER_ID, SOURCEBOT_SUPPORT_EMAIL } from "./lib/constants"; import { orgDomainSchema, orgNameSchema, repositoryQuerySchema } from "./lib/schemas"; import { TenancyMode, ApiKeyPayload } from "./lib/types"; -import { decrementOrgSeatCount, getSubscriptionForOrg, incrementOrgSeatCount } from "./ee/features/billing/serverUtils"; +import { decrementOrgSeatCount, getSubscriptionForOrg } from "./ee/features/billing/serverUtils"; import { bitbucketSchema } from "@sourcebot/schemas/v3/bitbucket.schema"; import { genericGitHostSchema } from "@sourcebot/schemas/v3/genericGitHost.schema"; -import { getPlan, getSeats, hasEntitlement, SOURCEBOT_UNLIMITED_SEATS } from "@sourcebot/shared"; +import { getPlan, hasEntitlement } from "@sourcebot/shared"; import { getPublicAccessStatus } from "./ee/features/publicAccess/publicAccess"; import JoinRequestSubmittedEmail from "./emails/joinRequestSubmittedEmail"; import JoinRequestApprovedEmail from "./emails/joinRequestApprovedEmail"; import { createLogger } from "@sourcebot/logger"; import { getAuditService } from "@/ee/features/audit/factory"; +import { addUserToOrganization, orgHasAvailability } from "@/lib/authUtils"; const ajv = new Ajv({ validateFormats: false, @@ -116,35 +117,6 @@ export const withAuth = async (fn: (userId: string, apiKeyHash: string | unde return fn(session.user.id, undefined); } -export const orgHasAvailability = async (domain: string): Promise => { - const org = await prisma.org.findUnique({ - where: { - domain, - }, - }); - - if (!org) { - return false; - } - const members = await prisma.userToOrg.findMany({ - where: { - orgId: org.id, - role: { - not: OrgRole.GUEST, - }, - }, - }); - - const maxSeats = getSeats(); - const memberCount = members.length; - - if (maxSeats !== SOURCEBOT_UNLIMITED_SEATS && memberCount >= maxSeats) { - return false; - } - - return true; -} - export const withOrgMembership = async (userId: string, domain: string, fn: (params: { userRole: OrgRole, org: Org }) => Promise, minRequiredRole: OrgRole = OrgRole.MEMBER) => { const org = await prisma.org.findUnique({ where: { @@ -1169,6 +1141,13 @@ export const cancelInvite = async (inviteId: string, domain: string): Promise<{ }, /* minRequiredRole = */ OrgRole.OWNER) )); +export const getOrgInviteId = async (domain: string) => sew(() => + withAuth(async (userId) => + withOrgMembership(userId, domain, async ({ org }) => { + return org.inviteLinkId; + }, /* minRequiredRole = */ OrgRole.OWNER) + )); + export const getMe = async () => sew(() => withAuth(async (userId) => { const user = await prisma.user.findUnique({ @@ -1208,7 +1187,7 @@ export const redeemInvite = async (inviteId: string): Promise<{ success: boolean if (isServiceError(user)) { return user; } - + const invite = await prisma.invite.findUnique({ where: { id: inviteId, @@ -1257,73 +1236,10 @@ export const redeemInvite = async (inviteId: string): Promise<{ success: boolean return notFound(); } - const res = await prisma.$transaction(async (tx) => { - await tx.userToOrg.create({ - data: { - userId: user.id, - orgId: invite.orgId, - role: "MEMBER", - } - }); - - await tx.user.update({ - where: { - id: user.id, - }, - data: { - pendingApproval: false, - } - }); - - await tx.invite.delete({ - where: { - id: invite.id, - } - }); - - // Delete the account request if it exists since we've redeemed an invite - const accountRequest = await tx.accountRequest.findUnique({ - where: { - requestedById_orgId: { - requestedById: user.id, - orgId: invite.orgId, - } - }, - }); - - if (accountRequest) { - logger.info(`Deleting account request ${accountRequest.id} for user ${user.id} since they've redeemed an invite`); - await auditService.createAudit({ - action: "user.join_request_removed", - actor: { - id: user.id, - type: "user" - }, - orgId: invite.org.id, - target: { - id: accountRequest.id, - type: "account_join_request" - } - }); - - await tx.accountRequest.delete({ - where: { - id: accountRequest.id, - } - }); - } - - if (IS_BILLING_ENABLED) { - const result = await incrementOrgSeatCount(invite.orgId, tx); - if (isServiceError(result)) { - throw result; - } - } - }); - - if (isServiceError(res)) { - await failAuditCallback(res.message); - return res; + const addUserToOrgRes = await addUserToOrganization(user.id, invite.orgId); + if (isServiceError(addUserToOrgRes)) { + await failAuditCallback(addUserToOrgRes.message); + return addUserToOrgRes; } await auditService.createAudit({ @@ -1519,19 +1435,6 @@ export const removeMemberFromOrg = async (memberId: string, domain: string): Pro } }); - // TODO: The fact that pendingApproval is set in the user is a bit weird here, since it will prevent approval from working in the multi-tenant case. - // We need to set pendingApproval to be true here though so that if the user tries to sign into the deployment again it will send another request. Without - // this, the user will never be able to request to join the org again. - // TODO(multitenant): Handle this better - await tx.user.update({ - where: { - id: memberId, - }, - data: { - pendingApproval: true, - } - }); - if (IS_BILLING_ENABLED) { const result = await decrementOrgSeatCount(org.id, tx); if (isServiceError(result)) { @@ -1677,14 +1580,6 @@ export const createAccountRequest = async (userId: string, domain: string) => se return notFound("User not found"); } - if (user.pendingApproval == false) { - logger.warn(`User ${userId} isn't pending approval. Skipping account request creation.`); - return { - success: true, - existingRequest: false, - } - } - const org = await prisma.org.findUnique({ where: { domain, @@ -1776,6 +1671,64 @@ export const createAccountRequest = async (userId: string, domain: string) => se } }); +export const getMemberApprovalRequired = async (domain: string): Promise => sew(async () => { + const org = await prisma.org.findUnique({ + where: { + domain, + }, + }); + + if (!org) { + return orgNotFound(); + } + + return org.memberApprovalRequired; +}); + +export const setMemberApprovalRequired = async (domain: string, required: boolean): Promise<{ success: boolean } | ServiceError> => sew(async () => + withAuth(async (userId) => + withOrgMembership(userId, domain, async ({ org }) => { + await prisma.org.update({ + where: { id: org.id }, + data: { memberApprovalRequired: required }, + }); + + return { + success: true, + }; + }, /* minRequiredRole = */ OrgRole.OWNER) + ) +); + +export const getInviteLinkEnabled = async (domain: string): Promise => sew(async () => { + const org = await prisma.org.findUnique({ + where: { + domain, + }, + }); + + if (!org) { + return orgNotFound(); + } + + return org.inviteLinkEnabled; +}); + +export const setInviteLinkEnabled = async (domain: string, enabled: boolean): Promise<{ success: boolean } | ServiceError> => sew(async () => + withAuth(async (userId) => + withOrgMembership(userId, domain, async ({ org }) => { + await prisma.org.update({ + where: { id: org.id }, + data: { inviteLinkEnabled: enabled }, + }); + + return { + success: true, + }; + }, /* minRequiredRole = */ OrgRole.OWNER) + ) +); + export const approveAccountRequest = async (requestId: string, domain: string) => sew(async () => withAuth(async (userId) => withOrgMembership(userId, domain, async ({ org }) => { @@ -1784,7 +1737,7 @@ export const approveAccountRequest = async (requestId: string, domain: string) = action: "user.join_request_approve_failed", actor: { id: userId, - type: "user" + type: "user" }, target: { id: requestId, @@ -1811,60 +1764,10 @@ export const approveAccountRequest = async (requestId: string, domain: string) = return notFound(); } - const hasAvailability = await orgHasAvailability(domain); - if (!hasAvailability) { - await failAuditCallback("Organization is at max capacity"); - return { - statusCode: StatusCodes.BAD_REQUEST, - errorCode: ErrorCode.ORG_SEAT_COUNT_REACHED, - message: "Organization is at max capacity", - } satisfies ServiceError; - } - - const res = await prisma.$transaction(async (tx) => { - await tx.user.update({ - where: { - id: request.requestedById, - }, - data: { - pendingApproval: false, - }, - }); - - await tx.userToOrg.create({ - data: { - userId: request.requestedById, - orgId: org.id, - role: "MEMBER", - }, - }); - - await tx.accountRequest.delete({ - where: { - id: requestId, - }, - }); - - const invites = await tx.invite.findMany({ - where: { - recipientEmail: request.requestedBy.email!, - orgId: org.id, - }, - }) - - for (const invite of invites) { - logger.info(`Account request approved. Deleting invite ${invite.id} for ${request.requestedBy.email}`); - await tx.invite.delete({ - where: { - id: invite.id, - }, - }); - } - }); - - if (isServiceError(res)) { - await failAuditCallback(res.message); - return res; + const addUserToOrgRes = await addUserToOrganization(request.requestedById, org.id); + if (isServiceError(addUserToOrgRes)) { + await failAuditCallback(addUserToOrgRes.message); + return addUserToOrgRes; } // Send approval email to the user @@ -1936,19 +1839,6 @@ export const rejectAccountRequest = async (requestId: string, domain: string) => }, }); - await auditService.createAudit({ - action: "user.join_request_removed", - actor: { - id: userId, - type: "user" - }, - orgId: org.id, - target: { - id: requestId, - type: "account_join_request" - } - }); - return { success: true, } diff --git a/packages/web/src/app/[domain]/components/onboardGuard.tsx b/packages/web/src/app/[domain]/components/onboardGuard.tsx index a1c5aca3..d9de6514 100644 --- a/packages/web/src/app/[domain]/components/onboardGuard.tsx +++ b/packages/web/src/app/[domain]/components/onboardGuard.tsx @@ -1,7 +1,6 @@ 'use client'; import { Redirect } from "@/app/components/redirect"; -import { useDomain } from "@/hooks/useDomain"; import { usePathname } from "next/navigation"; import { useMemo } from "react"; @@ -10,20 +9,19 @@ interface OnboardGuardProps { } export const OnboardGuard = ({ children }: OnboardGuardProps) => { - const domain = useDomain(); const pathname = usePathname(); const content = useMemo(() => { if (!pathname.endsWith('/onboard')) { return ( ) } else { return children; } - }, [domain, children, pathname]); + }, [children, pathname]); return content; } diff --git a/packages/web/src/app/[domain]/components/pendingApproval.tsx b/packages/web/src/app/[domain]/components/pendingApproval.tsx index 1910a84a..4ffceb20 100644 --- a/packages/web/src/app/[domain]/components/pendingApproval.tsx +++ b/packages/web/src/app/[domain]/components/pendingApproval.tsx @@ -1,15 +1,8 @@ -import { Card, CardContent, CardDescription, CardHeader, CardTitle } from "@/components/ui/card" -import { HelpCircle } from "lucide-react" import { LogoutEscapeHatch } from "@/app/components/logoutEscapeHatch" import { SourcebotLogo } from "@/app/components/sourcebotLogo" import { auth } from "@/auth" -import { ResubmitAccountRequestButton } from "./resubmitAccountRequestButton" -interface PendingApprovalCardProps { - domain: string -} - -export const PendingApprovalCard = async ({ domain }: PendingApprovalCardProps) => { +export const PendingApprovalCard = async () => { const session = await auth() const userId = session?.user?.id @@ -18,42 +11,45 @@ export const PendingApprovalCard = async ({ domain }: PendingApprovalCardProps) } return ( -

+
- -
- - - - Pending Approval - - Your request to join the organization is being reviewed - - - - -
- + +
+ ) diff --git a/packages/web/src/app/[domain]/components/settingsDropdown.tsx b/packages/web/src/app/[domain]/components/settingsDropdown.tsx index 242dadad..4f3350f6 100644 --- a/packages/web/src/app/[domain]/components/settingsDropdown.tsx +++ b/packages/web/src/app/[domain]/components/settingsDropdown.tsx @@ -83,8 +83,8 @@ export const SettingsDropdown = ({ {session?.user ? ( -
- +
+ @@ -92,7 +92,7 @@ export const SettingsDropdown = ({ {session.user.name && session.user.name.length > 0 ? session.user.name[0] : 'U'} -

{session.user.email ?? "User"}

+

{session.user.email ?? "User"}

{ diff --git a/packages/web/src/app/[domain]/components/resubmitAccountRequestButton.tsx b/packages/web/src/app/[domain]/components/submitAccountRequestButton.tsx similarity index 73% rename from packages/web/src/app/[domain]/components/resubmitAccountRequestButton.tsx rename to packages/web/src/app/[domain]/components/submitAccountRequestButton.tsx index ec4df43e..291e5f50 100644 --- a/packages/web/src/app/[domain]/components/resubmitAccountRequestButton.tsx +++ b/packages/web/src/app/[domain]/components/submitAccountRequestButton.tsx @@ -6,14 +6,16 @@ import { useState } from "react" import { useToast } from "@/components/hooks/use-toast" import { createAccountRequest } from "@/actions" import { isServiceError } from "@/lib/utils" +import { useRouter } from "next/navigation" -interface ResubmitButtonProps { +interface SubmitButtonProps { domain: string userId: string } -export function ResubmitAccountRequestButton({ domain, userId }: ResubmitButtonProps) { +export function SubmitAccountRequestButton({ domain, userId }: SubmitButtonProps) { const { toast } = useToast() + const router = useRouter() const [isSubmitting, setIsSubmitting] = useState(false) const handleSubmit = async () => { @@ -28,19 +30,20 @@ export function ResubmitAccountRequestButton({ domain, userId }: ResubmitButtonP }) } else { toast({ - title: "Request Resubmitted", - description: "Your request to join the organization has been resubmitted.", + title: "Request Submitted", + description: "Your request to join the organization has been submitted.", variant: "default", }) } + // Refresh the page to trigger layout re-render and show PendingApprovalCard + router.refresh() } else { toast({ - title: "Failed to Resubmit", - description: `There was an error resubmitting your request. Reason: ${result.message}`, + title: "Failed to Submit", + description: `There was an error submitting your request. Reason: ${result.message}`, variant: "destructive", }) } - setIsSubmitting(false) } @@ -57,7 +60,7 @@ export function ResubmitAccountRequestButton({ domain, userId }: ResubmitButtonP disabled={isSubmitting} > - {isSubmitting ? "Submitting..." : "Resubmit Request"} + {isSubmitting ? "Submitting..." : "Submit Request"} ) diff --git a/packages/web/src/app/[domain]/components/submitJoinRequest.tsx b/packages/web/src/app/[domain]/components/submitJoinRequest.tsx new file mode 100644 index 00000000..b79fbfa5 --- /dev/null +++ b/packages/web/src/app/[domain]/components/submitJoinRequest.tsx @@ -0,0 +1,55 @@ +import { LogoutEscapeHatch } from "@/app/components/logoutEscapeHatch" +import { SourcebotLogo } from "@/app/components/sourcebotLogo" +import { auth } from "@/auth" +import { SubmitAccountRequestButton } from "./submitAccountRequestButton" + +interface SubmitJoinRequestProps { + domain: string +} + +export const SubmitJoinRequest = async ({ domain }: SubmitJoinRequestProps) => { + const session = await auth() + const userId = session?.user?.id + + if (!userId) { + return null + } + + return ( +
+ + +
+
+ + +
+
+ + + +
+ +
+

+ Request Access +

+

+ Submit a request to join this organization +

+
+
+ +
+
+ +
+
+
+
+
+ ) +} \ No newline at end of file diff --git a/packages/web/src/app/[domain]/layout.tsx b/packages/web/src/app/[domain]/layout.tsx index bca8bad8..f24accd3 100644 --- a/packages/web/src/app/[domain]/layout.tsx +++ b/packages/web/src/app/[domain]/layout.tsx @@ -14,10 +14,14 @@ import { IS_BILLING_ENABLED } from "@/ee/features/billing/stripe"; import { notFound, redirect } from "next/navigation"; import { getSubscriptionInfo } from "@/ee/features/billing/actions"; import { PendingApprovalCard } from "./components/pendingApproval"; +import { SubmitJoinRequest } from "./components/submitJoinRequest"; import { hasEntitlement } from "@sourcebot/shared"; import { getPublicAccessStatus } from "@/ee/features/publicAccess/publicAccess"; import { env } from "@/env.mjs"; import { GcpIapAuth } from "./components/gcpIapAuth"; +import { getMemberApprovalRequired } from "@/actions"; +import { JoinOrganizationCard } from "@/app/components/joinOrganizationCard"; +import { LogoutEscapeHatch } from "@/app/components/logoutEscapeHatch"; interface LayoutProps { children: React.ReactNode, @@ -34,43 +38,60 @@ export default async function Layout({ return notFound(); } + const session = await auth(); const publicAccessEnabled = hasEntitlement("public-access") && await getPublicAccessStatus(domain); - if (!publicAccessEnabled) { - const session = await auth(); - if (!session) { - const ssoEntitlement = await hasEntitlement("sso"); - if (ssoEntitlement && env.AUTH_EE_GCP_IAP_ENABLED && env.AUTH_EE_GCP_IAP_AUDIENCE) { - return ; - } else { - redirect('/login'); - } - } - + + // If the user is authenticated, we must check if they're a member of the org + if (session) { const membership = await prisma.userToOrg.findUnique({ where: { orgId_userId: { orgId: org.id, userId: session.user.id } - }, + }, include: { user: true } }); - + + // There's two reasons why a user might not be a member of an org: + // 1. The org doesn't require member approval, but the org was at max capacity when the user registered. In this case, we show them + // the join organization card to allow them to join the org if seat capacity is freed up. This card handles checking if the org has available seats. + // 2. The org requires member approval, and they haven't been approved yet. In this case, we allow them to submit a request to join the org. if (!membership) { - const user = await prisma.user.findUnique({ + const memberApprovalRequired = await getMemberApprovalRequired(domain); + if (!memberApprovalRequired) { + return ( +
+ + +
+ ) + } else { + const hasPendingApproval = await prisma.accountRequest.findFirst({ where: { - id: session.user.id + orgId: org.id, + requestedById: session.user.id } }); - // TODO: Organization join requests are only supported in single-tenant mode - if (env.SOURCEBOT_TENANCY_MODE === "single" && user?.pendingApproval) { - return + if (hasPendingApproval) { + return } else { - return notFound(); + return } + } + } + } else { + // If the user isn't authenticated and public access isn't enabled, we need to redirect them to the login page. + if (!publicAccessEnabled) { + const ssoEntitlement = await hasEntitlement("sso"); + if (ssoEntitlement && env.AUTH_EE_GCP_IAP_ENABLED && env.AUTH_EE_GCP_IAP_AUDIENCE) { + return ; + } else { + redirect('/login'); + } } } diff --git a/packages/web/src/app/[domain]/onboard/components/completeOnboarding.tsx b/packages/web/src/app/[domain]/onboard/components/completeOnboarding.tsx deleted file mode 100644 index a0df45d2..00000000 --- a/packages/web/src/app/[domain]/onboard/components/completeOnboarding.tsx +++ /dev/null @@ -1,30 +0,0 @@ -'use client'; - -import { completeOnboarding } from "@/actions"; -import { OnboardingSteps } from "@/lib/constants"; -import { isServiceError } from "@/lib/utils"; -import { useRouter } from "next/navigation"; -import { useEffect } from "react"; -import { useDomain } from "@/hooks/useDomain"; - -export const CompleteOnboarding = () => { - const router = useRouter(); - const domain = useDomain(); - - useEffect(() => { - const complete = async () => { - const response = await completeOnboarding(domain); - if (isServiceError(response)) { - router.push(`/${domain}/onboard?step=${OnboardingSteps.Checkout}&errorCode=${response.errorCode}&errorMessage=${response.message}`); - return; - } - - router.push(`/${domain}`); - router.refresh(); - }; - - complete(); - }, [domain, router]); - - return null; -} \ No newline at end of file diff --git a/packages/web/src/app/[domain]/onboard/components/connectCodeHost.tsx b/packages/web/src/app/[domain]/onboard/components/connectCodeHost.tsx deleted file mode 100644 index 00fecdb0..00000000 --- a/packages/web/src/app/[domain]/onboard/components/connectCodeHost.tsx +++ /dev/null @@ -1,164 +0,0 @@ -'use client'; - -import { useState } from "react"; -import { CodeHostType } from "@/lib/utils"; -import { getCodeHostIcon } from "@/lib/utils"; -import { - GitHubConnectionCreationForm, - GitLabConnectionCreationForm, - GiteaConnectionCreationForm, - GerritConnectionCreationForm, - BitbucketCloudConnectionCreationForm, - BitbucketDataCenterConnectionCreationForm -} from "@/app/[domain]/components/connectionCreationForms"; -import { useRouter } from "next/navigation"; -import { useCallback } from "react"; -import { OnboardingSteps } from "@/lib/constants"; -import { BackButton } from "./onboardBackButton"; -import { CodeHostIconButton } from "../../components/codeHostIconButton"; -import useCaptureEvent from "@/hooks/useCaptureEvent"; -import SecurityCard from "@/app/components/securityCard"; - -interface ConnectCodeHostProps { - nextStep: OnboardingSteps; - securityCardEnabled: boolean; -} - -export const ConnectCodeHost = ({ nextStep, securityCardEnabled }: ConnectCodeHostProps) => { - const [selectedCodeHost, setSelectedCodeHost] = useState(null); - const router = useRouter(); - - const onCreated = useCallback(() => { - router.push(`?step=${nextStep}`); - }, [nextStep, router]); - - const onBack = useCallback(() => { - setSelectedCodeHost(null); - }, []); - - if (!selectedCodeHost) { - return ( - <> - - {securityCardEnabled && } - - ) - } - - if (selectedCodeHost === "github") { - return ( - <> - - - - ) - } - - if (selectedCodeHost === "gitlab") { - return ( - <> - - - - ) - } - - if (selectedCodeHost === "gitea") { - return ( - <> - - - - ) - } - - if (selectedCodeHost === "gerrit") { - return ( - <> - - - - ) - } - - if (selectedCodeHost === "bitbucket-cloud") { - return ( - <> - - - - ) - } - - if (selectedCodeHost === "bitbucket-server") { - return ( - <> - - - - ) - } - - return null; -} - -interface CodeHostSelectionProps { - onSelect: (codeHost: CodeHostType) => void; -} - -const CodeHostSelection = ({ onSelect }: CodeHostSelectionProps) => { - const captureEvent = useCaptureEvent(); - - return ( -
- { - onSelect("github"); - captureEvent("wa_onboard_github_selected", {}); - }} - /> - { - onSelect("gitlab"); - captureEvent("wa_onboard_gitlab_selected", {}); - }} - /> - { - onSelect("bitbucket-cloud"); - captureEvent("wa_onboard_bitbucket_cloud_selected", {}); - }} - /> - { - onSelect("bitbucket-server"); - captureEvent("wa_onboard_bitbucket_server_selected", {}); - }} - /> - { - onSelect("gitea"); - captureEvent("wa_onboard_gitea_selected", {}); - }} - /> - { - onSelect("gerrit"); - captureEvent("wa_onboard_gerrit_selected", {}); - }} - /> -
- ) -} diff --git a/packages/web/src/app/[domain]/onboard/components/inviteTeam.tsx b/packages/web/src/app/[domain]/onboard/components/inviteTeam.tsx deleted file mode 100644 index 2aa9bb9c..00000000 --- a/packages/web/src/app/[domain]/onboard/components/inviteTeam.tsx +++ /dev/null @@ -1,135 +0,0 @@ -'use client'; - -import { createInvites } from "@/actions"; -import { Button } from "@/components/ui/button"; -import { Card, CardContent, CardFooter } from "@/components/ui/card"; -import { Form, FormControl, FormDescription, FormField, FormItem, FormLabel, FormMessage } from "@/components/ui/form"; -import { Input } from "@/components/ui/input"; -import { isServiceError } from "@/lib/utils"; -import { zodResolver } from "@hookform/resolvers/zod"; -import { Loader2, PlusCircleIcon } from "lucide-react"; -import { useCallback } from "react"; -import { useForm } from "react-hook-form"; -import { z } from "zod"; -import { inviteMemberFormSchema } from "../../settings/members/components/inviteMemberCard"; -import { useDomain } from "@/hooks/useDomain"; -import { useToast } from "@/components/hooks/use-toast"; -import { OnboardingSteps } from "@/lib/constants"; -import { useRouter } from "next/navigation"; -import useCaptureEvent from "@/hooks/useCaptureEvent"; -interface InviteTeamProps { - nextStep: OnboardingSteps; -} - -export const InviteTeam = ({ nextStep }: InviteTeamProps) => { - const domain = useDomain(); - const { toast } = useToast(); - const router = useRouter(); - const captureEvent = useCaptureEvent(); - - const form = useForm>({ - resolver: zodResolver(inviteMemberFormSchema), - defaultValues: { - emails: [{ email: "" }] - }, - }); - - const addEmailField = useCallback(() => { - const emails = form.getValues().emails; - form.setValue('emails', [...emails, { email: "" }]); - }, [form]); - - const onComplete = useCallback(() => { - router.push(`?step=${nextStep}`); - }, [nextStep, router]); - - const onSubmit = useCallback(async (data: z.infer) => { - const response = await createInvites(data.emails.map(e => e.email), domain); - if (isServiceError(response)) { - toast({ - description: `❌ Failed to invite members. Reason: ${response.message}` - }); - captureEvent('wa_onboard_invite_team_invite_fail', { - error: response.errorCode, - num_emails: data.emails.length, - }); - } else { - toast({ - description: `✅ Successfully invited ${data.emails.length} members` - }); - captureEvent('wa_onboard_invite_team_invite_success', { - num_emails: data.emails.length, - }); - onComplete(); - } - }, [domain, toast, onComplete, captureEvent]); - - const onSkip = useCallback(() => { - captureEvent('wa_onboard_invite_team_skip', { - num_emails: form.getValues().emails.length, - }); - onComplete(); - }, [onComplete, form, captureEvent]); - - return ( - -
- - - Email Address - {`Invite members to access your organization's Sourcebot instance.`} - {form.watch('emails').map((_, index) => ( - ( - - - - - - - )} - /> - ))} - {form.formState.errors.emails?.root?.message && ( - {form.formState.errors.emails.root.message} - )} - - - - - - -
- -
- ) -} \ No newline at end of file diff --git a/packages/web/src/app/[domain]/onboard/components/onboardBackButton.tsx b/packages/web/src/app/[domain]/onboard/components/onboardBackButton.tsx deleted file mode 100644 index 25d93615..00000000 --- a/packages/web/src/app/[domain]/onboard/components/onboardBackButton.tsx +++ /dev/null @@ -1,23 +0,0 @@ -import { Button } from "@/components/ui/button" -import { ArrowLeft } from "lucide-react" - -interface BackButtonProps { - onClick: () => void -} - -export function BackButton({ onClick }: BackButtonProps) { - return ( -
- -
- ) -} - diff --git a/packages/web/src/app/[domain]/onboard/page.tsx b/packages/web/src/app/[domain]/onboard/page.tsx deleted file mode 100644 index a62770e1..00000000 --- a/packages/web/src/app/[domain]/onboard/page.tsx +++ /dev/null @@ -1,87 +0,0 @@ -import { OnboardHeader } from "@/app/onboard/components/onboardHeader"; -import { getOrgFromDomain } from "@/data/org"; -import { OnboardingSteps } from "@/lib/constants"; -import { notFound, redirect } from "next/navigation"; -import { ConnectCodeHost } from "./components/connectCodeHost"; -import { InviteTeam } from "./components/inviteTeam"; -import { CompleteOnboarding } from "./components/completeOnboarding"; -import { Checkout } from "@/ee/features/billing/components/checkout"; -import { LogoutEscapeHatch } from "@/app/components/logoutEscapeHatch"; -import { IS_BILLING_ENABLED } from "@/ee/features/billing/stripe"; -import { env } from "@/env.mjs"; - -interface OnboardProps { - params: { - domain: string - }, - searchParams: { - step?: string - stripe_session_id?: string - } -} - -export default async function Onboard({ params, searchParams }: OnboardProps) { - const org = await getOrgFromDomain(params.domain); - - if (!org) { - notFound(); - } - - if (org.isOnboarded) { - redirect(`/${params.domain}`); - } - - const step = searchParams.step ?? OnboardingSteps.ConnectCodeHost; - if ( - !Object.values(OnboardingSteps) - .filter(s => s !== OnboardingSteps.CreateOrg) - .filter(s => !IS_BILLING_ENABLED ? s !== OnboardingSteps.Checkout : true) - .map(s => s.toString()) - .includes(step) - ) { - redirect(`/${params.domain}/onboard?step=${OnboardingSteps.ConnectCodeHost}`); - } - - const lastRequiredStep = IS_BILLING_ENABLED ? OnboardingSteps.Checkout : OnboardingSteps.Complete; - - return ( -
- {step !== OnboardingSteps.Complete && ( - - )} - {step === OnboardingSteps.ConnectCodeHost && ( - <> - - - - )} - {step === OnboardingSteps.InviteTeam && ( - <> - - - - )} - {step === OnboardingSteps.Checkout && ( - <> - - - )} - {step === OnboardingSteps.Complete && ( - - )} -
- ) -} \ No newline at end of file diff --git a/packages/web/src/app/[domain]/settings/members/page.tsx b/packages/web/src/app/[domain]/settings/members/page.tsx index 2c23f3f7..aa984a93 100644 --- a/packages/web/src/app/[domain]/settings/members/page.tsx +++ b/packages/web/src/app/[domain]/settings/members/page.tsx @@ -12,6 +12,9 @@ import { ServiceErrorException } from "@/lib/serviceError"; import { getSeats, SOURCEBOT_UNLIMITED_SEATS } from "@sourcebot/shared"; import { RequestsList } from "./components/requestsList"; import { OrgRole } from "@prisma/client"; +import { MemberApprovalRequiredToggle } from "@/app/onboard/components/memberApprovalRequiredToggle"; +import { headers } from "next/headers"; +import { getBaseUrl, createInviteLink } from "@/lib/utils"; interface MembersSettingsPageProps { params: { @@ -59,6 +62,11 @@ export default async function MembersSettingsPage({ params: { domain }, searchPa const usedSeats = members.length const seatsAvailable = seats === SOURCEBOT_UNLIMITED_SEATS || usedSeats < seats; + // Get the current URL to construct the full invite link + const headersList = headers(); + const baseUrl = getBaseUrl(headersList); + const inviteLink = createInviteLink(baseUrl, org.inviteLinkId); + return (
@@ -78,6 +86,10 @@ export default async function MembersSettingsPage({ params: { domain }, searchPa )}
+ {userRoleInOrg === OrgRole.OWNER && ( + + )} + void; + securityNoticeClosable?: boolean; +} + +export const AuthMethodSelector = ({ + providers, + callbackUrl, + context, + onProviderClick, + securityNoticeClosable = false +}: AuthMethodSelectorProps) => { + const onSignInWithOauth = useCallback((provider: string) => { + // Call the optional analytics callback first + onProviderClick?.(provider); + + signIn(provider, { + redirectTo: callbackUrl ?? "/" + }); + }, [callbackUrl, onProviderClick]); + + // Separate OAuth providers from special auth methods + const oauthProviders = providers.filter(p => + !["credentials", "nodemailer"].includes(p.id) + ); + const hasCredentials = providers.some(p => p.id === "credentials"); + const hasMagicLink = providers.some(p => p.id === "nodemailer"); + + return ( + <> + + 0 ? [ +
+ {oauthProviders.map((provider) => { + const providerInfo = getAuthProviderInfo(provider.id); + return ( + { + onSignInWithOauth(provider.id); + }} + context={context} + /> + ); + })} +
+ ] : []), + ...(hasMagicLink ? [ + + ] : []), + ...(hasCredentials ? [ + + ] : []) + ]} + /> + + ); +}; \ No newline at end of file diff --git a/packages/web/src/app/components/authSecurityNotice.tsx b/packages/web/src/app/components/authSecurityNotice.tsx new file mode 100644 index 00000000..e903383f --- /dev/null +++ b/packages/web/src/app/components/authSecurityNotice.tsx @@ -0,0 +1,98 @@ +'use client'; + +import React, { useState, useEffect } from "react"; +import { env } from "@/env.mjs"; + +interface AuthSecurityNoticeProps { + closable?: boolean; +} + +const AUTH_SECURITY_NOTICE_COOKIE = "auth-security-notice-dismissed"; + +const getSecurityNoticeDismissed = (): boolean => { + if (typeof document === "undefined") return false; + const cookies = document.cookie.split(';').map(cookie => cookie.trim()); + const targetCookie = cookies.find(cookie => cookie.startsWith(`${AUTH_SECURITY_NOTICE_COOKIE}=`)); + + if (!targetCookie) return false; + + try { + const cookieValue = targetCookie.substring(`${AUTH_SECURITY_NOTICE_COOKIE}=`.length); + return JSON.parse(decodeURIComponent(cookieValue)); + } catch (error) { + console.warn('Failed to parse security notice cookie:', error); + return false; + } +}; + +const setSecurityNoticeDismissed = (dismissed: boolean) => { + if (typeof document === "undefined") return; + try { + const expires = new Date(); + expires.setFullYear(expires.getFullYear() + 1); + const cookieValue = encodeURIComponent(JSON.stringify(dismissed)); + document.cookie = `${AUTH_SECURITY_NOTICE_COOKIE}=${cookieValue}; expires=${expires.toUTCString()}; path=/; SameSite=Lax`; + } catch (error) { + console.warn('Failed to set security notice cookie:', error); + } +}; + +export const AuthSecurityNotice = ({ closable = false }: AuthSecurityNoticeProps) => { + const [isDismissed, setIsDismissed] = useState(false); + const [hasMounted, setHasMounted] = useState(false); + + // Only check cookie after component mounts to avoid hydration error + useEffect(() => { + setHasMounted(true); + if (closable) { + setIsDismissed(getSecurityNoticeDismissed()); + } + }, [closable]); + + const handleDismiss = () => { + setIsDismissed(true); + setSecurityNoticeDismissed(true); + }; + + // Don't render if dismissed when closable, or if closable but not yet mounted + if (closable && (!hasMounted || isDismissed)) { + return null; + } + + // Only render for self-hosted deployments + if (env.NEXT_PUBLIC_SOURCEBOT_CLOUD_ENVIRONMENT !== undefined) { + return null; + } + + return ( +
+ ); +}; \ No newline at end of file diff --git a/packages/web/src/app/components/dividerSet.tsx b/packages/web/src/app/components/dividerSet.tsx new file mode 100644 index 00000000..1312cdde --- /dev/null +++ b/packages/web/src/app/components/dividerSet.tsx @@ -0,0 +1,13 @@ +import { Fragment } from "react"; +import { TextSeparator } from "./textSeparator"; + +export const DividerSet = ({ elements }: { elements: React.ReactNode[] }) => { + return elements.map((child, index) => { + return ( + + {child} + {index < elements.length - 1 && } + + ); + }); +}; \ No newline at end of file diff --git a/packages/web/src/app/components/inviteLinkToggle.tsx b/packages/web/src/app/components/inviteLinkToggle.tsx new file mode 100644 index 00000000..feaef814 --- /dev/null +++ b/packages/web/src/app/components/inviteLinkToggle.tsx @@ -0,0 +1,130 @@ +"use client" + +import { useState } from "react" +import { Button } from "@/components/ui/button" +import { Input } from "@/components/ui/input" +import { Switch } from "@/components/ui/switch" +import { Copy, Check } from "lucide-react" +import { useToast } from "@/components/hooks/use-toast" +import { SINGLE_TENANT_ORG_DOMAIN } from "@/lib/constants" +import { setInviteLinkEnabled } from "@/actions" +import { isServiceError } from "@/lib/utils" + +interface InviteLinkToggleProps { + inviteLinkEnabled: boolean + inviteLink: string | null +} + +export function InviteLinkToggle({ inviteLinkEnabled, inviteLink }: InviteLinkToggleProps) { + const [enabled, setEnabled] = useState(inviteLinkEnabled) + const [isLoading, setIsLoading] = useState(false) + const [copied, setCopied] = useState(false) + const { toast } = useToast() + + + const handleToggle = async (checked: boolean) => { + setIsLoading(true) + try { + const result = await setInviteLinkEnabled(SINGLE_TENANT_ORG_DOMAIN, checked) + + if (isServiceError(result)) { + toast({ + title: "Error", + description: "Failed to update invite link setting", + variant: "destructive", + }) + return + } + + setEnabled(checked) + + } catch (error) { + console.error("Error updating invite link setting:", error) + toast({ + title: "Error", + description: "Failed to update invite link setting", + variant: "destructive", + }) + } finally { + setIsLoading(false) + } + } + + const handleCopy = async () => { + if (!inviteLink) return + + try { + await navigator.clipboard.writeText(inviteLink) + setCopied(true) + setTimeout(() => setCopied(false), 2000) + } catch (err) { + console.error("Failed to copy text: ", err) + toast({ + title: "Error", + description: "Failed to copy invite link to clipboard", + variant: "destructive", + }) + } + } + + return ( +
+
+
+

+ Enable invite link +

+
+

+ When enabled, team members can use the invite link to join your organization without requiring approval. +

+
+
+
+ +
+
+ +
+
+
+
+ + +
+
+ +

+ You can find this link again in the Settings → Members page. +

+
+
+
+ ) +} \ No newline at end of file diff --git a/packages/web/src/app/components/joinOrganizationButton.tsx b/packages/web/src/app/components/joinOrganizationButton.tsx new file mode 100644 index 00000000..9bed8556 --- /dev/null +++ b/packages/web/src/app/components/joinOrganizationButton.tsx @@ -0,0 +1,55 @@ +"use client"; + +import { Button } from "@/components/ui/button"; +import { useRouter } from "next/navigation"; +import { useToast } from "@/components/hooks/use-toast"; +import { useState } from "react"; +import { Loader2 } from "lucide-react"; +import { joinOrganization } from "../invite/actions"; +import { isServiceError } from "@/lib/utils"; +import { SINGLE_TENANT_ORG_ID } from "@/lib/constants"; + +export function JoinOrganizationButton({ inviteLinkId }: { inviteLinkId?: string }) { + const [isLoading, setIsLoading] = useState(false); + const router = useRouter(); + const { toast } = useToast(); + + const handleJoinOrganization = async () => { + setIsLoading(true); + + try { + const result = await joinOrganization(SINGLE_TENANT_ORG_ID, inviteLinkId); + + if (isServiceError(result)) { + toast({ + title: "Failed to join organization", + description: result.message, + variant: "destructive", + }); + return; + } + + router.refresh(); + } catch (error) { + console.error("Error joining organization:", error); + toast({ + title: "Error", + description: "An unexpected error occurred. Please try again.", + variant: "destructive", + }); + } finally { + setIsLoading(false); + } + }; + + return ( + + ); +} \ No newline at end of file diff --git a/packages/web/src/app/components/joinOrganizationCard.tsx b/packages/web/src/app/components/joinOrganizationCard.tsx new file mode 100644 index 00000000..bb7b1d39 --- /dev/null +++ b/packages/web/src/app/components/joinOrganizationCard.tsx @@ -0,0 +1,23 @@ +import { Card, CardContent, CardHeader } from "@/components/ui/card"; +import { SourcebotLogo } from "@/app/components/sourcebotLogo"; +import { JoinOrganizationButton } from "./joinOrganizationButton"; + +export function JoinOrganizationCard({ inviteLinkId }: { inviteLinkId?: string }) { + return ( +
+ + + + + +
+

+ Welcome to Sourcebot! Click the button below to join this organization. +

+
+ +
+
+
+ ); +} \ No newline at end of file diff --git a/packages/web/src/app/components/providerButton.tsx b/packages/web/src/app/components/providerButton.tsx new file mode 100644 index 00000000..e67789d4 --- /dev/null +++ b/packages/web/src/app/components/providerButton.tsx @@ -0,0 +1,45 @@ +'use client'; + +import { useState } from "react"; +import { cn } from "@/lib/utils"; +import Image from "next/image"; +import { LoadingButton } from "@/components/ui/loading-button"; + +interface ProviderButtonProps { + name: string; + logo: { src: string, className?: string } | null; + onClick: () => void | Promise; + className?: string; + context: "login" | "signup"; +} + +export const ProviderButton = ({ + name, + logo, + onClick, + className, + context, +}: ProviderButtonProps) => { + const [isLoading, setIsLoading] = useState(false); + + const handleClick = async () => { + setIsLoading(true); + try { + await onClick(); + } finally { + setIsLoading(false); + } + }; + + return ( + + {logo && {name}} + {context === "login" ? `Sign in with ${name}` : `Sign up with ${name}`} + + ); +}; \ No newline at end of file diff --git a/packages/web/src/app/invite/actions.ts b/packages/web/src/app/invite/actions.ts new file mode 100644 index 00000000..99bb0256 --- /dev/null +++ b/packages/web/src/app/invite/actions.ts @@ -0,0 +1,52 @@ +"use server"; + +import { withAuth } from "@/actions"; +import { isServiceError } from "@/lib/utils"; +import { orgNotFound, ServiceError } from "@/lib/serviceError"; +import { sew } from "@/actions"; +import { addUserToOrganization } from "@/lib/authUtils"; +import { prisma } from "@/prisma"; +import { StatusCodes } from "http-status-codes"; +import { ErrorCode } from "@/lib/errorCodes"; + +export const joinOrganization = (orgId: number, inviteLinkId?: string) => sew(async () => + withAuth(async (userId) => { + const org = await prisma.org.findUnique({ + where: { + id: orgId, + }, + }); + + if (!org) { + return orgNotFound(); + } + + // If member approval is required we must be using a valid invite link + if (org.memberApprovalRequired) { + if (!org.inviteLinkEnabled) { + return { + statusCode: StatusCodes.BAD_REQUEST, + errorCode: ErrorCode.INVITE_LINK_NOT_ENABLED, + message: "Invite link is not enabled.", + } satisfies ServiceError; + } + + if (org.inviteLinkId !== inviteLinkId) { + return { + statusCode: StatusCodes.BAD_REQUEST, + errorCode: ErrorCode.INVALID_INVITE_LINK, + message: "Invalid invite link.", + } satisfies ServiceError; + } + } + + const addUserToOrgRes = await addUserToOrganization(userId, org.id); + if (isServiceError(addUserToOrgRes)) { + return addUserToOrgRes; + } + + return { + success: true, + } + }) +) \ No newline at end of file diff --git a/packages/web/src/app/invite/page.tsx b/packages/web/src/app/invite/page.tsx new file mode 100644 index 00000000..92fa01cf --- /dev/null +++ b/packages/web/src/app/invite/page.tsx @@ -0,0 +1,86 @@ +import { auth } from "@/auth"; +import { prisma } from "@/prisma"; +import { getOrgFromDomain } from "@/data/org"; +import { SINGLE_TENANT_ORG_DOMAIN } from "@/lib/constants"; +import { notFound, redirect } from "next/navigation"; +import { Card, CardContent, CardHeader, CardTitle } from "@/components/ui/card"; +import { SourcebotLogo } from "@/app/components/sourcebotLogo"; +import { AuthMethodSelector } from "@/app/components/authMethodSelector"; +import { LogoutEscapeHatch } from "@/app/components/logoutEscapeHatch"; +import { getAuthProviders } from "@/lib/authProviders"; +import { JoinOrganizationCard } from "@/app/components/joinOrganizationCard"; + +interface InvitePageProps { + searchParams: { + id?: string; + }; +} + +export default async function InvitePage({ searchParams }: InvitePageProps) { + const org = await getOrgFromDomain(SINGLE_TENANT_ORG_DOMAIN); + if (!org || !org.isOnboarded) { + return redirect("/onboard"); + } + + const inviteLinkId = searchParams.id; + if (!org.inviteLinkEnabled || !inviteLinkId || org.inviteLinkId !== inviteLinkId) { + return notFound(); + } + + const session = await auth(); + if (!session) { + const providers = getAuthProviders(); + return ; + } + + const membership = await prisma.userToOrg.findUnique({ + where: { + orgId_userId: { + orgId: org.id, + userId: session.user.id + } + } + }); + + // If already a member, redirect to the organization + if (membership) { + redirect(`/${SINGLE_TENANT_ORG_DOMAIN}`); + } + + // User is logged in but not a member, show join invitation + return ( +
+ + +
+ ); +} + +function WelcomeCard({ inviteLinkId, providers }: { inviteLinkId: string; providers: import("@/lib/authProviders").AuthProvider[] }) { + return ( +
+ + + + + Welcome to Sourcebot + + + +
+

+ You've been invited to join this Sourcebot deployment. Sign up to get started. +

+
+ + +
+
+
+ ); +} diff --git a/packages/web/src/app/login/components/credentialsForm.tsx b/packages/web/src/app/login/components/credentialsForm.tsx index ac9b4bbb..14f5419c 100644 --- a/packages/web/src/app/login/components/credentialsForm.tsx +++ b/packages/web/src/app/login/components/credentialsForm.tsx @@ -14,9 +14,10 @@ import useCaptureEvent from "@/hooks/useCaptureEvent"; interface CredentialsFormProps { callbackUrl?: string; + context: "login" | "signup"; } -export const CredentialsForm = ({ callbackUrl }: CredentialsFormProps) => { +export const CredentialsForm = ({ callbackUrl, context }: CredentialsFormProps) => { const captureEvent = useCaptureEvent(); const [isLoading, setIsLoading] = useState(false); const form = useForm>({ @@ -80,7 +81,7 @@ export const CredentialsForm = ({ callbackUrl }: CredentialsFormProps) => { disabled={isLoading} > {isLoading ? : ""} - Sign in with credentials + {context === "login" ? "Sign in with credentials" : "Sign up with credentials"} diff --git a/packages/web/src/app/[domain]/onboard/components/demoCard.tsx b/packages/web/src/app/login/components/demoCard.tsx similarity index 100% rename from packages/web/src/app/[domain]/onboard/components/demoCard.tsx rename to packages/web/src/app/login/components/demoCard.tsx diff --git a/packages/web/src/app/login/components/loginForm.tsx b/packages/web/src/app/login/components/loginForm.tsx index 721af536..ff0e555c 100644 --- a/packages/web/src/app/login/components/loginForm.tsx +++ b/packages/web/src/app/login/components/loginForm.tsx @@ -1,19 +1,14 @@ 'use client'; -import Image from "next/image"; -import { signIn } from "next-auth/react"; -import { Fragment, useCallback, useMemo, useState } from "react"; +import { useMemo } from "react"; import { Card } from "@/components/ui/card"; -import { cn, getAuthProviderInfo } from "@/lib/utils"; -import { MagicLinkForm } from "./magicLinkForm"; -import { CredentialsForm } from "./credentialsForm"; import { SourcebotLogo } from "@/app/components/sourcebotLogo"; -import { TextSeparator } from "@/app/components/textSeparator"; +import { AuthMethodSelector } from "@/app/components/authMethodSelector"; import useCaptureEvent from "@/hooks/useCaptureEvent"; -import DemoCard from "@/app/[domain]/onboard/components/demoCard"; +import DemoCard from "@/app/login/components/demoCard"; import Link from "next/link"; import { env } from "@/env.mjs"; -import { LoadingButton } from "@/components/ui/loading-button"; +import type { AuthProvider } from "@/lib/authProviders"; const TERMS_OF_SERVICE_URL = "https://sourcebot.dev/terms"; const PRIVACY_POLICY_URL = "https://sourcebot.dev/privacy"; @@ -21,17 +16,12 @@ const PRIVACY_POLICY_URL = "https://sourcebot.dev/privacy"; interface LoginFormProps { callbackUrl?: string; error?: string; - providers: Array<{ id: string; name: string }>; + providers: AuthProvider[]; context: "login" | "signup"; } export const LoginForm = ({ callbackUrl, error, providers, context }: LoginFormProps) => { const captureEvent = useCaptureEvent(); - const onSignInWithOauth = useCallback((provider: string) => { - signIn(provider, { - redirectTo: callbackUrl ?? "/" - }); - }, [callbackUrl]); const errorMessage = useMemo(() => { if (!error) { @@ -47,13 +37,6 @@ export const LoginForm = ({ callbackUrl, error, providers, context }: LoginFormP } }, [error]); - // Separate OAuth providers from special auth methods - const oauthProviders = providers.filter(p => - !["credentials", "nodemailer"].includes(p.id) - ); - const hasCredentials = providers.some(p => p.id === "credentials"); - const hasMagicLink = providers.some(p => p.id === "nodemailer"); - // Helper function to get the correct analytics event name const getLoginEventName = (providerId: string) => { switch (providerId) { @@ -74,6 +57,11 @@ export const LoginForm = ({ callbackUrl, error, providers, context }: LoginFormP } }; + // Analytics callback for provider clicks + const handleProviderClick = (providerId: string) => { + captureEvent(getLoginEventName(providerId), {}); + }; + return (
@@ -95,38 +83,17 @@ export const LoginForm = ({ callbackUrl, error, providers, context }: LoginFormP {errorMessage}
)} - 0 ? [ -
- {oauthProviders.map((provider) => { - const providerInfo = getAuthProviderInfo(provider.id); - return ( - { - captureEvent(getLoginEventName(provider.id), {}); - onSignInWithOauth(provider.id); - }} - /> - ); - })} -
- ] : []), - ...(hasMagicLink ? [ - - ] : []), - ...(hasCredentials ? [ - - ] : []) - ]} +

{context === "login" ? <> - No account yet? Sign up + Don't have an account? Sign up : <> @@ -141,43 +108,3 @@ export const LoginForm = ({ callbackUrl, error, providers, context }: LoginFormP

) } - -const ProviderButton = ({ - name, - logo, - onClick, - className, -}: { - name: string; - logo: { src: string, className?: string } | null; - onClick: () => void; - className?: string; -}) => { - const [isLoading, setIsLoading] = useState(false); - - return ( - { - setIsLoading(true); - onClick(); - }} - className={cn("w-full", className)} - variant="outline" - loading={isLoading} - > - {logo && {name}} - Sign in with {name} - - ) -} - -const DividerSet = ({ elements }: { elements: React.ReactNode[] }) => { - return elements.map((child, index) => { - return ( - - {child} - {index < elements.length - 1 && } - - ) - }) -} diff --git a/packages/web/src/app/login/components/magicLinkForm.tsx b/packages/web/src/app/login/components/magicLinkForm.tsx index 32775203..d731436a 100644 --- a/packages/web/src/app/login/components/magicLinkForm.tsx +++ b/packages/web/src/app/login/components/magicLinkForm.tsx @@ -18,9 +18,10 @@ const magicLinkSchema = z.object({ interface MagicLinkFormProps { callbackUrl?: string; + context: "login" | "signup"; } -export const MagicLinkForm = ({ callbackUrl }: MagicLinkFormProps) => { +export const MagicLinkForm = ({ callbackUrl, context }: MagicLinkFormProps) => { const captureEvent = useCaptureEvent(); const [isLoading, setIsLoading] = useState(false); const router = useRouter(); @@ -76,7 +77,7 @@ export const MagicLinkForm = ({ callbackUrl }: MagicLinkFormProps) => { disabled={isLoading} > {isLoading ? : ""} - Sign in with login code + {context === "login" ? "Sign in with login code" : "Sign up with login code"} diff --git a/packages/web/src/app/login/page.tsx b/packages/web/src/app/login/page.tsx index a948a464..48e5031a 100644 --- a/packages/web/src/app/login/page.tsx +++ b/packages/web/src/app/login/page.tsx @@ -1,9 +1,11 @@ import { auth } from "@/auth"; import { LoginForm } from "./components/loginForm"; import { redirect } from "next/navigation"; -import { getProviders } from "@/auth"; import { Footer } from "@/app/components/footer"; import { createLogger } from "@sourcebot/logger"; +import { getAuthProviders } from "@/lib/authProviders"; +import { getOrgFromDomain } from "@/data/org"; +import { SINGLE_TENANT_ORG_DOMAIN } from "@/lib/constants"; const logger = createLogger('login-page'); @@ -22,24 +24,19 @@ export default async function Login({ searchParams }: LoginProps) { return redirect("/"); } - const providers = getProviders(); - const providerData = providers - .map((provider) => { - if (typeof provider === "function") { - const providerInfo = provider() - return { id: providerInfo.id, name: providerInfo.name } - } else { - return { id: provider.id, name: provider.name } - } - }); + const org = await getOrgFromDomain(SINGLE_TENANT_ORG_DOMAIN); + if (!org || !org.isOnboarded) { + return redirect("/onboard"); + } + const providers = getAuthProviders(); return (
diff --git a/packages/web/src/app/onboard/components/completeOnboardingButton.tsx b/packages/web/src/app/onboard/components/completeOnboardingButton.tsx new file mode 100644 index 00000000..ef44e0f3 --- /dev/null +++ b/packages/web/src/app/onboard/components/completeOnboardingButton.tsx @@ -0,0 +1,53 @@ +"use client" + +import { useState } from "react" +import { useRouter } from "next/navigation" +import { Button } from "@/components/ui/button" +import { completeOnboarding } from "@/actions" +import { SINGLE_TENANT_ORG_DOMAIN } from "@/lib/constants" +import { isServiceError } from "@/lib/utils" +import { useToast } from "@/components/hooks/use-toast" + +export function CompleteOnboardingButton() { + const [isLoading, setIsLoading] = useState(false) + const router = useRouter() + const { toast } = useToast() + + const handleCompleteOnboarding = async () => { + setIsLoading(true) + + try { + const result = await completeOnboarding(SINGLE_TENANT_ORG_DOMAIN) + + if (isServiceError(result)) { + toast({ + title: "Error", + description: "Failed to complete onboarding. Please try again.", + variant: "destructive", + }) + setIsLoading(false) + return + } + + router.push("/") + } catch (error) { + console.error("Error completing onboarding:", error) + toast({ + title: "Error", + description: "Failed to complete onboarding. Please try again.", + variant: "destructive", + }) + setIsLoading(false) + } + } + + return ( + + ) +} \ No newline at end of file diff --git a/packages/web/src/app/onboard/components/memberApprovalRequiredToggle.tsx b/packages/web/src/app/onboard/components/memberApprovalRequiredToggle.tsx new file mode 100644 index 00000000..325f6ba8 --- /dev/null +++ b/packages/web/src/app/onboard/components/memberApprovalRequiredToggle.tsx @@ -0,0 +1,90 @@ +"use client" + +import { useState } from "react" +import { Switch } from "@/components/ui/switch" +import { setMemberApprovalRequired } from "@/actions" +import { SINGLE_TENANT_ORG_DOMAIN } from "@/lib/constants" +import { isServiceError } from "@/lib/utils" +import { useToast } from "@/components/hooks/use-toast" +import { InviteLinkToggle } from "@/app/components/inviteLinkToggle" + +interface MemberApprovalRequiredToggleProps { + memberApprovalRequired: boolean + inviteLinkEnabled: boolean + inviteLink: string | null +} + +export function MemberApprovalRequiredToggle({ memberApprovalRequired, inviteLinkEnabled, inviteLink }: MemberApprovalRequiredToggleProps) { + const [enabled, setEnabled] = useState(memberApprovalRequired) + const [isLoading, setIsLoading] = useState(false) + const { toast } = useToast() + + const handleToggle = async (checked: boolean) => { + setIsLoading(true) + try { + const result = await setMemberApprovalRequired(SINGLE_TENANT_ORG_DOMAIN, checked) + + if (isServiceError(result)) { + toast({ + title: "Error", + description: "Failed to update member approval setting", + variant: "destructive", + }) + return + } + + setEnabled(checked) + } catch (error) { + console.error("Error updating member approval setting:", error) + toast({ + title: "Error", + description: "Failed to update member approval setting", + variant: "destructive", + }) + } finally { + setIsLoading(false) + } + } + + return ( +
+
+
+
+

+ Require approval for new members +

+
+

+ When enabled, new users will need approval from an organization owner before they can access your deployment.{" "} + + Learn More + +

+
+
+
+ +
+
+
+ +
+ +
+
+ ) +} \ No newline at end of file diff --git a/packages/web/src/app/onboard/components/onboardHeader.tsx b/packages/web/src/app/onboard/components/onboardHeader.tsx deleted file mode 100644 index 17281d76..00000000 --- a/packages/web/src/app/onboard/components/onboardHeader.tsx +++ /dev/null @@ -1,38 +0,0 @@ -import { SourcebotLogo } from "@/app/components/sourcebotLogo" -import { OnboardingSteps } from "@/lib/constants"; -import { IS_BILLING_ENABLED } from "@/ee/features/billing/stripe"; - -interface OnboardHeaderProps { - title: string - description: string - step: OnboardingSteps -} - -export const OnboardHeader = ({ title, description, step: currentStep }: OnboardHeaderProps) => { - const steps = Object.values(OnboardingSteps) - .filter(s => s !== OnboardingSteps.Complete) - .filter(s => !IS_BILLING_ENABLED ? s !== OnboardingSteps.Checkout : true); - - return ( -
- -

- {title} -

-

- {description} -

-
- {steps.map((step, index) => ( -
- ))} -
-
- ) -} \ No newline at end of file diff --git a/packages/web/src/app/onboard/components/orgCreateForm.tsx b/packages/web/src/app/onboard/components/orgCreateForm.tsx deleted file mode 100644 index 371db309..00000000 --- a/packages/web/src/app/onboard/components/orgCreateForm.tsx +++ /dev/null @@ -1,122 +0,0 @@ -"use client" - -import { createOrg } from "../../../actions" -import { Button } from "@/components/ui/button" -import { Input } from "@/components/ui/input" -import { Form, FormField, FormItem, FormLabel, FormControl, FormMessage, FormDescription } from "@/components/ui/form" -import { useForm } from "react-hook-form" -import { z } from "zod" -import { zodResolver } from "@hookform/resolvers/zod" -import { useCallback, useState } from "react"; -import { isServiceError } from "@/lib/utils" -import { Loader2 } from "lucide-react" -import { useToast } from "@/components/hooks/use-toast" -import { useRouter } from "next/navigation"; -import { Card } from "@/components/ui/card" -import useCaptureEvent from "@/hooks/useCaptureEvent"; -import { orgNameSchema, orgDomainSchema } from "@/lib/schemas" - -interface OrgCreateFormProps { - rootDomain: string; -} - -export function OrgCreateForm({ rootDomain }: OrgCreateFormProps) { - const { toast } = useToast(); - const router = useRouter(); - const captureEvent = useCaptureEvent(); - const [isLoading, setIsLoading] = useState(false); - - const onboardingFormSchema = z.object({ - name: orgNameSchema, - domain: orgDomainSchema, - }) - - const form = useForm>({ - resolver: zodResolver(onboardingFormSchema), - defaultValues: { - name: "", - domain: "", - } - }); - - const onSubmit = useCallback(async (data: z.infer) => { - setIsLoading(true); - const response = await createOrg(data.name, data.domain); - if (isServiceError(response)) { - toast({ - description: `❌ Failed to create organization. Reason: ${response.message}` - }) - captureEvent('wa_onboard_org_create_fail', { - error: response.errorCode, - }) - setIsLoading(false); - } else { - router.push(`/${data.domain}/onboard`); - captureEvent('wa_onboard_org_create_success', {}); - // @note: we don't want to set isLoading to false here since we want to show the loading - // spinner until the page is redirected. - } - }, [router, toast, captureEvent]); - - const handleNameChange = (e: React.ChangeEvent) => { - const name = e.target.value - const domain = name.toLowerCase().replace(/[^a-zA-Z\s]/g, "").replace(/\s+/g, "-") - form.setValue("domain", domain) - } - - return ( - -
- - ( - - Organization Name - {`Your organization's visible name within Sourcebot. For example, the name of your company or department.`} - - { - field.onChange(e) - handleNameChange(e) - }} - /> - - - - )} - /> - ( - - Organization URL - {`Your organization's URL namespace. This is where your organization's Sourcebot instance will be accessible.`} - -
-
{rootDomain}/
- -
-
- -
- )} - /> - - - -
- ) -} diff --git a/packages/web/src/app/onboard/page.tsx b/packages/web/src/app/onboard/page.tsx index 9389a794..fb7677b5 100644 --- a/packages/web/src/app/onboard/page.tsx +++ b/packages/web/src/app/onboard/page.tsx @@ -1,28 +1,410 @@ -import { OrgCreateForm } from "./components/orgCreateForm"; -import { auth } from "@/auth"; -import { redirect } from "next/navigation"; -import { OnboardHeader } from "./components/onboardHeader"; -import { OnboardingSteps } from "@/lib/constants"; -import { LogoutEscapeHatch } from "../components/logoutEscapeHatch"; -import { headers } from "next/headers"; +import type React from "react" -export default async function Onboarding() { +import { Card, CardContent } from "@/components/ui/card" +import { Button } from "@/components/ui/button" +import { AuthMethodSelector } from "@/app/components/authMethodSelector" +import { SourcebotLogo } from "@/app/components/sourcebotLogo" +import { auth } from "@/auth"; +import { getAuthProviders } from "@/lib/authProviders"; +import { MemberApprovalRequiredToggle } from "./components/memberApprovalRequiredToggle"; +import { CompleteOnboardingButton } from "./components/completeOnboardingButton"; +import { getOrgFromDomain } from "@/data/org"; +import { SINGLE_TENANT_ORG_DOMAIN } from "@/lib/constants"; +import { prisma } from "@/prisma"; +import { OrgRole } from "@sourcebot/db"; +import { LogoutEscapeHatch } from "@/app/components/logoutEscapeHatch"; +import { redirect } from "next/navigation"; +import { BetweenHorizonalStart, GitBranchIcon, LockIcon } from "lucide-react"; +import { hasEntitlement } from "@sourcebot/shared"; +import { env } from "@/env.mjs"; +import { GcpIapAuth } from "@/app/[domain]/components/gcpIapAuth"; +import { headers } from "next/headers"; +import { getBaseUrl, createInviteLink } from "@/lib/utils"; + +interface OnboardingProps { + searchParams?: { step?: string }; +} + +interface OnboardingStep { + id: string + title: string + subtitle: React.ReactNode + component: React.ReactNode +} + +interface ResourceCard { + id: string + title: string + description: string + href: string + icon?: React.ReactNode +} + +export default async function Onboarding({ searchParams }: OnboardingProps) { + const providers = getAuthProviders(); + const org = await getOrgFromDomain(SINGLE_TENANT_ORG_DOMAIN); const session = await auth(); - if (!session) { - redirect("/login"); + + if (!org) { + return
Error loading organization
; } - const host = (await headers()).get('host') ?? ''; + // Get the current URL to construct the full invite link + const headersList = headers(); + const baseUrl = getBaseUrl(headersList); + const inviteLink = createInviteLink(baseUrl, org.inviteLinkId); + + if (org && org.isOnboarded) { + redirect('/'); + } + + // Check if user is authenticated but not the owner + if (session?.user) { + if (org) { + const membership = await prisma.userToOrg.findUnique({ + where: { + orgId_userId: { + orgId: org.id, + userId: session.user.id + } + } + }); + + if (!membership || membership.role !== OrgRole.OWNER) { + return ; + } + } + } + + // If we're using an IAP bridge we need to sign them in now and then redirect them back to the onboarding page + const ssoEntitlement = await hasEntitlement("sso"); + if (ssoEntitlement && env.AUTH_EE_GCP_IAP_ENABLED && env.AUTH_EE_GCP_IAP_AUDIENCE) { + return ; + } + + // Determine current step based on URL parameter and authentication state + const stepParam = searchParams?.step ? parseInt(searchParams.step) : 0; + const currentStep = session?.user ? Math.max(2, stepParam) : Math.max(0, Math.min(stepParam, 1)); + + const resourceCards: ResourceCard[] = [ + { + id: "code-host-connections", + title: "Code Host Connections", + description: "Learn how to index repos across Sourcebot's supported platforms", + href: "https://docs.sourcebot.dev/docs/connections/overview", + icon: , + }, + { + id: "authentication-system", + title: "Authentication System", + description: "Learn how to setup additional auth providers, invite members, and more", + href: "https://docs.sourcebot.dev/docs/configuration/auth", + icon: , + }, + { + id: "mcp-server", + title: "MCP Server", + description: "Learn how to setup Sourcebot's MCP server to provide code context to your AI agents", + href: "https://docs.sourcebot.dev/docs/features/mcp-server", + icon: , + } + ] + + const steps: OnboardingStep[] = [ + { + id: "welcome", + title: "Welcome to Sourcebot", + subtitle: "This onboarding flow will guide you through creating your owner account and configuring your organization.", + component: ( +
+ +
+ ), + }, + { + id: "owner-signup", + title: "Create Owner Account", + subtitle: ( + <> + Use your preferred authentication method to create your owner account. To set up additional authentication providers, check out our{" "} + + documentation + . + + ), + component: ( +
+ +
+ ), + }, + { + id: "configure-org", + title: "Configure Your Organization", + subtitle: "Set up your organization's security settings.", + component: ( +
+ + +
+ ), + }, + { + id: "complete", + title: "You're All Set!", + subtitle: ( + <> + Your Sourcebot deployment is ready. Check out these resources to learn how to get the most out of Sourcebot. +
+
+ + + +
+
+ + ), + component: ( + + ), + }, + ] + + const currentStepData = steps[currentStep] return ( -
- - - +
+
+
+
+ {/* Left Panel - Progress & Branding */} +
+
+
+
+ +
+ + {/* Step Progress Indicators */} +
+ {steps.map((step, index) => ( +
+
+
+ {/* Connecting line */} + {index < steps.length - 1 && ( +
+ )} + {/* Circle - positioned above the line with z-index */} +
+ {index < currentStep ? ( + + + + ) : ( + {index + 1} + )} +
+
+
+
+ {step.title} +
+
+
+
+ ))} +
+
+ + {/* Footer */} +
+

+ Need help? Check out our{" "} + + documentation + {" "} + or{" "} + + reach out + + . +

+
+
+
+ + {/* Right Panel - Content */} +
+
+
+ {/* Step Header */} +
+
+
+ Step {currentStep + 1} of {steps.length} +
+
+
+
+

+ {currentStepData.title} +

+
+ {currentStepData.subtitle} +
+
+
+ + {/* Step Content */} +
+ {currentStepData.component} +
+
+
+
+
+
+
+
+ ) +} + +function NonOwnerOnboardingMessage() { + return ( +
+ +
+ + +
+
+ + + + +
+ +
+

+ Onboarding In Progress +

+

+ Your Sourcebot deployment is being configured by the organization owner. +

+
+ +
+
+
+ + + +
+
+

+ Owner Access Required +

+

+ Only the organization owner can complete the initial setup and configuration. Once onboarding is complete, you'll be able to access Sourcebot. +

+
+
+
+ +
+
+ Need help? Contact your organization owner or check out our{" "} + + documentation + + . +
+
+
+
+
+
); } diff --git a/packages/web/src/app/page.tsx b/packages/web/src/app/page.tsx index 86b0aa9b..d576e0af 100644 --- a/packages/web/src/app/page.tsx +++ b/packages/web/src/app/page.tsx @@ -1,35 +1,19 @@ import { auth } from "@/auth"; -import { prisma } from "@/prisma"; import { redirect } from "next/navigation"; +import { SINGLE_TENANT_ORG_DOMAIN } from "@/lib/constants"; +import { getOrgFromDomain } from "@/data/org"; export default async function Page() { + const org = await getOrgFromDomain(SINGLE_TENANT_ORG_DOMAIN); + + if (!org || !org.isOnboarded) { + return redirect("/onboard"); + } + const session = await auth(); if (!session) { return redirect("/login"); } - const firstOrg = await prisma.userToOrg.findFirst({ - where: { - userId: session.user.id, - org: { - members: { - some: { - userId: session.user.id, - } - } - } - }, - include: { - org: true - }, - orderBy: { - joinedAt: "asc" - } - }); - - if (!firstOrg) { - return redirect("/onboard"); - } - - return redirect(`/${firstOrg.org.domain}`); + return redirect(`/${SINGLE_TENANT_ORG_DOMAIN}`); } \ No newline at end of file diff --git a/packages/web/src/app/redeem/page.tsx b/packages/web/src/app/redeem/page.tsx index 34550222..3513e5b2 100644 --- a/packages/web/src/app/redeem/page.tsx +++ b/packages/web/src/app/redeem/page.tsx @@ -5,6 +5,8 @@ import { isServiceError } from "@/lib/utils"; import { AcceptInviteCard } from './components/acceptInviteCard'; import { LogoutEscapeHatch } from '../components/logoutEscapeHatch'; import { InviteNotFoundCard } from './components/inviteNotFoundCard'; +import { getOrgFromDomain } from '@/data/org'; +import { SINGLE_TENANT_ORG_DOMAIN } from '@/lib/constants'; interface RedeemPageProps { searchParams: { @@ -13,6 +15,11 @@ interface RedeemPageProps { } export default async function RedeemPage({ searchParams }: RedeemPageProps) { + const org = await getOrgFromDomain(SINGLE_TENANT_ORG_DOMAIN); + if (!org || !org.isOnboarded) { + return redirect("/onboard"); + } + const inviteId = searchParams.invite_id; if (!inviteId) { return notFound(); diff --git a/packages/web/src/app/signup/page.tsx b/packages/web/src/app/signup/page.tsx index 7c59899c..cabc47a0 100644 --- a/packages/web/src/app/signup/page.tsx +++ b/packages/web/src/app/signup/page.tsx @@ -1,9 +1,11 @@ import { auth } from "@/auth"; import { LoginForm } from "../login/components/loginForm"; import { redirect } from "next/navigation"; -import { getProviders } from "@/auth"; import { Footer } from "@/app/components/footer"; import { createLogger } from "@sourcebot/logger"; +import { getAuthProviders } from "@/lib/authProviders"; +import { getOrgFromDomain } from "@/data/org"; +import { SINGLE_TENANT_ORG_DOMAIN } from "@/lib/constants"; const logger = createLogger('signup-page'); @@ -21,24 +23,19 @@ export default async function Signup({ searchParams }: LoginProps) { return redirect("/"); } - const providers = getProviders(); - const providerData = providers - .map((provider) => { - if (typeof provider === "function") { - const providerInfo = provider() - return { id: providerInfo.id, name: providerInfo.name } - } else { - return { id: provider.id, name: provider.name } - } - }); + const org = await getOrgFromDomain(SINGLE_TENANT_ORG_DOMAIN); + if (!org || !org.isOnboarded) { + return redirect("/onboard"); + } + const providers = getAuthProviders(); return (
diff --git a/packages/web/src/components/ui/switch.tsx b/packages/web/src/components/ui/switch.tsx index b4ce08a1..6723fb2e 100644 --- a/packages/web/src/components/ui/switch.tsx +++ b/packages/web/src/components/ui/switch.tsx @@ -11,7 +11,7 @@ const Switch = React.forwardRef< >(({ className, ...props }, ref) => ( diff --git a/packages/web/src/data/org.ts b/packages/web/src/data/org.ts index 2d57fbc8..f942fe7c 100644 --- a/packages/web/src/data/org.ts +++ b/packages/web/src/data/org.ts @@ -2,11 +2,18 @@ import 'server-only'; import { prisma } from '@/prisma'; export const getOrgFromDomain = async (domain: string) => { - const org = await prisma.org.findUnique({ - where: { - domain: domain - } - }); + try { + const org = await prisma.org.findUnique({ + where: { + domain: domain + } + }); - return org; + return org; + } catch (error) { + // During build time we won't be able to access the database, so we catch and return null in this case + // so that we can statically build pages that hit the DB (ex. to check if the org is onboarded) + console.error('Error fetching org from domain:', error); + return null; + } } \ No newline at end of file diff --git a/packages/web/src/ee/features/publicAccess/publicAccess.tsx b/packages/web/src/ee/features/publicAccess/publicAccess.tsx index 9adee76d..3ad65e27 100644 --- a/packages/web/src/ee/features/publicAccess/publicAccess.tsx +++ b/packages/web/src/ee/features/publicAccess/publicAccess.tsx @@ -105,8 +105,7 @@ export const createGuestUser = async (domain: string): Promise { } return providers; -} - -export const handleJITProvisioning = async (userId: string, domain: string): Promise => sew(async () => { - const org = await prisma.org.findUnique({ - where: { - domain, - }, - include: { - members: { - where: { - role: { - not: OrgRole.GUEST, - } - } - } - } - }); - - if (!org) { - return notFound(`Org ${domain} not found`); - } - - const user = await prisma.user.findUnique({ - where: { - id: userId, - }, - }); - - if (!user) { - return notFound(`User ${userId} not found`); - } - - const userToOrg = await prisma.userToOrg.findFirst({ - where: { - userId, - orgId: org.id, - } - }); - - if (userToOrg) { - logger.warn(`JIT provisioning skipped for user ${userId} since they're already a member of org ${domain}`); - return true; - } - - const seats = getSeats(); - const memberCount = org.members.length; - - if (seats != SOURCEBOT_UNLIMITED_SEATS && memberCount >= seats) { - return { - statusCode: StatusCodes.BAD_REQUEST, - errorCode: ErrorCode.ORG_SEAT_COUNT_REACHED, - message: "Failed to provision user since the organization is at max capacity", - } satisfies ServiceError; - } - - await prisma.$transaction(async (tx) => { - await tx.user.update({ - where: { - id: userId, - }, - data: { - pendingApproval: false, - }, - }); - - await tx.userToOrg.create({ - data: { - userId, - orgId: org.id, - role: OrgRole.MEMBER, - }, - }); - }); - - return true; -}); \ No newline at end of file +} \ No newline at end of file diff --git a/packages/web/src/env.mjs b/packages/web/src/env.mjs index fd94c9c0..4ba3f3c1 100644 --- a/packages/web/src/env.mjs +++ b/packages/web/src/env.mjs @@ -26,8 +26,6 @@ export const env = createEnv({ AUTH_EMAIL_CODE_LOGIN_ENABLED: booleanSchema.default('false'), // Enterprise Auth - AUTH_EE_ENABLE_JIT_PROVISIONING: booleanSchema.default('false'), - AUTH_EE_GITHUB_CLIENT_ID: z.string().optional(), AUTH_EE_GITHUB_CLIENT_SECRET: z.string().optional(), AUTH_EE_GITHUB_BASE_URL: z.string().optional(), diff --git a/packages/web/src/initialize.ts b/packages/web/src/initialize.ts index 975fa83d..02b74485 100644 --- a/packages/web/src/initialize.ts +++ b/packages/web/src/initialize.ts @@ -114,7 +114,7 @@ const syncDeclarativeConfig = async (configPath: string) => { if (hasPublicAccessEntitlement) { if (enablePublicAccess && env.SOURCEBOT_EE_AUDIT_LOGGING_ENABLED === 'true') { - logger.error(`Audit logging is not supported when public access is enabled. Please disable audit logging or disable public access.`); + logger.error(`Audit logging is not supported when public access is enabled. Please disable audit logging (SOURCEBOT_EE_AUDIT_LOGGING_ENABLED) or disable public access.`); process.exit(1); } @@ -159,15 +159,32 @@ const pruneOldGuestUser = async () => { } const initSingleTenancy = async () => { - await prisma.org.upsert({ - where: { - id: SINGLE_TENANT_ORG_ID, - }, - update: {}, - create: { - name: SINGLE_TENANT_ORG_NAME, - domain: SINGLE_TENANT_ORG_DOMAIN, - id: SINGLE_TENANT_ORG_ID + // Back fill the inviteId if the org has already been created to prevent needing to wipe the db + await prisma.$transaction(async (tx) => { + const org = await tx.org.findUnique({ + where: { + id: SINGLE_TENANT_ORG_ID, + }, + }); + + if (!org) { + await tx.org.create({ + data: { + id: SINGLE_TENANT_ORG_ID, + name: SINGLE_TENANT_ORG_NAME, + domain: SINGLE_TENANT_ORG_DOMAIN, + inviteLinkId: crypto.randomUUID(), + } + }); + } else if (!org.inviteLinkId) { + await tx.org.update({ + where: { + id: SINGLE_TENANT_ORG_ID, + }, + data: { + inviteLinkId: crypto.randomUUID(), + } + }); } }); @@ -186,17 +203,6 @@ const initSingleTenancy = async () => { // Load any connections defined declaratively in the config file. const configPath = env.CONFIG_PATH; if (configPath) { - // If we're given a config file, mark the org as onboarded so we don't go through - // the UI connection onboarding flow - await prisma.org.update({ - where: { - id: SINGLE_TENANT_ORG_ID, - }, - data: { - isOnboarded: true, - } - }); - await syncDeclarativeConfig(configPath); // watch for changes assuming it is a local file diff --git a/packages/web/src/lib/authProviders.ts b/packages/web/src/lib/authProviders.ts new file mode 100644 index 00000000..ca2a6697 --- /dev/null +++ b/packages/web/src/lib/authProviders.ts @@ -0,0 +1,18 @@ +import { getProviders } from "@/auth"; + +export interface AuthProvider { + id: string; + name: string; +} + +export const getAuthProviders = (): AuthProvider[] => { + const providers = getProviders(); + return providers.map((provider) => { + if (typeof provider === "function") { + const providerInfo = provider(); + return { id: providerInfo.id, name: providerInfo.name }; + } else { + return { id: provider.id, name: provider.name }; + } + }); +}; \ No newline at end of file diff --git a/packages/web/src/lib/authUtils.ts b/packages/web/src/lib/authUtils.ts index 2a158c8d..e67f5c2a 100644 --- a/packages/web/src/lib/authUtils.ts +++ b/packages/web/src/lib/authUtils.ts @@ -1,15 +1,16 @@ import type { User as AuthJsUser } from "next-auth"; -import { env } from "@/env.mjs"; import { prisma } from "@/prisma"; import { OrgRole } from "@sourcebot/db"; -import { SINGLE_TENANT_ORG_DOMAIN, SINGLE_TENANT_ORG_ID } from "@/lib/constants"; -import { hasEntitlement } from "@sourcebot/shared"; +import { SINGLE_TENANT_ORG_ID } from "@/lib/constants"; +import { getSeats, SOURCEBOT_UNLIMITED_SEATS } from "@sourcebot/shared"; import { isServiceError } from "@/lib/utils"; -import { ServiceErrorException } from "@/lib/serviceError"; -import { createAccountRequest } from "@/actions"; -import { handleJITProvisioning } from "@/ee/features/sso/sso"; +import { orgNotFound, ServiceError, userNotFound } from "@/lib/serviceError"; import { createLogger } from "@sourcebot/logger"; import { getAuditService } from "@/ee/features/audit/factory"; +import { StatusCodes } from "http-status-codes"; +import { ErrorCode } from "./errorCodes"; +import { IS_BILLING_ENABLED } from "@/ee/features/billing/stripe"; +import { incrementOrgSeatCount } from "@/ee/features/billing/serverUtils"; const logger = createLogger('web-auth-utils'); const auditService = getAuditService(); @@ -27,7 +28,7 @@ export const onCreateUser = async ({ user }: { user: AuthJsUser }) => { id: "undefined", type: "user" }, - orgId: SINGLE_TENANT_ORG_ID, // TODO(mt) + orgId: SINGLE_TENANT_ORG_ID, metadata: { message: "User ID is undefined on user creation" } @@ -35,158 +36,216 @@ export const onCreateUser = async ({ user }: { user: AuthJsUser }) => { throw new Error("User ID is undefined on user creation"); } - // In single-tenant mode, we assign the first user to sign - // up as the owner of the default org. - if (env.SOURCEBOT_TENANCY_MODE === 'single') { - const defaultOrg = await prisma.org.findUnique({ - where: { - id: SINGLE_TENANT_ORG_ID, - }, - include: { - members: { - where: { - role: { - not: OrgRole.GUEST, - } + const defaultOrg = await prisma.org.findUnique({ + where: { + id: SINGLE_TENANT_ORG_ID, + }, + include: { + members: { + where: { + role: { + not: OrgRole.GUEST, } - }, + } + }, + } + }); + + // We expect the default org to have been created on app initialization + if (defaultOrg === null) { + await auditService.createAudit({ + action: "user.creation_failed", + actor: { + id: user.id, + type: "user" + }, + target: { + id: user.id, + type: "user" + }, + orgId: SINGLE_TENANT_ORG_ID, + metadata: { + message: "Default org not found on single tenant user creation" } }); + throw new Error("Default org not found on single tenant user creation"); + } - if (defaultOrg === null) { - await auditService.createAudit({ - action: "user.creation_failed", - actor: { - id: user.id, - type: "user" + // If this is the first user to sign up, we make them the owner of the default org. + const isFirstUser = defaultOrg.members.length === 0; + if (isFirstUser) { + await prisma.$transaction(async (tx) => { + await tx.org.update({ + where: { + id: SINGLE_TENANT_ORG_ID, }, - target: { - id: user.id, - type: "user" - }, - orgId: SINGLE_TENANT_ORG_ID, - metadata: { - message: "Default org not found on single tenant user creation" - } - }); - throw new Error("Default org not found on single tenant user creation"); - } - - // Only the first user to sign up will be an owner of the default org. - const isFirstUser = defaultOrg.members.length === 0; - if (isFirstUser) { - await prisma.$transaction(async (tx) => { - await tx.org.update({ - where: { - id: SINGLE_TENANT_ORG_ID, - }, - data: { - members: { - create: { - role: OrgRole.OWNER, - user: { - connect: { - id: user.id, - } + data: { + members: { + create: { + role: OrgRole.OWNER, + user: { + connect: { + id: user.id, } } } } - }); - - await tx.user.update({ - where: { - id: user.id, - }, - data: { - pendingApproval: false, - } - }); + } }); + }); - await auditService.createAudit({ - action: "user.owner_created", - actor: { - id: user.id, - type: "user" - }, + await auditService.createAudit({ + action: "user.owner_created", + actor: { + id: user.id, + type: "user" + }, + orgId: SINGLE_TENANT_ORG_ID, + target: { + id: SINGLE_TENANT_ORG_ID.toString(), + type: "org" + } + }); + } else if (!defaultOrg.memberApprovalRequired) { + const hasAvailability = await orgHasAvailability(defaultOrg.domain); + if (!hasAvailability) { + logger.warn(`onCreateUser: org ${SINGLE_TENANT_ORG_ID} has reached max capacity. User ${user.id} was not added to the org.`); + return; + } + + await prisma.userToOrg.create({ + data: { + userId: user.id, orgId: SINGLE_TENANT_ORG_ID, - target: { - id: SINGLE_TENANT_ORG_ID.toString(), - type: "org" - } - }); - } else { - // TODO(auth): handle multi tenant case - if (env.AUTH_EE_ENABLE_JIT_PROVISIONING === 'true' && hasEntitlement("sso")) { - const res = await handleJITProvisioning(user.id, SINGLE_TENANT_ORG_DOMAIN); - if (isServiceError(res)) { - logger.error(`Failed to provision user ${user.id} for org ${SINGLE_TENANT_ORG_DOMAIN}: ${res.message}`); - await auditService.createAudit({ - action: "user.jit_provisioning_failed", - actor: { - id: user.id, - type: "user" - }, - target: { - id: SINGLE_TENANT_ORG_ID.toString(), - type: "org" - }, - orgId: SINGLE_TENANT_ORG_ID, - metadata: { - message: `Failed to provision user ${user.id} for org ${SINGLE_TENANT_ORG_DOMAIN}: ${res.message}` - } - }); - throw new ServiceErrorException(res); - } + role: OrgRole.MEMBER, + } + }); + } - await auditService.createAudit({ - action: "user.jit_provisioned", - actor: { - id: user.id, - type: "user" - }, - target: { - id: SINGLE_TENANT_ORG_ID.toString(), - type: "org" - }, - orgId: SINGLE_TENANT_ORG_ID, - }); - } else { - const res = await createAccountRequest(user.id, SINGLE_TENANT_ORG_DOMAIN); - if (isServiceError(res)) { - logger.error(`Failed to provision user ${user.id} for org ${SINGLE_TENANT_ORG_DOMAIN}: ${res.message}`); - await auditService.createAudit({ - action: "user.join_request_creation_failed", - actor: { - id: user.id, - type: "user" - }, - target: { - id: SINGLE_TENANT_ORG_ID.toString(), - type: "org" - }, - orgId: SINGLE_TENANT_ORG_ID, - metadata: { - message: res.message - } - }); - throw new ServiceErrorException(res); - } +}; - await auditService.createAudit({ - action: "user.join_requested", - actor: { - id: user.id, - type: "user" - }, - orgId: SINGLE_TENANT_ORG_ID, - target: { - id: SINGLE_TENANT_ORG_ID.toString(), - type: "org" - }, - }); +export const orgHasAvailability = async (domain: string): Promise => { + const org = await prisma.org.findUnique({ + where: { + domain, + }, + }); + + if (!org) { + logger.error(`orgHasAvailability: org not found for domain ${domain}`); + return false; + } + const members = await prisma.userToOrg.findMany({ + where: { + orgId: org.id, + role: { + not: OrgRole.GUEST, + }, + }, + }); + + const maxSeats = getSeats(); + const memberCount = members.length; + + if (maxSeats !== SOURCEBOT_UNLIMITED_SEATS && memberCount >= maxSeats) { + logger.error(`orgHasAvailability: org ${org.id} has reached max capacity`); + return false; + } + + return true; +} + +export const addUserToOrganization = async (userId: string, orgId: number): Promise<{ success: boolean } | ServiceError> => { + const user = await prisma.user.findUnique({ + where: { + id: userId, + }, + }); + + if (!user) { + logger.error(`addUserToOrganization: user not found for id ${userId}`); + return userNotFound(); + } + + const org = await prisma.org.findUnique({ + where: { + id: orgId, + }, + }); + + if (!org) { + logger.error(`addUserToOrganization: org not found for id ${orgId}`); + return orgNotFound(); + } + + const hasAvailability = await orgHasAvailability(org.domain); + if (!hasAvailability) { + return { + statusCode: StatusCodes.BAD_REQUEST, + errorCode: ErrorCode.ORG_SEAT_COUNT_REACHED, + message: "Organization is at max capacity", + } satisfies ServiceError; + } + + const res = await prisma.$transaction(async (tx) => { + await tx.userToOrg.create({ + data: { + userId: user.id, + orgId: org.id, + role: OrgRole.MEMBER, + } + }); + + if (IS_BILLING_ENABLED) { + const result = await incrementOrgSeatCount(orgId, tx); + if (isServiceError(result)) { + throw result; } } + + // Delete the account request if it exists since we've added the user to the org + const accountRequest = await tx.accountRequest.findUnique({ + where: { + requestedById_orgId: { + requestedById: user.id, + orgId: orgId, + } + }, + }); + + if (accountRequest) { + logger.info(`Deleting account request ${accountRequest.id} for user ${user.id} since they've been added to the org`); + await tx.accountRequest.delete({ + where: { + id: accountRequest.id, + } + }); + } + + // Delete any invites that may exist for this user since we've added them to the org + const invites = await tx.invite.findMany({ + where: { + recipientEmail: user.email!, + orgId: org.id, + }, + }) + + for (const invite of invites) { + logger.info(`Deleting invite ${invite.id} for ${user.email} since they've been added to the org`); + await tx.invite.delete({ + where: { + id: invite.id, + }, + }); + } + }); + + if (isServiceError(res)) { + logger.error(`addUserToOrganization: failed to add user ${userId} to org ${orgId}: ${res.message}`); + return res; } -}; \ No newline at end of file + + return { + success: true, + } +}; \ No newline at end of file diff --git a/packages/web/src/lib/errorCodes.ts b/packages/web/src/lib/errorCodes.ts index 85cc2d08..da2c0bd0 100644 --- a/packages/web/src/lib/errorCodes.ts +++ b/packages/web/src/lib/errorCodes.ts @@ -7,16 +7,19 @@ export enum ErrorCode { INVALID_REQUEST_BODY = 'INVALID_REQUEST_BODY', NOT_AUTHENTICATED = 'NOT_AUTHENTICATED', NOT_FOUND = 'NOT_FOUND', + USER_NOT_FOUND = 'USER_NOT_FOUND', + ORG_NOT_FOUND = 'ORG_NOT_FOUND', CONNECTION_SYNC_ALREADY_SCHEDULED = 'CONNECTION_SYNC_ALREADY_SCHEDULED', ORG_DOMAIN_ALREADY_EXISTS = 'ORG_DOMAIN_ALREADY_EXISTS', ORG_INVALID_SUBSCRIPTION = 'ORG_INVALID_SUBSCRIPTION', - MEMBER_NOT_FOUND = 'MEMBER_NOT_FOUND', INVALID_CREDENTIALS = 'INVALID_CREDENTIALS', INSUFFICIENT_PERMISSIONS = 'INSUFFICIENT_PERMISSIONS', CONNECTION_NOT_FAILED = 'CONNECTION_NOT_FAILED', CONNECTION_ALREADY_EXISTS = 'CONNECTION_ALREADY_EXISTS', OWNER_CANNOT_LEAVE_ORG = 'OWNER_CANNOT_LEAVE_ORG', INVALID_INVITE = 'INVALID_INVITE', + INVALID_INVITE_LINK = 'INVALID_INVITE_LINK', + INVITE_LINK_NOT_ENABLED = 'INVITE_LINK_NOT_ENABLED', STRIPE_CHECKOUT_ERROR = 'STRIPE_CHECKOUT_ERROR', SECRET_ALREADY_EXISTS = 'SECRET_ALREADY_EXISTS', SUBSCRIPTION_ALREADY_EXISTS = 'SUBSCRIPTION_ALREADY_EXISTS', diff --git a/packages/web/src/lib/newsData.ts b/packages/web/src/lib/newsData.ts index 7eb20e5c..79f533c5 100644 --- a/packages/web/src/lib/newsData.ts +++ b/packages/web/src/lib/newsData.ts @@ -1,6 +1,12 @@ import { NewsItem } from "./types"; export const newsData: NewsItem[] = [ + { + unique_id: "member-approval", + header: "Member Approval", + sub_header: "We've added a toggle to control whether new users need to be approved.", + url: "https://docs.sourcebot.dev/docs/configuration/auth/inviting-members" + }, { unique_id: "analytics", header: "Analytics Dashboard", @@ -9,25 +15,25 @@ export const newsData: NewsItem[] = [ }, { unique_id: "audit-logs", - header: "Audit logs", + header: "Audit Logs", sub_header: "We've added support for audit logs", url: "https://docs.sourcebot.dev/docs/configuration/audit-logs" }, { unique_id: "file-explorer", - header: "File explorer", + header: "File Explorer", sub_header: "We've added support for a file explorer when browsing files.", url: "https://github.com/sourcebot-dev/sourcebot/releases/tag/v4.2.0" }, { unique_id: "structured-logging", - header: "Structured logging", + header: "Structured Logging", sub_header: "We've added support for structured logging", url: "https://docs.sourcebot.dev/docs/configuration/structured-logging" }, { unique_id: "code-nav", - header: "Code navigation", + header: "Code Navigation", sub_header: "Built in go-to definition and find references", url: "https://docs.sourcebot.dev/docs/features/code-navigation" }, @@ -39,7 +45,7 @@ export const newsData: NewsItem[] = [ }, { unique_id: "search-contexts", - header: "Search contexts", + header: "Search Contexts", sub_header: "Filter searches by groups of repos", url: "https://docs.sourcebot.dev/docs/features/search/search-contexts" } diff --git a/packages/web/src/lib/serviceError.ts b/packages/web/src/lib/serviceError.ts index 71132673..051672e1 100644 --- a/packages/web/src/lib/serviceError.ts +++ b/packages/web/src/lib/serviceError.ts @@ -96,6 +96,22 @@ export const notFound = (message?: string): ServiceError => { } } +export const userNotFound = (): ServiceError => { + return { + statusCode: StatusCodes.NOT_FOUND, + errorCode: ErrorCode.USER_NOT_FOUND, + message: "User not found", + } +} + +export const orgNotFound = (): ServiceError => { + return { + statusCode: StatusCodes.NOT_FOUND, + errorCode: ErrorCode.ORG_NOT_FOUND, + message: "Organization not found", + } +} + export const orgDomainExists = (): ServiceError => { return { statusCode: StatusCodes.CONFLICT, diff --git a/packages/web/src/lib/utils.ts b/packages/web/src/lib/utils.ts index 3526217a..1a3ff68c 100644 --- a/packages/web/src/lib/utils.ts +++ b/packages/web/src/lib/utils.ts @@ -19,6 +19,27 @@ export function cn(...inputs: ClassValue[]) { return twMerge(clsx(inputs)) } +/** + * Gets the base URL from Next.js headers + * @param headersList The headers from Next.js headers() function + * @returns The base URL (e.g., "https://example.com") + */ +export const getBaseUrl = (headersList: Headers): string => { + const host = headersList.get('host') || 'localhost:3000'; + const protocol = headersList.get('x-forwarded-proto') || 'http'; + return `${protocol}://${host}`; +} + +/** + * Creates an invite link URL from the base URL and invite ID + * @param baseUrl The base URL of the application + * @param inviteLinkId The invite link ID + * @returns The complete invite link URL or null if no inviteLinkId + */ +export const createInviteLink = (baseUrl: string, inviteLinkId?: string | null): string | null => { + return inviteLinkId ? `${baseUrl}/invite?id=${inviteLinkId}` : null; +} + /** * Adds a list of (potentially undefined) query parameters to a path. * @@ -119,7 +140,7 @@ export const getAuthProviderInfo = (providerId: string): AuthProviderInfo => { id: "microsoft-entra-id", name: "Microsoft Entra ID", displayName: "Microsoft Entra ID", - icon: { + icon: { src: microsoftLogo, }, }; diff --git a/packages/web/src/middleware.ts b/packages/web/src/middleware.ts index b373ff2f..5e4c5f1c 100644 --- a/packages/web/src/middleware.ts +++ b/packages/web/src/middleware.ts @@ -13,7 +13,9 @@ export async function middleware(request: NextRequest) { if ( url.pathname.startsWith('/login') || url.pathname.startsWith('/redeem') || - url.pathname.startsWith('/signup') + url.pathname.startsWith('/signup') || + url.pathname.startsWith('/invite') || + url.pathname.startsWith('/onboard') ) { return NextResponse.next(); }