Commit Graph

2126 Commits

Author SHA1 Message Date
Alessandro Magionami 05e4e51c1a Merge branch 'main' of github.com:specklesystems/speckle-server into alessandro/web-2944-versions-limits 2025-04-11 14:54:13 +02:00
Kristaps Fabians Geikins f59c0a72c6 feat: model related auth checks in BE & FE (#4374)
* limit fragment cleanup

* be updated

* model checks in FE

* tests fix

* fakes util fix
2025-04-11 10:09:54 +03:00
Kristaps Fabians Geikins b6c21fd506 feat: comment read/write auth policies in BE & FE (#4368)
* webhooks perm minor fix

* tryna get fileimport service to work

* new comment policies - shared

* BE done?

* checks implemented in FE

* lint fix

* tests fix

* readme fix
2025-04-10 15:14:34 +03:00
Gergő Jedlicska d5f81cc174 feat(auth): add worksapce read scope to desktop apps (#4365)
* feat(auth): add worksapce read scope to desktop apps

* fix(scopes): only add workspace scopes if workspaces enabled

---------

Co-authored-by: Charles Driesler <chuck@speckle.systems>
2025-04-10 11:58:23 +01:00
Chuck Driesler f29fc322a3 fix(authz): allow optional workspace id to validate move (#4367) 2025-04-10 11:04:59 +01:00
Chuck Driesler 32796d3dd3 fix(authz): allow optional project id (#4363) 2025-04-10 10:12:00 +01:00
Alessandro Magionami be48143d8a chore(core): disable test if workspaces is disabled 2025-04-10 10:49:49 +02:00
Alessandro Magionami 36b3f2b11a Merge branch 'main' of github.com:specklesystems/speckle-server into alessandro/web-2944-versions-hide-referencedobject 2025-04-10 10:16:27 +02:00
Alessandro Magionami 73a8719556 feat(core): complete referencedObject resolver for models and projects versions 2025-04-10 10:10:49 +02:00
Alessandro Magionami 96698452f2 feat(core): limit returned commits in streams and breanches 2025-04-10 10:09:54 +02:00
Mike a3ce9fad12 Feat: Update pricing plan features (#4357)
* Feat: Update pricing plan features

* Clean up old stuff

* Add features to old plans

* pls dont complain anymore

* pls work

* fix(shared): add back features to the unlimited plan

---------

Co-authored-by: Gergő Jedlicska <gergo@jedlicska.com>
2025-04-09 21:45:28 +02:00
Chuck Driesler a67022f5fb fix(authz): branches are models too (#4360)
* fix(authz): branches are models too

* fix(authz): also check token resource access
2025-04-09 20:15:51 +02:00
Gergő Jedlicska 5fce827ad7 feat(gatekeeper): calculate available seats from purchased and used (#4362) 2025-04-09 19:51:02 +02:00
Chuck Driesler ea114fd394 fix(authz): only exempt empty main model (#4358) 2025-04-09 15:27:03 +01:00
Kristaps Fabians Geikins 5f88f562d3 feat: updated various "read/update" settings related permission checks (#4356)
* a bunch more tests

* updated GQL resolvers

* project create checks implemented

* project update/settings related checks in FE

* a bunch of tests

* tests fix

* disable app schema check
2025-04-09 16:13:09 +03:00
Gergő Jedlicska b24add762c feat(gatekeeper): disable workspace plan migrations (#4354) 2025-04-09 13:02:28 +02:00
Gergő Jedlicska b71f0bd5c4 feat(gatekeeper): re-enable workspace plan migrations (#4352) 2025-04-08 20:00:18 +02:00
Iain Sproat 5fc2d5c089 Merge pull request #4180 from specklesystems/iain/preview-service-handle-errors
fix(preview service): handle errors and failures
2025-04-08 17:55:49 +01:00
Gergő Jedlicska 4a7e8ae5f4 temp disable workspace plan migrations (#4349)
* 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

* WIP workspace migration

* feat(gatekeeper): migrate old workspace plans to new

* feat(gatekeeper): add more logs to plan migrations

* fix(ci): do not remove the stripe context

* fix(gatekeeper): handle migration errors

* fix(gatekeeper): temp disabling migrations until they can be fixed
2025-04-08 16:58:22 +02: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
Iain Sproat 58ed9fc58b Merge branch 'main' into iain/preview-service-handle-errors 2025-04-08 15:08:00 +01:00
Gergő Jedlicska f217f5b17f Gergo/web 2930 workspace migration script (#4333)
* 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

* WIP workspace migration

* feat(gatekeeper): migrate old workspace plans to new

* feat(gatekeeper): add more logs to plan migrations

* fix(ci): do not remove the stripe context

* fix(gatekeeper): handle migration errors
2025-04-08 16:00:38 +02:00
Kristaps Fabians Geikins ec2fb34283 feat(shared): new policies for minor fragment refactor (#4343)
* canUpdate + reworked fragments

* feat(shared): new policies for minor fragment refactor

* some cleanup

* canUpdate tests

* ensureMinimumProjectRoleFragment test

* checkIfPubliclyReadableProjectFragment tests

* get rid of LoadersOf/ErrorsOf

* python dep update
2025-04-08 12:28:20 +03:00
Alessandro Magionami 8d554e726d feat(core): add workspace limits 2025-04-07 16:55:45 +02:00
Alessandro Magionami d640f23c7d Merge branch 'main' of github.com:specklesystems/speckle-server into alessandro/web-2944-versions-hide-referencedobject 2025-04-07 16:12:41 +02: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
Alessandro Magionami 6f5415e66d Merge branch 'main' of github.com:specklesystems/speckle-server into alessandro/web-2944-versions-hide-referencedobject 2025-04-07 12:48:58 +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
Alessandro Magionami 498f26d8df chore(core): fix tests 2025-04-07 09:51:56 +02:00
Alessandro Magionami a02ea60bc7 Merge branch 'main' of github.com:specklesystems/speckle-server into alessandro/web-2944-versions-hide-referencedobject 2025-04-07 09:37:04 +02:00
Chuck Driesler cb7dead0b6 fix(workspaces): require models to have versions to count towards billing limits (#4325) 2025-04-04 13:42:30 +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
Alessandro Magionami d067c5148c chore(core): limit versions 2025-04-04 10:54:15 +02:00
Alessandro Magionami 5c004f85b1 chore(gatekeeper): get workspace plan repository and dataloader function 2025-04-04 10:51:46 +02:00
Alessandro Magionami 5fbf2e500d chore(core): test get last version repository function 2025-04-04 10:47:21 +02:00
Alessandro Magionami 7e0abd7805 chore(core): create function to return last version for project 2025-04-04 10:42:39 +02:00
Chuck Driesler 6cea72e4f8 feat(workspaces): add query for fetching usage (#4306)
* 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

* feat(workspaces): emit plan usage from BE

* fix(authz): 0 counts

* fix(workspaces): fix counts for 0

* chore(workspaces): gqlgen

* fix(workspaces): update fragment to use new fields

* fix(workspaces): count regional projects correctly

---------

Co-authored-by: Gergő Jedlicska <gergo@jedlicska.com>
Co-authored-by: Kristaps Fabians Geikins <fabis94@live.com>
2025-04-03 09:06:34 +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
Chuck Driesler fd93d69a19 chore(automate): improve error message (#4260)
* chore(automate): improve error message

* fix(automate): better writing
2025-04-01 12:25:16 +01:00
Alessandro Magionami 4a7d37e3d7 Merge pull request #4300 from specklesystems/alessandro/web-2874-return-user-counts-by-role-and-seat-type
Alessandro/web 2874 return user counts by role and seat type
2025-03-31 18:50:15 +02:00
Alessandro Magionami 272eafe25d chore(workspaces): disable test on ff off 2025-03-31 17:59:48 +02: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
Alessandro Magionami 99d9c9a2ad feat(workspaces): seats by type counts in workspace 2025-03-31 16:43:00 +02:00
Alessandro Magionami ef9f16785f Merge pull request #4292 from specklesystems/alessandro/web-2906-list-invitable-workspace-members-in-a-project
Alessandro/web 2906 list invitable workspace members in a project
2025-03-31 16:10:45 +02:00
Alessandro Magionami 8540eedab4 feat(workspaces): code review changes 2025-03-31 15:48:04 +02:00
Iain Sproat 57d63a31c5 Merge pull request #4287 from specklesystems/iain/fileimport-update-expired-file-uploads
fix(file import): garbage collect failed file imports if taking too long
2025-03-31 14:47:11 +01:00