Commit Graph

336 Commits

Author SHA1 Message Date
Kristaps Fabians Geikins 62cc07b072 feat(server): add new workspace disclaimer fields to user meta (#4434)
* feat(server): add new workspace disclaimer fields to user meta

* unrelated tests fix
2025-04-16 12:47:33 +03:00
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
Alessandro Magionami 0c18acc452 Alessandro/web 2945 comments hide body (#4385)
* chore(core): move limits logic into shared

* feat(comments): limit text and rawText for comments

* chore(core): removed test moved to shared

* chore(comments): generate gql types

* feat(comments): rework comment history limits

* chore(comments): fix tests

* chore(shared): add dayjs as dependency

---------

Co-authored-by: Gergő Jedlicska <gergo@jedlicska.com>
2025-04-15 10:44:12 +02: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
Gergő Jedlicska 61ca128ce2 gergo/multiCurrency (#4379)
* feat(gatekeeper): support multiple currencies

* feat(helm): add new currency based prices to helm chart

* chore(env): add example currency based pricing values

* fix(ci): update price ids to the proper values

* feat(helm): rename price ids to fit multi currency

* feat(gatekeeper): currency input for checkout session

* Updated prices in the FE

* chore(gatekeeper): remove old checkout session flow

* Updated prices in the FE

* Fix FE

* Fix pipeline

---------

Co-authored-by: Mike Tasset <mike.tasset@gmail.com>
2025-04-11 17:37:47 +02:00
Alessandro Magionami d9cdeb4bf5 chore(core): make resolver model or project check more reliable 2025-04-11 15:15:21 +02:00
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
Chuck Driesler f29fc322a3 fix(authz): allow optional workspace id to validate move (#4367) 2025-04-10 11:04:59 +01: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
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
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
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
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 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
Alessandro Magionami d067c5148c chore(core): limit versions 2025-04-04 10:54:15 +02: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
Kristaps Fabians Geikins a83bae8d84 feat: Workspace/ProjectCollaborator/WorkspaceCollaborator seatType (#4284)
* Workspace & ProjectCollaborator seat type

* minor adjustment to FE

* minor adjustment to FE
2025-03-31 13:07:35 +03:00
Kristaps Fabians Geikins c54d15fd93 feat: authz frontend foundation + reworked errors (#4275)
* feat: authz frontend foundation + reworked errors

* lint fixes

* test fix

* fixed noCache() util
2025-03-27 16:13:35 +02:00
Gergő Jedlicska 4c28697d0c feat(shared): rework policy internals to work with loader errors in checks and policy fragments (#4276)
* feat(shared): rework policy internals to work with loader errors in checks and policy fragments

* fix(server): auth reintegration
2025-03-27 11:30:54 +01:00
Kristaps Fabians Geikins a6a4ceee86 feat: true-myth result structures & other auth policy improvements (#4262)
* fixing up typing

* better dynamic loader mechanism

* buildReqLoaders cleanup

* added caching to loaders

* ensuring all loaders are async

* fe2 plugins error handling fix

* feat(shared): true-myth result structures & other auth policy improvements

* moving workspaceCore loaders to correct place
2025-03-25 17:49:02 +01:00
Chuck Driesler c6e0714bc4 chore(authz): hoist authorizeresolver (#4253)
* chore(authz): hoist deleteStreamAndNotify

* chore(authz): hoist updateStreamAndNotify

* chore(authz): comment
2025-03-24 16:51:19 +00:00
Gergő Jedlicska 25d0802234 fix(server): project access fix for discoverable projects (#4246) 2025-03-22 15:42:35 +01:00
Gergő Jedlicska 968d2f2520 auth/lib (#4242)
* wip

* wip

* feat(authz): wip policy shape

* wip

* fix(authz): canReadProject with latest pattern

* wip

* feat(shared): simplify authz checks and policies

* feat(shared): port role weights into shared

* test(shared): some more tests for authz

* test(shared): more query project tests

* typo!

* feat(shared): ff loading refinements

* feat(shared): example authorization policy integration

* authz loaders init

* chore(authz): naming etc

* wip

* fix(authz): authz error objects

Co-authored-by: Kristaps Fabians Geikins <fabis94@users.noreply.github.com>
Co-authored-by: Gergő Jedlicska <gjedlicska@users.noreply.github.com>

* fix(authz): use correct role weights

* chore(authz): use codes from errors in tests

* chore(authz): wow

* chore(authz): fix more tests, add more tests

* chore(authz): fix some tests, add some tests (again)

* fix(authz): fix tests again

* fix(server): you need to await !!!! otherwise it crashes the server.

---------

Co-authored-by: Charles Driesler <chuck@speckle.systems>
Co-authored-by: Kristaps Fabians Geikins <fabis94@users.noreply.github.com>
Co-authored-by: Gergő Jedlicska <gjedlicska@users.noreply.github.com>
2025-03-21 16:37:36 +01:00
Chuck Driesler 66da283a79 Revert "feat(authz): shared authz pipeline (#4151)" (#4241)
This reverts commit cb8aa31b66.
2025-03-21 15:41:17 +01:00
Chuck Driesler cb8aa31b66 feat(authz): shared authz pipeline (#4151)
* wip

* wip

* feat(authz): wip policy shape

* wip

* fix(authz): canReadProject with latest pattern

* wip

* feat(shared): simplify authz checks and policies

* feat(shared): port role weights into shared

* test(shared): some more tests for authz

* test(shared): more query project tests

* typo!

* feat(shared): ff loading refinements

* feat(shared): example authorization policy integration

* authz loaders init

* chore(authz): naming etc

* wip

* fix(authz): authz error objects

Co-authored-by: Kristaps Fabians Geikins <fabis94@users.noreply.github.com>
Co-authored-by: Gergő Jedlicska <gjedlicska@users.noreply.github.com>

* fix(authz): use correct role weights

* chore(authz): use codes from errors in tests

* chore(authz): wow

* chore(authz): fix more tests, add more tests

* chore(authz): fix some tests, add some tests (again)

* fix(authz): fix tests again

---------

Co-authored-by: Gergő Jedlicska <gergo@jedlicska.com>
Co-authored-by: Kristaps Fabians Geikins <fabis94@users.noreply.github.com>
Co-authored-by: Gergő Jedlicska <gjedlicska@users.noreply.github.com>
2025-03-21 14:45:36 +01:00
Kristaps Fabians Geikins ebade45d43 feat: remove project discoverability concept from UI (#4125)
* feat: remove project discoverability concept from UI

* test fix
2025-03-07 13:09:03 +02:00
Kristaps Fabians Geikins 954b1a9f11 feat: plan prices accurately read from Stripe (#4104)
* WIP prices + new caching utils

* cached workspace plan prices

* GQL API done

* integrated in frontend

* fixed missing FF

* CR fixes

* integration tests

* removed non-existant team yearly env var
2025-03-05 12:23:38 +02:00
Iain Sproat ce08e5e02d refactor(server): logging directory renamed to observability (#4077) 2025-02-28 08:43:54 +00:00
andrewwallacespeckle 8c69f22e27 feat: Update user tags in Mailchimp when user completes onboarding questions (#4000)
* Add new updateMailchimpMemberTags function and use it in FE

* Pass tag data from FE

* Plan > Use case

* move onboarding types to shared package

* Check newsletter consent

* Changes from PR

* GQL
2025-02-27 11:29:00 +00: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
Kristaps Fabians Geikins 4b7740eb17 Merge branch 'main' into fabians/web-2415-6 2025-02-17 15:15:52 +02:00
Kristaps Fabians Geikins f51d632ef7 Merge branch 'main' into fabians/web-2415-4 2025-02-17 14:23:33 +02:00
Kristaps Fabians Geikins 4dcfbb251b chore(server): moving out branch sub reporting to separate listeners 2025-02-17 13:56:02 +02:00
Kristaps Fabians Geikins 4278e20467 chore(server): refactor activityStream invocations - batch #3 - branches 2025-02-17 13:55:43 +02:00
Mike f376cfcc46 Fix: Always force email verification (#3990) 2025-02-15 08:30:57 +01:00
andrewwallacespeckle 967eec9db4 Sanitize model names in server (#3970) 2025-02-12 16:50:02 +01:00
Gergő Jedlicska c4a6da410b feat(core): drop the closure table pls (#3900)
* feat(core): drop the closure table pls

* feat(core): remove closures feature flag

* feat(core): remove more closure stuff

* feat(core): only drop closure table if it exists
2025-02-07 14:06:53 +01:00
Iain Sproat ebc0f84c96 fix(server): previewUrl assumed project would always be found (#3947)
- adds guard against null project
2025-02-06 17:50:04 +00:00
Iain Sproat 0ce23be6f3 chore(logging): log messages related to a request should include request ID (#3945)
- this requires passing the request logger through to the method invoking the logger
2025-02-06 16:04:51 +00:00
Alessandro Magionami 276c3a761c fix(emails): add ff for new email verification flow (#3893)
* fix(emails): add ff for new email verification flow

* test(emails): disable test with ff off
2025-01-24 19:39:55 +01:00
Kristaps Fabians Geikins 9b46747815 chore(server): refactor activityStream invocations - batch #6 - project invites 2025-01-24 18:35:21 +02:00
Kristaps Fabians Geikins 9775c488a1 chore(server): moving out version sub reporting to separate listeners 2025-01-24 17:52:34 +02:00
Gergő Jedlicska a282220a72 chore(server): fix nullable type for model author (#3883)
* chore(server): fix nullable type for model author

* updated fe2 gql types

---------

Co-authored-by: Kristaps Fabians Geikins <fabis94@live.com>
2025-01-24 16:40:25 +01:00