Commit Graph

129 Commits

Author SHA1 Message Date
Kristaps Fabians Geikins 10832655d4 fix(server): all project created subs firing for workspace guests + req ctx cache fix for subs (#4453)
* WIP sub fix

* fix sub resolver caching issue
2025-04-16 11:21:17 +03:00
Chuck Driesler cebae959ae feat(authz): Workspace.canInvite and Project.canInvite (#4419) 2025-04-16 09:01:53 +01:00
Kristaps Fabians Geikins b287702145 feat: version checks + generally improved auth error messaging (#4384)
* foundation for new version checks

* canUpdate policy

* can req render

* canReceive

* BE implemented

* FE checks implemented?

* test fix

* improved auth error messaging

* fix lint
2025-04-14 10:43:48 +01:00
Chuck Driesler 7cddc87deb fix(workspaces): use new roles for project moves on new plans (#4316)
* chore(workspaces): move project role mapping in tests

* fix(workspaces): new world move project to workspace

* chore(workspaces): adjust move project tests

* fix(workspaces): that's on me
2025-04-08 15:32:05 +01:00
Chuck Driesler cb7243cfbe feat(authz): Project.canCreateModel and Project.canMoveToWorkspace policies (#4342)
* feat(authz): Project.canCreateModel policy

* feat(authz): Project.canMoveToWorkspace policy

* fix(authz): expose policies as permissions objects

* chore(authz): actually use the policies lol

* chore(authz): add tests for new policies

* fix(authz): skip affected test

* fix(authz): pr comments

* fix(authz): better errors, better tests

* chore(authz): remove references to deleted error
2025-04-08 15:29:12 +01:00
Gergő Jedlicska a3644a50c5 gergo/web 2931 introduce missing workspace plans (#4323)
* fix(gatekeeper): missing priceId-s should stop the server from booting

* feat(shared): add all new workspace plans

* feat(billing): add new world plans

* feat(ci): use stripe sandbox id-s from test env vars

* chore(ci): remove defunct stripe context

* chore(server-env): fix server env example

* feat(gatekeeper): add missing plans to graphql schema

* test(gatekeeper): update plan upgrade tests to match implementation

* fix(ci): update ci .env source

* fix(ci): we do need some secrets from stripe

* fix(ci): run gql schema introspect with the test env

* fix(frontend): format new plan names

* chore(ci): temp disable gql schema checks

* feat(helm): add unlimited seat prices env vars

* feat(helm): add unlimited seat prices to values

* feat(gatekeeper): do not load priceId-s as a side effect, load with module init
2025-04-07 15:24:57 +02:00
Kristaps Fabians Geikins 820a1e2ebf feat(server): workspace roles taken into account in project queries (#4319)
* Workspace.projects fixed

* Query.project tested & fixed

* personalOnly flag added

* withProjectRoleOnly flag

* authorizeResolver implicit workspace roles

* minor cleanup

* reorg + support for throwing auth errors

* global error mapping

* undo special borkage

* CR fixes

* more CR fixes

* shared tests fix

* minor adjustment

* tests fix

* see if removing cached roles fixes it?

* more fixes

* clean up debugging garbage
2025-04-07 12:52:07 +03:00
Kristaps Fabians Geikins e3d3c1446b feat: enable domain discoverability on workspace creation (#4235)
* frontend changes implemented

* WIP BE

* backend seems to work

* CR fixes
2025-04-07 12:34:45 +03:00
Chuck Driesler 35e99d6ee7 feat(workspaces): emit who will be added to workspace for a given project move (#4332)
* wip

* feat(workspaces): preflight service wip

* feat(workspaces): move project to workspace dry run

* fix(workspaces): add tests and refine query

* chore(workspaces): gqlgen
2025-04-07 10:27:08 +01:00
Chuck Driesler 855185245e feat(workspaces): consolidate workspace role/seat reporting (#4315)
* feat(workspaces: shuffle seat type counts around

* fix(workspaces): use new counts

* fix(workspaces): better field placement

* Updated FE

* chore(workspaces): fix tests

* fix(workspaces): use correct flags

* fix(workspaces): correct another test

* fix(workspaces): use correct model count function

---------

Co-authored-by: Mike Tasset <mike.tasset@gmail.com>
2025-04-04 10:27:49 +01:00
Gergő Jedlicska f501cc4ad5 gergo/web 2888 workspace project cancreate (#4294)
* WIP can create project

* WIP can create project more work

* complete body, stencil tests

* feat(shared): move workspace plan types into shared

* test progress wip

* feat(shared): add more logic to canCreateWorkspaceProject

* a few more tests, as a treat

* chore(authz): round out tests

* fixed loaders, new GQL checks, dataLoaders in auth loaders

* fix(authz): get workspace limits loader

* chore(authz): update loaders

* frontend fixed up to snuff

* fix(authz): fix workspace plans for tests

* fix(authz): classic

* fix(authz): 0 counts

---------

Co-authored-by: Chuck Driesler <chuck@speckle.systems>
Co-authored-by: Kristaps Fabians Geikins <fabis94@live.com>
2025-04-01 16:38:20 +01:00
Alessandro Magionami 57c6763953 chore(workspaces): fix imports 2025-03-31 17:39:15 +02:00
Alessandro Magionami de1054720b feat(workspaces): member by role counts 2025-03-31 17:15:36 +02:00
Chuck Driesler b1da1d97a2 fix(workspaces): domain compliance by slug (#4295) 2025-03-31 13:36:22 +01:00
Mike b1e3a4bb72 Feat: Add createdAt to workspace team WorkspaceCollaborator (#4227) 2025-03-20 12:50:10 +01:00
Kristaps Fabians Geikins e24c26e3d2 feat: getting rid of defaultProjectRole setting (#4221)
* feat: getting rid of defaultProjectRole setting

* get stdout reporting in CI

* yarn lock fix

* fix package.json

* better CI test output

* pinning mocha-multi
2025-03-20 12:58:30 +02:00
Chuck Driesler d39c52a324 feat(regions): use queue for moves (#4060)
* chore(regions): failing test for moving blobs

* fix(blobs): use blob storage table

* chore(regions): include file_uploads table for thoroughness

* fix(regions): extract repeated string to utils

* chore(regions): move validation as own service

* feat(regions): update project region key after move

* chore(regions): update tests to make gql requests

* feat(regions): queue wip

* fix(regions): trigger job instead of performing change synchronously

* chore(regions): update tests for job queue

* fix(regions): use the queue
2025-03-20 10:35:39 +00:00
Kristaps Fabians Geikins b55e197d00 chore(server): refactor seat updated to be its own event (#4214)
* chore(server): refactor seat updated to be its own event

* minor cleanup

* test fix
2025-03-19 12:17:27 +02:00
Kristaps Fabians Geikins d903e8ffc4 feat(server): support editor -> viewer seat downgrades (#4181)
* new seat based project role checks implemented

* everything done

* minor bugfix
2025-03-14 14:21:25 +02:00
Kristaps Fabians Geikins 28b49107b7 feat(server): upgrade workspace seat type (#4158)
* feat(server): upgrade workspace seat type

* test/lint fixes
2025-03-11 12:41:18 +02:00
Kristaps Fabians Geikins fb6dc448ca feat(server): prevent viewer seat from becoming project contributor/owner + extra fixes (#4117)
* unrelated fixes that i noticed

* tests for fix

* tests & working restrictions

* test fix

* test fixx
2025-03-06 13:26:16 +02:00
Chuck Driesler 063750cac7 feat(workspaces): track last visited workspace and project (#4086)
* feat(workspaces): track last visited workspace and project

* fix(workspaces): some renaming

* fix(workspaces): appease ts

* fix(tests): repair meta tests
2025-03-03 22:35:01 +00:00
Iain Sproat 04f84c31f3 fix(server/automate): logger should have request context and request ID sent to execution engine (#4092)
* fix(server/automate): logger should have request context

* WIP - pass in request Id

* WIP

* fix(automate): better logging for automate processes

* chore(automate): slight log improvement

* fix(automate): just in case

---------

Co-authored-by: Charles Driesler <chuck@speckle.systems>
2025-02-28 18:22:00 +00:00
Chuck Driesler 3cc68bb0e2 feat(automate): use updated hybrid function search (#4085)
* fix(automate): use new function query for workspace functions

* fix(automate): include workspace resource claims in auth flow

* chore(automate): do not use btoa
2025-02-28 16:03:34 +00:00
Alessandro Magionami a9dd835de9 feat(workspaces): team resolver for limited workspace (#4040) 2025-02-25 12:19:50 +01:00
Kristaps Fabians Geikins eb050bb649 feat(server): new plans + disabled checkout/upgrade/sidegrade (#4057)
* feat(server): new plans + disabled checkout/upgrade/sidegrade

* pushed in CR fixes
2025-02-25 09:46:46 +01:00
Kristaps Fabians Geikins 6051917b59 chore(server): refactor activityStream invocations - batch #7 - streams (#4014)
* chore(server): refactor activityStream invocations - batch #7 - streams

* test fix

* more test fixes

* CR comment fix
2025-02-24 12:34:56 +02:00
Gergő Jedlicska 5b0bb3b65d gergo/web 2635 set up new plans in the backend (#4031)
* feat(gatekeeper): add new free plan option as an unpaid workspace plan

* feat(workspaces): add feature flag for new plans

* feat(gatekeeper): add free plan option to workspace plans

* Added button in FE

* Make button more beautifuller

* feat(gatekeeper): enable creating workspaces on a free plan

* Fix

* Fix FE linting

---------

Co-authored-by: Mike Tasset <mike.tasset@gmail.com>
2025-02-21 14:49:04 +01:00
Alessandro Magionami bc70332d97 fix(workspaces): block god mode on mutations (#3999) 2025-02-17 14:41:23 +01:00
Kristaps Fabians Geikins 4b7740eb17 Merge branch 'main' into fabians/web-2415-6 2025-02-17 15:15:52 +02:00
Gergő Jedlicska bf80347abf gergo/web 2664 workspace backend powered metrics (#3985)
* feat(workspaces): delete workspace emit event

* feat(workspaces): move workspace group metrics to the backend

* Removed FE mixpanel group update

* Remove fragment

* test(gatekeeper): add unittest to new gatekeeper service

---------

Co-authored-by: Mike Tasset <mike.tasset@gmail.com>
2025-02-17 09:50:16 +01:00
Chuck Driesler 4cbeeef0d0 Automate API Circuit breaker (#3914)
* fix(automate): invokeSafeJsonRequest

* fix(automate): correct fallback values
2025-01-30 15:26:12 +00:00
Chuck Driesler 35b59ca4f2 chore(workspaces): drop defaultLogoIndex (#3898) 2025-01-28 08:56:13 +01:00
Gergő Jedlicska 188c333921 fix(workspaces): non region enabled workspace project creation (#3847)
* fix(workspaces): non region enabled workspace project creation

* fix(projects): remove duplicate getProject repo function

This was the cause of the default project region switch bug, we had two
almost identical implementations...
2025-01-27 17:45:55 +01:00
Kristaps Fabians Geikins 9b46747815 chore(server): refactor activityStream invocations - batch #6 - project invites 2025-01-24 18:35:21 +02:00
Chuck Driesler 80a0573894 fix(workspaces): return role as string (#3886) 2025-01-24 14:25:40 +01:00
Alessandro Magionami 9973894b7d chore(workspaces): fix resolver 2025-01-22 10:33:39 +01:00
Alessandro Magionami abf0ccf835 chore(workspaces): check user email verified and add user to workspace 2025-01-22 09:57:38 +01:00
Alessandro Magionami 6d0f08b7b5 feat(workspaces): approve join request (#3833)
* feat(workspaces): approve join request

* chore(workspaces): add missing dep to resolver call

* chore(workspaces): use commandFactory
2025-01-16 16:46:59 +01:00
Gergő Jedlicska 35bc6918cb gergo/web 2428 academia should be free business (#3831)
* feat(server): workspace shoul equal unpaid business

* feat(server): add free workspace plans

* feat(gatekeeper): rename plans to invoiced
2025-01-16 10:21:59 +01:00
Alessandro Magionami 37ede3b1b2 Alessandro/web 2360 request to join workspace (#3799)
* feat(workspaces): request to join workspace mutation

* feat(workspaces): random email in test

* feat(workspaces): update email

* feat(workspaces): code review changes

* chore(workspaces): fix tests
2025-01-14 12:49:21 +01:00
Alessandro Magionami c9fe57fa74 Merge branch 'main' of github.com:specklesystems/speckle-server into alessandro/web-2359-dismiss-joinable-workspace 2025-01-13 19:09:48 +01:00
Alessandro Magionami ee5797af28 feat(workspaces): fix dismiss and tests 2025-01-10 18:21:14 +01:00
Chuck Driesler a784a72365 feat(workspaces): add workspaceRole to LimitedUser type (#3721)
* feat(workspaces): add workspaceRole to LimitedUser type

* fix(users): require workspace access for query
2025-01-09 15:11:18 +01:00
Alessandro Magionami c32026b6d6 feat(workspaces): dismiss workspace mutation 2025-01-09 11:21:46 +01:00
Gergő Jedlicska c186b23db6 feat(gatekeeper): send workspace trial expiry emails 2024-12-13 17:30:02 +01:00
Gergő Jedlicska ded5b0a78b fix(workspaces): make sure to return from switch statement (#3680) 2024-12-12 10:42:49 +01:00
Gergő Jedlicska 229a19c981 gergo/workspaceAdmin (#3677)
* feat(workspaces): add unified paginated items service

* feat(workspaces): admin update workspace plan
2024-12-11 18:54:24 +01:00
Kristaps Fabians Geikins 8d0cbad8b6 feat(server): multi region blob support (#3653)
Co-authored-by: Iain Sproat <68657+iainsproat@users.noreply.github.com>
2024-12-10 09:05:18 +00:00
Chuck Driesler b4aa0f7608 fix(sso): disable slug edit if sso enabled (#3621)
* fix(sso): disable slug edit if sso enabled

* fix(sso): guard on backend

* chore(sso): more test fixes
2024-12-03 18:05:04 +00:00