Files
speckle-server/packages/server/modules/auth/services/serverApps.ts
T
2024-09-17 14:04:37 +03:00

52 lines
1.3 KiB
TypeScript

import { getDefaultApps } from '@/modules/auth/defaultApps'
import {
GetAllScopes,
GetApp,
InitializeDefaultApps,
RegisterDefaultApp,
UpdateDefaultApp
} from '@/modules/auth/domain/operations'
import { ScopeRecord } from '@/modules/auth/helpers/types'
import { ServerScope } from '@speckle/shared'
/**
* Cached all scopes. Caching occurs on first initializeDefaultApps() call
*/
let allScopes: ScopeRecord[] = []
export const initializeDefaultAppsFactory =
(deps: {
getAllScopes: GetAllScopes
getApp: GetApp
updateDefaultApp: UpdateDefaultApp
registerDefaultApp: RegisterDefaultApp
}): InitializeDefaultApps =>
async () => {
allScopes = await deps.getAllScopes()
await Promise.all(
getDefaultApps().map(async (app) => {
const scopes =
app?.scopes === 'all'
? allScopes.map((s) => s.name)
: (app.scopes as ServerScope[])
const existingApp = await deps.getApp({ id: app.id })
if (existingApp) {
await deps.updateDefaultApp(
{
...app,
scopes
},
existingApp
)
} else {
await deps.registerDefaultApp({
...app,
scopes
})
}
})
)
}