Commit Graph

896 Commits

Author SHA1 Message Date
Alessandro Magionami 0ac36af93e Alessandro/web 1659 workspace limits (#2733)
* chore(workspaces): billing version limit graphql schema

* chore(workspaces): billing member role required

* chore(core): test helper for random string

* chore(core): test helpers

* chore(workspaces): workspaces billing version resolver

* chore(workspaces): rename version to versionsCount
2024-08-26 17:53:34 +02:00
Iain Sproat 131918b428 fix(server): default max multi-part file upload greater than objects (#2742)
- when sending Speckle objects to the server, they are batched into multi-part files
- a multi-part file therefore contains one or more Speckle objects
- the maximum limit for the multi-part file must therefore be greater than the maximum limit for a single Speckle object
2024-08-26 16:42:33 +01:00
Mike 01c9fb4e55 Feat: Workspace creation wizard should allow for optional logo (#2757)
* Fixed reactivity, added workspace logo to create workspace modal

* Reverse order so name is focussed first

* Fix typo

* feat(workspaces): allow sending the logo on ws creation

* Fix avatar uploading

* Added default index 0

* fix(workspaces): maybe default logo

---------

Co-authored-by: Gergő Jedlicska <gergo@jedlicska.com>
2024-08-26 17:20:43 +02:00
Alessandro Magionami e75d424d0c Merge branch 'main' of github.com:specklesystems/speckle-server into alessandro/web-957-update-webhook 2024-08-26 15:16:27 +02:00
Gergő Jedlicska 08e941f8af Poor man's SSO (#2641)
* Implemented workspace general page

* Added notifications to user input

* Allowed non-admins to view but not edit

* Added redirect to homeroute

* Fixed validation

* Squashed commit of the following:

commit 7bf14ab8af0f76b4c9d0aa87fc08085af7c34959
Author: Chuck Driesler <chuck@speckle.systems>
Date:   Tue Aug 6 19:40:50 2024 +0200

    mob next [ci-skip] [ci skip] [skip ci]

    lastFile:packages/server/modules/workspacesCore/migrations/20240806160740_workspace_domains.ts

commit 8aa3fb0cb052c10eeeb83bf9874ae0d1c065e480
Author: Alessandro Magionami <alessandro.magionami@gmail.com>
Date:   Tue Aug 6 18:54:15 2024 +0200

    mob next [ci-skip] [ci skip] [skip ci]

    lastFile:packages/server/modules/core/domain/userEmails/operations.ts

commit 66dfd0cf6c15a789c8f96a65a3168323e83a7b9e
Author: Chuck Driesler <chuck@speckle.systems>
Date:   Tue Aug 6 18:30:22 2024 +0200

    mob next [ci-skip] [ci skip] [skip ci]

    lastFile:packages/server/modules/workspacesCore/domain/types.ts

Co-authored-by: Alessandro Magionami <alessandro.magionami@gmail.com>

* Move General to workspaces folder

* feat(workspaces): inputs on security section

* feat(workspaces): add domain to workspace mutation

* chore(workspaces): add blocked domains list

* fix(workspaces): modals with buttons

* feat(workspaceDomains): delete domain

* fix(workspaces): use  mutation

* fix(workspaces): present user verified domains as options

* Moved sidebar menu to a composable

* Added coming soon tag back

* feat(workspaces): create domains resolver for workspace

* chore(workspaces): fix tests

* chore(workspaces): fix types

* chore(workspaces): fix linter

* fix(workspaces): do some delete I think

* chore(workspaces): add domainBasedMembershipProtectionEnabled field to workspace

* chore(workspaces): improve validation for email domain

* fix(workspace): query and do the thing

* chore(workspaces): add graphql schema for domainBasedMembershipProtection

* chore(workspaces): lint and test failures

* fix(workspaces): test issues w new field

* feat(workspaces): add discoverability flag

* chore(workspaces): they made me do it

* feat(workspaces): enable toggling domain protection

* feat(workspaces): add discoverability toggle to workspace settings

* feat(workspace): auto enable discoverability on first domain registration

* feat(workspace): discoverability toggle fixes

* fix(eventBus): fix tests

* feat(workspaces): user discoverable workspaces (#2620)

* feat(workspaces): it works just trust me

* fix(workspaces): don't worry about it

* fix(workspaces); happy path success

* fix(workspaces): almost there

* fix(workspaces): successful tests!

* fix(workspaces): we have DISCOVERED (#2621)

* Fixed linting issue

* Updated query

* Updated validation rules

* Updated validation rules

* Fix unsaved file with type export

* Addressed PR comments

* Updated cache

* Updated item classes, add fragment back

* Gergo/web 1574 join workspaces via discovery (#2623)

* chore(useremails): add find verified emails by user function

* chore(workspace): table helper for workspace domains

* chore(workspace): get workspace with domains function

* chore(workspace): test get workspace with domains function

* feat(workspace): restrict workspace membership when updating workspace role

* chore(workspaces): fix types

* feat(workspaces): WIP join

* feat(workspaces): join button makes u join

* chore(useremails): fix type for find verified emails function

* feat(workspaces): join

* feat(workspace): prevent inviting user without email matching domain

* chore(workspaces): fix linter

* fix(workspaces): invoke join (gergo wrote this)

* fuck

* fix(workspaces): properly get discoverable workspaces

* fix(workspaces): test

---------

Co-authored-by: Gergő Jedlicska <gergo@jedlicska.com>
Co-authored-by: Chuck Driesler <chuck@speckle.systems>

* fix(workspaces): some query stuff

* fix(workspaces): mutate cache instead of refetch

* fix(workspaces): more adjustments to gql query and fragment structure

* fix(workspaces): queries, style, structure

* fix(workspaces): match discoverability with current styles

* chore(workspaces): lint lint lint

* fix(workspaces): got it twisted

* chore(workspaces): fix test

* fix(workspaces): route to joined workspace on join

---------

Co-authored-by: Mike Tasset <mike.tasset@gmail.com>
Co-authored-by: Chuck Driesler <chuck@speckle.systems>
Co-authored-by: Alessandro Magionami <alessandro.magionami@gmail.com>
2024-08-26 13:33:16 +02:00
Alessandro Magionami 37ab694b7e Merge branch 'main' of github.com:specklesystems/speckle-server into alessandro/web-957-update-webhook 2024-08-26 12:12:14 +02:00
Iain Sproat 26b0ecb55d chore(server): remove sentry and only apply mixpanel middleware if enabled (#2732)
- remove sentry as we are no longer using it
- only enable mixpanel middleware if mixpanel is enabled
2024-08-23 16:56:54 +01:00
Alessandro Magionami 1241a43f65 chore(webhooks): improve readability of update function in repository 2024-08-23 16:01:48 +02:00
Alessandro Magionami c56821ff4a Merge branch 'main' of github.com:specklesystems/speckle-server into alessandro/web-957-update-webhook 2024-08-23 14:41:09 +02:00
Iain Sproat 81d072a865 chore(server): convert some files to typescript with minimal changes (#2738) 2024-08-23 13:07:22 +02:00
Iain Sproat acd83653a2 feat(graphql/serverinfo): provide maximum object size in bytes (#2734)
* feat(graphql/serverinfo): provide maximum object size in bytes

* Places config values in a ServerConfiguration object
- updates blobstorage to use ServerConfiguration, while retaining backwards compatibility
2024-08-23 13:06:22 +02:00
Iain Sproat 6715a030ec fix(server/auth): database errors result in 500 status code (#2731)
* fix(server/auth): database errors result in 500 status code
- previously 401 were returned which resulted in connectors not retrying

* log as info, not error. Handle errors while validating read

* Unknown errors should continue to be bubbled up the stack
2024-08-22 15:39:37 +02:00
Alessandro Magionami b0a64af835 Merge branch 'main' of github.com:specklesystems/speckle-server into alessandro/web-957-update-webhook 2024-08-22 15:08:20 +02:00
Iain Sproat 8ed98d8404 chore(diff download): close stream as recommended by knex (#2723) 2024-08-22 10:23:35 +01:00
Chuck Driesler 63735eb044 feat(workspaces): work(space) invader default logos (#2708)
* feat(workspaces): add default logo index

* Added WorkspaceAvatar component

* Added WorkspaceAvatar component

* Fix issues

* Fix Avatar

---------

Co-authored-by: Mike Tasset <mike.tasset@gmail.com>
2024-08-21 13:53:37 +01:00
Chuck Driesler 79d4e2d402 chore(comments): update comments module to typescript (#2513)
* chore(comments): files to .ts

* chore(comment): services to .ts

* chore(comments): repo to .ts

* chore(comments): resolvers to .ts

* chore(comments): init to .ts

* fix(comments): FIXME for non-null assertions

* chore(comments): drop some comments
2024-08-21 13:03:02 +01:00
Gergő Jedlicska 9f78fde1a5 fix(workspaces): await authorization (#2714) 2024-08-20 17:15:51 +02:00
Gergő Jedlicska 5d0b3508b3 fix(automate): fix on model version create error log (#2713) 2024-08-20 16:32:11 +02:00
Kristaps Fabians Geikins 1380d1d17f feat(fe2): error reporting when invite (middleware level) auto-accept doesn't work (#2711)
* feat(fe2): auto-accept error toasts

* smarter error reporting

* typo
2024-08-20 17:27:53 +03:00
Alessandro Magionami 14b91eb4e1 chore(webhooks): update webhook function refactor 2024-08-20 16:16:31 +02:00
Kristaps Fabians Geikins e4cc0cbc83 fix(workspaces): add email to existing account workflow bugfix (#2703)
* fix(fe2): properly handling invitedTeam auth error

* fix(fe2): disable invite dialog if not workspace admin

* fix(useremails): fix for default primary:true when creating new emails

* test fix
2024-08-20 15:45:34 +03:00
Iain Sproat 4d82e1f575 fix(/api/diff): fix debug log pollution (#2704) 2024-08-20 12:52:50 +01:00
Kristaps Fabians Geikins 3beed27a24 feat(fe2): workspace role select in project invite dialog (#2700)
* feat(fe2): workspace role select in project invite dialog

* lint fix
2024-08-20 14:06:18 +03:00
Kristaps Fabians Geikins 0b417c9ba0 feat(fe2): workspace invite cancel/resend + Invite dialog CTA in workspace home (#2691)
* feat(server): resend invite mutation

* invite resend/cancel from FE

* functional invite cta on workspace page
2024-08-20 10:17:42 +03:00
Iain Sproat 97321fd80e Increase max object size default to 100Mb for helm chart (#2692) 2024-08-19 20:25:36 +01:00
Gergő Jedlicska 35d394222d feat(gatekeeper): allow license bypass in testing envs (#2663) 2024-08-19 20:22:37 +02:00
Alessandro Magionami 5a62abe528 chore(webhooks): get webhook function refactor (#2680) 2024-08-19 18:38:49 +02:00
Kristaps Fabians Geikins 248511070a fix(fe2): not firing workspace invites queries if FF is off (#2685)
* fix(fe2): not firing workspace invites queries if FF is off

* added .value to ref
2024-08-19 14:18:25 +03:00
Chuck Driesler 6db0926a11 fix(workspaces): workspace description character limit (#2592) 2024-08-19 11:18:52 +01:00
Kristaps Fabians Geikins 2bb7802fb9 feat: accept & decline workspace invite as a registered member (#2675)
* abstract base invite banner

* WIP banner actions

* WIP modify obj

* minor fix

* invite accept/decline cache mutations

* banner accept/decline basically works

* new block for accepting workspace invite

* WIP wrong account flow

* login/registration block changes

* add email invite related changes

* add new email FE

* add email w/ invite works

* final adjustments

* minor fixes

* addressing cr comments

* no-FF support

* extra workspace ff checks
2024-08-19 13:01:25 +03:00
Alessandro Magionami 73e28d72c6 Alessandro/web 957 refactor webhooks module (#2664)
* chore(webhooks): fix test failing when running alone

* chore(webhooks): create domain types and repository

* chore(webhooks): create webhook refactor multiregion

* chore(webhooks): triggers field is required in graphql schema
2024-08-19 09:23:27 +02:00
Iain Sproat 9b09114b2e fix(logging): premature stream close should be info (#2673)
- we want to be able to correlate this behaviour with free connections for the meantime
2024-08-16 12:48:43 +01:00
Kristaps Fabians Geikins 301da423ff chore(server): move workspace leave resolver (#2670)
* chore(server): move workspace leave resolver

* workspacesCore fix
2024-08-16 12:39:30 +03:00
Iain Sproat 6d6d37b007 fix(server/api/getobjects): handle closing of client stream (#2669) 2024-08-16 09:16:03 +01:00
andrewwallacespeckle e3f90377b5 feat(fe2): workspace project list (#2616)
* Create and Use ProjectList

* ProjectList and WorkspaceList

* Workspace Header

* Header Actions Menu

* Add projects to Workspace

* Add middleware

* Remove unused title

* Rename WorkspaceList

* useDebouncedSearch

* Merge ProjectList into Dashboard

* Make workspaceId reactive

* Remove unneeded useSubscription

* Merge Dashboard into index

* Add fragments

* Cache updates

* gql

* GQL

* Linting updates

* Updates from CR

* Changes from CR

* Changes from PR. Middleware added

* Updates from CR

* GQL

* Updates from CR

* Updates from CR

* Updates from CR

* Add id to WorkspaceHeader_Workspace

* GQL

* Fragment naming

* Use identifier

* Comment buttons not yet ready

* Fix problem with pagination
2024-08-14 15:21:38 +01:00
Chuck Driesler 09c29619b4 fix(workspaces): guests do not get workspace-wide project access (#2622)
* fix(workspaces): guests do not get workspace-wide project access

* fix(workspaces): update roles-related test

* fix(workspaces): roles only update on member add
2024-08-14 09:54:47 +01:00
Iain Sproat a262d7d126 chore(liveness): fail liveness if db conns saturated for 10min (#2648)
* chore(liveness): fail liveness if db conns saturated for 2min

* Increase to 10min timeout
2024-08-13 18:41:04 +02:00
Iain Sproat 60251e45cb Revert "fix(server): revert 55cad9662a (#2633)" (#2650)
This reverts commit f2c5677b4a.
2024-08-13 11:48:20 +01:00
Gergő Jedlicska 5818a44e62 Gatekeeper (#2572)
* feat(gatekeeper): initial license validation

* test(gatekeeper): add license token to tests

* chore(gatekeeper): cleanup

* chore(gatekeeper): hide from circleci

* feat(helm): load license token from secrets

* chore(circleci): remove unused env var
2024-08-13 11:04:40 +02:00
Iain Sproat 298d8d6e52 fix(server/authcode): guard against null challenges (#2643)
- the database expects challenge to be not null, so we should guard against this early before consuming database resources
2024-08-13 09:12:06 +01:00
Alessandro Magionami 595f76f183 fix(useremails): avoid creating same email twice (#2640)
* fix(useremails): avoid creating same email twice

* fix(useremails): avoid any email to be created if already existing
2024-08-12 16:08:59 +02:00
Alessandro Magionami caca536e96 fix(useremails): throw error if trying to set unverified email as primary (#2630) 2024-08-12 15:03:53 +02:00
Iain Sproat 7b1c46ba9a chore(server): addn'l observability around db connections (#2628)
* chore(server): addn'l observability around db connections
* improvement to logging and metrics
* Instrument the knex connection pool
2024-08-12 13:17:53 +01:00
Iain Sproat f2c5677b4a fix(server): revert 55cad9662a (#2633)
* Revert "refactor(server/upload): convert js to ts (#2618)"

This reverts commit e9f7286f67.

* Revert "feat(logging): pass request logger to core/services/objects (#2599)"

This reverts commit ee3e9af78d.

* Revert "feat(server): configurable maximum objects POST size and improved logging (#2594)"

This reverts commit 55cad9662a.
2024-08-12 10:26:53 +01:00
Kristaps Fabians Geikins 4dae1569cd feat(fe2): invite + list workspace invites (#2629)
* list invites table

* invites list works

* update last reminded date on resend

* fix FE

* WIP invitedialog + updated debounced utility

* invite create works

* exclude users correctly

* more adjustments

* minor cleanup

* using workspace invite server role

* test fix

* fixed multiple root eslint issues

* minor adjustments
2024-08-12 11:30:01 +03:00
Iain Sproat e9f7286f67 refactor(server/upload): convert js to ts (#2618) 2024-08-09 10:00:46 +01:00
Iain Sproat ee3e9af78d feat(logging): pass request logger to core/services/objects (#2599)
* chore(logging): include additional detail on object upload logs

* allow max file size to be configurable

* feat(logging): add logger to core/services/objects

* fix log line

* fix tests

* typo

* fix variable name

* convert values to megabytes

* calculating memory was causing the system to freeze

* calculating memory was causing the system to freeze

* DRY the logging metadata

* all required variables should be passed to calculateLogMetadata

* fix many things with the logging
2024-08-09 10:15:37 +02:00
Iain Sproat 55cad9662a feat(server): configurable maximum objects POST size and improved logging (#2594) 2024-08-08 16:19:25 +01:00
Kristaps Fabians Geikins fc5c764c06 unblocking main 2024-08-08 12:31:45 +03:00
Chuck Driesler 7bb40134eb fix(workspaces): add filtering to workspace team query (#2586)
* chore(workspaces): add some tests for new filters

* fix(workspaces): args style
2024-08-08 07:15:55 +02:00