Commit Graph

105 Commits

Author SHA1 Message Date
andrewwallacespeckle 19a48f7dff feat(fe2): add survicate nps survey (#2154)
* Initial Plugin

* Add survey id. Working - with errors

* Check Onboarding cookie

* Removing existing feedback request

* Working Survicate for testing

* Remove old feedback Banner/Dialog

* Update env

* feat(server): projects query optimization

* added version count resolution

* PR Comments

* Fix brittle date

* Add client suffix

* Changes from call with Fabians

* Final changes

* Skip initialization if the survicateWorkspaceKey is empty or undefined

---------

Co-authored-by: Kristaps Fabians Geikins <fabis94@live.com>
2024-03-27 14:26:34 +00:00
Kristaps Fabians Geikins f9f490b440 fix(server): allow standard users to batch invite to server (#2150)
* fix(server): allow standard users to batch invite to server

* added max 10 invite batch limit

* minor change
2024-03-20 17:51:24 +02:00
andrewwallacespeckle 3c83d31459 [WBX-103] - FE1 to FE2 Messaging (#2121)
* Home page & Nav Footer

* FE1 Changes

* FE2 Changes WIP

* Dark mode onboarding

* FE2 Cookie for Banner/Dialog

* FE1 DIalog WIP

* Local Storage for FE1

* Add bgcolour to segmentation

* Add responsive message to fe1 login

* Update SVGS

* Fix build WIP

* Skip to Close

* Changes from Agi testing

* Update announcement banner

Updated icons, copy, spacings

* Update FE2 announcement copy and links

* Add video to FE2 announcement dialog

* Add video to FE1

* Minor Updates pre CR

* Update blog link

* Remove menu item

* Rename Dismissed

* added fe2 messaging query field

* Updates from CR

* helm chart changes

* Use new env for displaying fe2 messaging

* Fix build

* fixed helm readme values

* Updates from CR

---------

Co-authored-by: Benjamin Ottensten <benjamin.ottensten@gmail.com>
Co-authored-by: Kristaps Fabians Geikins <fabis94@live.com>
2024-03-14 13:19:29 +00:00
Kristaps Fabians Geikins 1d9b070ae8 feat(server): project.version query for easier cross server sync 2024-02-22 15:23:16 +02:00
Kristaps Fabians Geikins 48440e5b7c fix(server): rate limiter path resolution (#2042) 2024-02-13 15:08:48 +02:00
Kristaps Fabians Geikins c3f13d4e66 fix: multiple FE2 and server speed improvements, mainly focusing on the project page (#1975)
* introduced app cache & optimized /downloads

* added redis cache storage

* optimizing latest thread retrieval

* more dataloaders

* undid debug stuff

* deployment changes

* minor change to reqTouched

* connectorTag parallel resolution

* added redis key prefix

* gqlgen cleanup

* Amend network policy to allow egress to Redis

---------

Co-authored-by: Iain Sproat <68657+iainsproat@users.noreply.github.com>
2024-01-22 11:08:53 +02:00
Kristaps Fabians Geikins 37d51072fb feat(server): resource limits on app tokens (#1959)
* WIP new mutation arg

* limited resource token creation done

* token resource rule creation validation

* updated authorizeResolver implementation

* introduced resource access rule checks in authorizeResolver everywhere

* more checks added

* updated projects resolvers

* updated stream resolvers

* more checks added

* error page theme resolution fix

* WIP testss

* more tests

* implemented checks in REST auth pipeline

* REST API coverage & tests

* some tests fixed

* test fixess

* added tests

* feat(server): new automation result reporting scope (#1976)

* feat(server): new automation result reporting scope

* tests fix
2024-01-19 18:14:49 +01:00
Kristaps Fabians Geikins 5cd573355d feat(server): ability for apps to create new app tokens (#1942)
* /graphql endpoint fix

* app token creation seems to be done

* added tests

* more tests

* cleaned up TS annotations

* CR cleanup

* TS type fixes

* test fixes
2024-01-09 11:58:38 +02:00
Kristaps Fabians Geikins 3689e1cd58 fix: preventing PATs from creating PATs 2023-12-11 11:23:03 +02:00
Kristaps Fabians Geikins a329f91a44 fix(server): protecting against scope elevation in PAT creation (#1901)
* test DX improvements + tests for token:write scope

* protecting against scope elevation
2023-12-08 14:50:23 +02:00
Dimitrie Stefanescu 882391b5e1 Onboarding Speedup (#1855)
* feat(onboarding): ensures an onboarding project is always cloned when a user goes through onboarding; simplifies some of the logic & updates project naming

* feat(onboarding): improves onboarding stream cloning performance by optimising object duplication (local tests: from 25s to 270ms)

* feat(onboarding): minor changes logging + comments

* feat(onboarding): removes comments
2023-11-08 13:03:10 +00:00
Kristaps Fabians Geikins 79d293e178 fix: preparing automation backend for use in FE (#1790)
* fix: preparing automation backend for use in FE

* minor migration adjustment

* modelId only

* more CR fixes

* improved validation

* WIP model automation status (#1791)

* additional run status insert validations

* model card dialog

* show view automation btn

* story mock fixes

* version card dialog

---------

Co-authored-by: Gergő Jedlicska <gergo@jedlicska.com>
2023-09-18 11:49:11 +03:00
andrewwallacespeckle 671979e012 Feature - Frontend2 - Server Settings Pages (#1764)
* Add server management menu item

* Server Management Page & Settings Dialog

* escape from the precommits hooks

* Add Delete User Dialog

* Add invitations page

* Add Projects Page

* Pulling in GraphQL Data

* Settings Mutations

* Fix cardinfo type

* GraphQL in Active Users

* Add icons

* Infinite Load on Active Users

* Tidy Ups

* TS fixes

* Add Update button functionality

* Add Delete User

* Projects

* Home Done

* New query

* Delete User

* WIP User Roles

* Overflow fix

* Table Update

* Add Onclick to rows

* Fix bugs

* Fix console error

* Admin Middleware

* Role Update Dialog

* TS Fixes

* Latest updates

* Tidyups

* Tidy Up Nav Menu

* Tidy Up Card

* ChangeUserRoleDialog Tidyup

* Fix bubbling issue on Table

* Design fixes

* fix: speckle server version hydration mismatch

* Remove Dialog bg-white

* Rename Query, Fix Export

* fix: allowing FormSelectBase to reject updates

* feat: cache policies for new admin graph fields

* feat: cache updates so no refetch necessary

* PR Changes

* Fix Projects Page

* Updates to Roles

* Project Delete Mutation

* Add Resend & Delete Invite Mutation

* Fix console warnings

* Disable active user role select

* Linting fixes

* Reorder

* Linting fixes

* Changes from PR

* Fixes from PR

* Ui Fixes

* Update Settings Dialog Cache on Save

* Fix colours

* Delete Invitation Mutation Moved

* Delete Project Logic moved

* Delete Mutation moved to component

* Change User Role mutation moved to Dialog

* Reorder

* WIP - Checkbox Bug

* attempted checkbox fix

* Update Caching

* Rollback tsc

* Update to Resend Button

* Add new buttons

* Use defineModel

* Re-add emits

* Move mutation

* serverInfo cache update fix

* fixed delete invite cache update

* Updates to Project Delete Dialog Caching

* Remove unneeded props

* Fix caching in DeleteUserDialog

* Improved error handling in server info update

* Swap Invite modal to new style

* updated evictObjectFields details

* Update cache on successfull invite

* Add Invite dialog

* Add project Dialog Update

* defineModel

* Remove emits from Add Project and Invites

* Add missing Dialog

* Updates from PR

* Adjust query

* Remove need for items in admin data query

---------

Co-authored-by: Kristaps Fabians Geikins <fabis94@live.com>
2023-09-04 11:57:34 +01:00
Kristaps Fabians Geikins 069f64afc9 feat(fe1 & fe2): guest role (#1768)
* feat: user guest role switching in FE1

* removed stream create buttons

* fe1 done

* fe1 - specifying role in invite dialogs

* fe1 - bulk invites

* WIP FE2 changes

* fe1: allow role select condition fixes

* xtra limitations on createForOnboarding

* more invite creation validations

* no longer able to set guest as project owner in invite

* preparations for server role select in invite dialog

* team management dialog done

* server invite dialog updated

* hiding invite dialog

* fixed mocks
2023-08-24 09:30:09 +02:00
Gergő Jedlicska 4b071872c2 gergo/adminInviteList (#1761)
* feat(admin): add users email to the admin user list query

* feat(admin): WIP invite list

* feat(admin): fix server invites resolver typing

* fix(admin): slim down admin user list item data
2023-08-11 15:02:02 +03:00
Gergő Jedlicska ad1fba7fea Merge branch 'main' of github.com:specklesystems/speckle-server into gergo/serverGuest/main 2023-08-01 16:01:24 +02:00
Gergő Jedlicska 105f1c0b54 refactor(server authz): rework validateServerRole 2023-08-01 14:58:55 +02:00
Gergő Jedlicska cb3dbb7a9d refactor(server/shared): reduce (but not fix) circular dependencies 2023-08-01 12:11:47 +02:00
Gergő Jedlicska 56555342e4 fix(server): fix admin gql resolver typing 2023-07-31 16:11:10 +02:00
Gergő Jedlicska e9d9fc770c allow guest access to selected gql resources 2023-07-31 12:29:43 +02:00
Gergő Jedlicska 42190f42ee feat(server): user role change uses server info to get guest mode flag 2023-07-27 17:39:19 +02:00
Gergő Jedlicska 99bd946f09 feat(server): revert env var based guest role flag
we're going for an admin modifiable flag, that needs to be stored
in the server config table
2023-07-27 17:02:29 +02:00
Gergő Jedlicska 2fa8a21754 feat(server): implement switch user role to guest 2023-07-27 13:30:32 +02:00
Gergő Jedlicska 8f6ec4a025 refactor(server scopes): use constants for stream reviewer role 2023-07-26 14:14:17 +02:00
Gergő Jedlicska 23989174d3 refactor(server scopes): use constants for streams contributor role 2023-07-26 14:12:41 +02:00
Gergő Jedlicska a2bb36e43e refactor(server scopes): use constants for streams owner role 2023-07-26 14:08:47 +02:00
Gergő Jedlicska 143ec707a5 refactor(server scopes): use constants for profile delete scope 2023-07-26 13:32:45 +02:00
Gergő Jedlicska c22e0dfe23 refactor(server scopes): use constants for profile email scope 2023-07-26 13:32:08 +02:00
Gergő Jedlicska 61c4869091 refactor(server scopes): use constants for profile read scopes 2023-07-26 13:29:54 +02:00
Gergő Jedlicska 4d9078a6d7 refactor(server scopes): use constants for users read scopes 2023-07-26 13:15:09 +02:00
Gergő Jedlicska 878f97baa2 refactor(server scopes): use constants for streams write scopes 2023-07-26 13:13:09 +02:00
Gergő Jedlicska 6ea7aa8236 refactor roles to shared constants 2023-07-26 11:59:54 +02:00
Gergő Jedlicska 3c70e7460e fix admin resolver typing 2023-07-25 14:43:34 +02:00
Gergő Jedlicska 1ca6c73d18 feat(server admin): add FE2 admin page backend 2023-07-25 14:29:18 +02:00
Kristaps Fabians Geikins a7ba118f3a fix(server): 500 error when Commit.author is null 2023-07-19 14:16:48 +03:00
Kristaps Fabians Geikins 80df259159 feat(server): improved cross-server commit/version download (#1711) 2023-07-19 11:43:06 +03:00
Dimitrie Stefanescu a6921705c6 feat(server): allows getting branches by name or id from the same api endpoint 2023-06-15 12:50:01 +01:00
Gergő Jedlicska acc2604cc5 fix(server commits graphql): fix commit author null error (#1596)
commit authorId-s can be null, if a server user is deleted.
We keep the commit on the server, so we need to be able to
return null values for commit author name and avatar

Co-authored-by: CI <devops+circleci@speckle.systems>
2023-05-24 14:33:10 +02:00
Kristaps Fabians Geikins 12aa979628 feat(server): proper model() and version() error handling (#1581)
* feat(server): proper model() and version() error handling

* fix(fe-2): typing errors
2023-05-18 09:46:27 +02:00
Kristaps Fabians Geikins ba7ef04ca3 fix(server): invites fixes + proper project()/stream() query error reporting (#1580)
* fix(server): invalid stream invite purge + better error handling

* fix(server): proper project/stream query error reporting

* undo env example change

* fix(server): fixed tests

* fix(fe-2): chromatic adjustments

* fix(fe-2): non-randomized stories
2023-05-17 17:17:09 +02:00
Kristaps Fabians Geikins b02a07e2b6 feat: Frontend 2.0 MVP 2023-05-08 10:47:01 +03:00
Gergő Jedlicska f1ec3f47c1 feat(server): add admin override to otheruser steams query (#1401) 2023-02-22 12:39:28 +01:00
Iain Sproat a537d34dcc Rate limit all endpoints (#1213)
* Demonstration of bug to test when middleware added
- Adding middleware, even no-op, causes test to fail

* Make middleware async, but introduce delay.
Revert test back to original.

* Revert tests

* Add a 1ms sleep to the test to reduce likelihood of flakiness

* Rate limiting on all express endpoints using middleware

* Adds all configuration for existing rate limited endpoints

* It is helpful to add the package to yarn first

* Implements respectsLimits using Redis rate limiter

* Fix for test `Should rate-limit user creation`
- if rate limit error, post to `/auth/local/register` will return a 429 status code

* All rate limiting provided by new ratelimiter.ts

* Consolidate typescript interfaces

* Amend signature of function to require source to be passed in, and not try to guess it from the request

* Rename respectsLimits to isWithinRateLimits

* Throw within catch of Promise

* Replace rejectsRequestWithRatelimitStatusIfNeeded throughout code

* Sending rate limit response should deal with other types of error
- Sentry notified of the error

* Express middleware rate limits by a 3 second burst or a daily rate
- Provide action when generating 429 response

* Prevent DOS of Redis

* Add 'Retry-After' for all cases when responding with 429 status code
- default of 1 day, but dynamic based on available information

* Generate rate limiters once, on init
- Improved and consistent handling of exit from functions
- fixed environment variable names

* WIP Refactor rate limiting setup

Co-authored-by: Iain Sproat <iainsproat@users.noreply.github.com>

* WIP: fixed references, now runs but tests fail

* Use getSourceFromRequest where possible

* WIP: unit tests for rate limiter

* Unit tests for ratelimiter

* feat(IFC): WIP IFC parser improvements

* Revert "feat(IFC): WIP IFC parser improvements"

This reverts commit 093089a2c4.

* refactor authz, rate limiting middleware to global

Co-authored-by: Kristaps Fabians Geikins <fabis94@users.noreply.github.com>
Co-authored-by: Iain Sproat <iainsproat@users.noreply.github.com>

* invites tests fix

* fix(server ratelimiter): export public interfaces

* Unit test for rate limiter use in memory rate limiter
- in memory rate limiter is configured with zero limit by default

* Fixed #1219 (#1221)

* WIP: improve auth test for rate limiting user creation

* ci(circleci config): publishing was broken when main branch was tagged (i.e. for releases) (#1224)

* Gitignore CPU profiles

* All tests are  now passing locally

* Fixed an issue in the frontend which was causing the views not to work. Fixed an issue with object selection camera animation where the dolly lerp factor was much too high for smooth animation (#1225)

* feat(structured logging): implements structured logging for backend (#1217)

* each log line is a json object
* structured logging allows logs to be ingested by machines and the logs to be indexed and queried addresses #1105
* structured logging allows arbitrary properties to be appended to each log line, and ingestion of logs to remain robust
* Structured logging provided by `pino` library
* Add `express-pino-logger` dependency
* Remove `debug`, `morgan`, and `morgan-debug` and replace with structured logging
* `console.log` & `console.error` replaced with structured logging in backend
* Remove `DEBUG` environment variable and replace with `LOG_LEVEL`
- Note that there is a test which reads from a logged line on `stdout`. This is not robust, it would be better to use the childProcess.pid to look up the port number.
* Log errors at points we explicitly send error to Sentry
* Amend indentation of a couple of log messages to align indentation with others

* Revert "feat(structured logging): implements structured logging for backend (#1217)" (#1227)

This reverts commit 84cb74e8b3.

* Move error to core/errors
- augmented typescript types moved to type-augmentations

* Added a missing wait in the screenshot generation loop (#1228)

* refactor(server rest api): remove duplicate rate limit requests

* feat(server rate limits): increase rate limits for the upload endpoints

* chore(server rate limits): final cleanup

Co-authored-by: Gergő Jedlicska <gergo@jedlicska.com>
Co-authored-by: Iain Sproat <iainsproat@users.noreply.github.com>
Co-authored-by: Dimitrie Stefanescu <didimitrie@gmail.com>
Co-authored-by: Kristaps Fabians Geikins <fabis94@users.noreply.github.com>
Co-authored-by: Kristaps Fabians Geikins <fabis94@live.com>
Co-authored-by: Alexandru Popovici <alexandrupopoviciioan@gmail.com>
2022-11-29 17:06:11 +01:00
Kristaps Fabians Geikins 5f48ae8086 feat(server): optimized command for importing commits from other servers (#1113) 2022-10-17 10:32:01 +03:00
Kristaps Fabians Geikins 8e59ee7243 refactor: moving away from 'user' query (#1046)
* refactor: moving away from 'user' query + various fixes

* fix: linting issue in stream tests

* fix(server): some tests broken after rebase onto main
2022-10-06 12:08:08 +03:00
Kristaps Fabians Geikins db6a3e9367 refactor(server): apollo server v2 -> v3 migration (#1071) 2022-10-06 11:12:16 +03:00
Kristaps Fabians Geikins c7e4c9981c fix(server): streamUpdatePermission wont allow adding new users to streams (#1032)
* fix(server): fixing streamUpdatePermissions allowing to add new users to stream

* fix(server): fixing tests to better test streamUpdatePermission
2022-09-26 16:40:17 +02:00
Kristaps Fabians Geikins 61a2caaae9 feat: batch commit actions improvements (list view support, batch delete in 'your commits')
* feat(frontend): batch commit action support in list view

* feat(frontend): batch delete in 'your commits' page

* fix(server): authorizeResolver isPublic check always failed

* fix(server): fixing tests
2022-09-26 13:16:44 +03:00
Kristaps Fabians Geikins 05f11a26da feat: batch commit delete/move (#1016)
* feat: batch delete/move commits

* fix: ts linter issue
2022-09-22 16:49:18 +03:00
Kristaps Fabians Geikins 3da39a7b11 refactor(server): User.streams only returns discoverable streams for non-owners (#1002) 2022-09-22 12:21:06 +03:00