feat(server): enable sdui for self hosters (#5741)

This commit is contained in:
Oğuzhan Koral
2026-01-30 08:25:38 +03:00
committed by GitHub
parent ac383bca1f
commit 0b9a6e10d4
3 changed files with 23 additions and 2 deletions
@@ -18,6 +18,7 @@ export enum DefaultAppIds {
DesktopManager = 'sdm',
Connector = 'sca',
SpeckleDesktopAuthService = 'sdas',
SpeckleConnectorsDUI = 'sdui',
Excel = 'spklexcel',
PowerBI = 'spklpwerbi',
Automate = 'spklautoma'
@@ -66,6 +67,25 @@ const SpeckleDesktopApp = {
]
}
const SpeckleConnectorsDUI = {
id: DefaultAppIds.SpeckleConnectorsDUI,
secret: DefaultAppIds.SpeckleConnectorsDUI,
name: 'DUI',
description: 'Speckle desktop user interface for connectors.',
trustByDefault: false, // NOTE: we do not wanna automatically authenticate in DUI because it uses cached account before which we wanna switch account. trustByDefault: true skips this step
public: true,
redirectUrl: 'https://dui.speckle.systems/authn/callback',
scopes: [
Scopes.Streams.Read,
Scopes.Streams.Write,
Scopes.Profile.Read,
Scopes.Profile.Email,
Scopes.Users.Read,
Scopes.Users.Invite,
...workspaceScopes
]
}
const SpeckleConnectorApp = {
id: DefaultAppIds.Connector,
secret: DefaultAppIds.Connector,
@@ -168,6 +188,7 @@ const defaultApps = [
SpeckleWebApp,
SpeckleApiExplorer,
SpeckleDesktopApp,
SpeckleConnectorsDUI,
SpeckleConnectorApp,
SpeckleDesktopAuthService,
SpeckleExcel,
@@ -170,7 +170,7 @@ describe('GraphQL @apps-api', () => {
expect(res).to.be.json
expect(res.body.errors).to.not.exist
expect(res.body.data.apps).to.be.an('array')
expect(res.body.data.apps.length).to.equal(9)
expect(res.body.data.apps.length).to.equal(10)
})
it('Should get app info without secret if not authenticated and owner', async () => {
@@ -139,7 +139,7 @@ describe('Services @apps-services', () => {
it('Should get all the public apps on this server', async () => {
const apps = await getAllPublicApps()
expect(apps).to.be.an('array')
expect(apps.length).to.equal(9)
expect(apps.length).to.equal(10)
})
it('Should fail to register an app with no scopes', async () => {