* feat(shared): rename user workspaces loader
* feat(gatekeeper): intoduce the enterprise plan
* chore(server): remove more "magic strings"
* refactor(shared): extract user is workspace admin to an auth fragment
* feat(shared): add can createWorkspacePolicy
* feat(workspaces): WIP block workspace creation
* feat(server): add can create workspace checks
* feat(workspaces): enforce canCreateWorkspace policy on the workspace
creation mutation
* feat(shared): allow workspace admins and guests to create workspaces
even if they are part of an exclusive workspace
* test(shared): use test fake properly
* fix(server): eligble workspace typing fixes
* test(shared): fix more workspace fakes
* fix(workspacesCore): add missing loader
* fix(shared): use proper exhaustive switch cases, they stop bugs from
happening
* feat(shared): introduce workspacePlanHasAccessToFeature function with tests
* chore(workspaces): fix more PR comments
* fix(workspaces): naming
* fix(workspaces): some more
* feat(shared): generalize workspace feature access policy
* feat(workspaces): allow toggling the isExclusive option for workspace
update
* feat(shared): rename user workspaces loader
* feat(gatekeeper): intoduce the enterprise plan
* chore(server): remove more "magic strings"
* refactor(shared): extract user is workspace admin to an auth fragment
* feat(shared): add can createWorkspacePolicy
* feat(workspaces): WIP block workspace creation
* feat(server): add can create workspace checks
* feat(workspaces): enforce canCreateWorkspace policy on the workspace
creation mutation
* feat(shared): allow workspace admins and guests to create workspaces
even if they are part of an exclusive workspace
* test(shared): use test fake properly
* fix(server): eligble workspace typing fixes
* test(shared): fix more workspace fakes
* fix(workspacesCore): add missing loader
* fix(shared): use proper exhaustive switch cases, they stop bugs from
happening
* feat(shared): introduce workspacePlanHasAccessToFeature function with tests
* chore(workspaces): fix more PR comments
* fix(workspaces): naming
* fix(workspaces): some more
* feat(gatekeeper): intoduce the enterprise plan
* chore(server): remove more "magic strings"
* test(shared): fix plan tests with enterprise case
* Small change to format plan name
---------
Co-authored-by: Mike Tasset <mike.tasset@gmail.com>
* feat(viewer): embedded viewer option to hide speckle branding
* chore(viewer): can edit embed options policy
* chore(embeds): tests for new policy and gql
* first batch of changes
* tests fix
* FE fixed
* renaming constants
* test fixes
* moar test fixes
* another test fix
* reenable app rover check
---------
Co-authored-by: Gergő Jedlicska <gergo@jedlicska.com>
* 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>
* 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
* 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>