Commit Graph
81 Commits
Author SHA1 Message Date
Marshall Bowers ec66f8611e collab: Add endpoint for initiating a billing subscription (#15452)
This PR adds a new `POST /billing/subscriptions` endpoint that can be
used to initiate a billing subscription.

The endpoint will use the provided `github_user_id` to look up a user,
generate a Stripe Checkout session, and then return the URL.

The caller would then redirect the user to the URL to initiate the
checkout flow.

Here's an example of how to call it:

```sh
curl -X POST "http://localhost:8080/billing/subscriptions" \
     -H "Authorization: <ADMIN_TOKEN>" \
     -H "Content-Type: application/json" \
     -d '{"github_user_id": 12345}'
```

Release Notes:

- N/A
2024-07-29 17:31:36 -04:00
Marshall Bowers e92b7773db collab: Extract contributor endpoints to their own module (#15251)
This PR extracts the contributor endpoints to their own module for
organizational purposes.

Release Notes:

- N/A
2024-07-25 23:02:32 -04:00
Marshall Bowers 1de0bc523d collab: Add renovate[bot] to the GET /contributor endpoint (#15250)
This PR adds the `renovate[bot]` user to the `GET /contributor` endpoint
so that it passes the CLA check.

I patched this temporarily by adding a case into the `zed.dev` endpoint
the fronts this one, but I think long-term it will be better for collab
to be the source of truth.

Release Notes:

- N/A
2024-07-25 22:52:59 -04:00
Piotr Osiewicz bb5dbbd617 Rust 1.78 (#11314)
Notable things I've had to fix due to 1.78:
- Better detection of unused items
- New clippy lint (`assigning_clones`) that points out places where assignment operations with clone rhs could be replaced with more performant `clone_into`
Release Notes:

- N/A
2024-05-05 15:02:50 +02:00
Conrad Irwin 12fd882227 Allow setting a channel for new users to auto-join (#9291)
Release Notes:

- Automatically add new users to the #zed channel
2024-03-13 11:11:31 -06:00
Max BrunsfeldandConrad 7484a9083a Fix tracing subscriber after introducing Tokio-console (#8907)
We've also upgraded `Axum` in order to avoid having two versions of that
library in Collab (one due to Tokio-console).

Release Notes:

- N/A

---------

Co-authored-by: Conrad <conrad@zed.dev>
2024-03-05 14:11:33 -08:00
Marshall Bowers d3a531aba7 Enable clippy::needless_question_mark (#8759)
This PR enables the
[`clippy::needless_question_mark`](https://rust-lang.github.io/rust-clippy/master/index.html#/needless_question_mark)
rule and fixes the outstanding violations.

Release Notes:

- N/A
2024-03-02 23:40:39 -05:00
Conrad Irwin ca95203e3c Upload crashes to collab directly (#8649)
This lets us run rustc_demangle on the backtrace, which helps the Slack
view significantly.

We're also now uploading files to digital ocean's S3 equivalent (with a
1 month expiry) instead of to Slack.

This PR paves the way for (but does not yet implement) sending this data
to clickhouse too.

Release Notes:

- N/A
2024-03-01 13:23:44 -07:00
Conrad IrwinandMarshall e1e67992b6 Expose extensions API from api.zed.dev (#8307)
This avoids the need to pay for bandwidth

Co-Authored-By: Marshall <marshall@zed.dev>



Release Notes:

- N/A

Co-authored-by: Marshall <marshall@zed.dev>
2024-02-23 16:08:14 -05:00
Conrad IrwinandMarshall 728fdfbde7 Fix collab (#8298)
Co-Authored-By: Marshall <marshall@zed.dev>

We broke it by deploying two servers simultaneously.

Release Notes:

- N/A

Co-authored-by: Marshall <marshall@zed.dev>
2024-02-23 14:23:15 -05:00
47f21f2bf2 Add telemetry events backend for collab (#8220)
Send telemetry to collab not zed.dev

Release Notes:

- N/A

---------

Co-authored-by: Marshall <marshall@zed.dev>
Co-authored-by: Marshall Bowers <elliott.codes@gmail.com>
2024-02-23 11:13:28 -05:00
9b747ff850 Add an extensions API to the collaboration server (#7807)
This PR adds a REST API to the collab server for searching and
downloading extensions. Previously, we had implemented this API in
zed.dev directly, but this implementation is better, because we use the
collab database to store the download counts for extensions.

Release Notes:

- N/A

---------

Co-authored-by: Marshall Bowers <elliott.codes@gmail.com>
Co-authored-by: Marshall <marshall@zed.dev>
Co-authored-by: Conrad <conrad@zed.dev>
2024-02-15 12:53:57 -08:00
Max BrunsfeldandMarshall e6db1d447d Add requires_zed_cla column to channels table
Don't allow granting guests write access in a call where the channel
or one of its ancestors requires the zed CLA, until that guest has
signed the Zed CLA.

Co-authored-by: Marshall <marshall@zed.dev>
2024-01-22 16:41:24 -08:00
Max BrunsfeldandMarshall 42fbf2bd20 Allow checking CLA signatures by GitHub login
This will be used by CLA Bot.

Co-authored-by: Marshall <marshall@zed.dev>
2024-01-22 13:55:12 -08:00
Max BrunsfeldandMarshall ed77ac1f9c Add API for retrieving the date that a contributor signed the CLA
Co-authored-by: Marshall <marshall@zed.dev>
2024-01-22 13:11:24 -08:00
Max BrunsfeldandMikayla 6af219eb32 Add REST APIs for getting and adding contributors
Co-authored-by: Mikayla <mikayla@zed.dev>
2024-01-22 10:48:33 -08:00
Max Brunsfeld 791081ebff For impersonating access tokens, store impersonatee in the new column
This way, we don't need an index on both columns
2024-01-17 18:06:16 -08:00
Max BrunsfeldandMarshall 090aea60ec Store the impersonator id on access tokens created via ZED_IMPERSONATE
* Use the impersonator id to prevent these tokens from counting
  against the impersonated user when limiting the users' total
  of access tokens.
* When connecting using an access token with an impersonator
  add the impersonator as a field to the tracing span that wraps
  the task for that connection.
* Disallow impersonating users via the admin API token in production,
  because when using the admin API token, we aren't able to identify
  the impersonator.

Co-authored-by: Marshall <marshall@zed.dev>
2024-01-17 18:06:16 -08:00
Joseph T. Lyons 3d97c51a53 Add backtrace hash to collab server panic api 2023-12-18 11:12:23 -05:00
Joseph T. Lyons 001a23685b Add release channel to panic collab upload 2023-12-08 12:10:25 -05:00
Max Brunsfeld e7c9c30c62 Remove dead code for old admin pages 2023-09-13 15:02:59 -07:00
Antonio Scandurra 1830d984c1 Create user record automatically when someone logs in on the website
Now that we are moving out of the private alpha, we should let everyone
in when they try to log into zed.dev.
2023-03-14 12:25:04 +01:00
Joseph T. Lyons af2da0f2f3 Add users to mailing list when using an invite link 2023-01-17 16:46:01 -05:00
Antonio Scandurra 3fac823050 Merge branch 'main' into reconnections-2 2022-12-02 19:09:33 +01:00
Antonio Scandurra 8a5f89eb56 Use i32 to represent Postgres INTEGER types in Rust 2022-12-02 13:58:54 +01:00
Antonio Scandurra 4229c49a0c Replace i32 with u32 for database columns
We never expect to return signed integers and so we shouldn't use
a signed type. I think this was a limitation of sqlx.
2022-12-01 17:47:51 +01:00
Antonio Scandurra 40f2e5730b Start using the new sea-orm backed database 2022-12-01 14:41:59 +01:00
Joseph Lyons 3e14be2bb7 allow users to sign up multiple times without throwing a 500 2022-11-15 20:04:56 -05:00
Max BrunsfeldandAntonio Scandurra 1a3ad561a0 Get integration tests passing with sqlite
Co-authored-by: Antonio Scandurra <antonio@zed.dev>
2022-11-10 11:03:52 -08:00
Antonio Scandurra 231fc0f698 Merge branch 'main' into screen-sharing
# Conflicts:
#	crates/collab/src/integration_tests.rs
#	crates/collab/src/main.rs
#	styles/src/styleTree/workspace.ts
2022-10-21 14:29:45 +02:00
3700985491 Return an optional response when creating users via invites
If the user already exists, we return none. This will allow the web frontend
to avoid reporting a "join alpha" user event but also not error.

Co-Authored-By: Max Brunsfeld <max@zed.dev>
Co-Authored-By: Joseph Lyons <joseph@zed.dev>
2022-10-20 10:52:34 -06:00
Antonio Scandurra aece1d4b9a Delete all live-kit rooms when server is shut down 2022-10-20 14:34:05 +02:00
Max Brunsfeld 40d380a300 Allow impersonating users via the api token, bypassing oauth 2022-10-18 17:36:54 -07:00
Max Brunsfeld 800e91de9f Store entire Config struct on collab AppState 2022-10-18 13:58:03 -07:00
Max Brunsfeld 8cebb04a0f Identify users in amplitude via a separate 'metrics_id' UUID 2022-09-29 13:15:21 -07:00
Max BrunsfeldandJoseph Lyons c623418bcb Make device_id optional on signups table
This way, signup won't fail if for some reason, the
user's client-side JS doesn't provide an amplitude
device id.

Co-authored-by: Joseph Lyons <joseph@zed.dev>
2022-09-27 16:04:01 -07:00
Max BrunsfeldandJoseph Lyons be778209ee Link signups to users in telemetry via a stored device_id
Co-authored-by: Joseph Lyons <joseph@zed.dev>
2022-09-26 12:49:04 -07:00
Max BrunsfeldandNathan Sobo e24b305f5b Return the metrics id from the signup-creation API
Co-authored-by: Nathan Sobo <nathan@zed.dev>
2022-09-22 14:37:25 -07:00
Max Brunsfeld a962bb8114 Update user retrieval API to take both github user id and github login 2022-09-20 15:41:00 -07:00
Max Brunsfeld 15da5c9c96 Start storing users' github user id 2022-09-20 09:44:56 -07:00
Max Brunsfeld 334f5995cf Remove bulk user creation admin API 2022-09-19 14:34:37 -07:00
Max Brunsfeld 9e2651847b Add waitlist summary API 2022-09-19 14:19:00 -07:00
Max Brunsfeld 0768e2b26f Update APIs and DB interactions to reflect email confirmation step 2022-09-19 14:19:00 -07:00
Max BrunsfeldandNathan Sobo 5d542ae0a6 Add collab APIs for new signup flow
Co-authored-by: Nathan Sobo <nathan@zed.dev>
2022-09-19 14:19:00 -07:00
ForLoveOfCatsandMikayla fbea44bc5c One big cleanup pass of clippy lints
Co-authored-by: Mikayla <mikayla@zed.dev>
2022-08-10 16:51:01 -07:00
Antonio Scandurra 45a6d04eb4 Allow querying active user counts for people that have collaborated 2022-07-18 10:29:10 +02:00
Max Brunsfeld dad538b510 Allow the web client to specify activity bucket durations 2022-07-15 16:46:44 -07:00
Max Brunsfeld e817042e8d Add admin API for counting users with a given amount of activity 2022-07-15 16:46:44 -07:00
Max Brunsfeld 04d2c7f36a Add rest API for user activity timeline 2022-06-28 15:40:48 -07:00
Max Brunsfeld 9d3cddede7 🎨 Tweak some names dealing with user activity
* Rename `project_activity_summary` to `top_users_activity_summary`
to make clearer the distinction between it and the per-user summary.
* Rename `user_activity_summary` to `user_activity_timeline`, since
its output is structured a bit differently than the courser-grained
"summary" returned by the top-user query.
* Rename `ActivityDuration` -> `ActivityPeriod`
2022-06-28 15:37:56 -07:00