chore(server): core IoC #51 - getUser(s)Factory
This commit is contained in:
@@ -32,7 +32,7 @@ import type { ConnectionContext, ExecutionParams } from 'subscriptions-transport
|
||||
import { SubscriptionServer } from 'subscriptions-transport-ws'
|
||||
import { execute, subscribe } from 'graphql'
|
||||
|
||||
import knex from '@/db/knex'
|
||||
import knex, { db } from '@/db/knex'
|
||||
import { monitorActiveConnections } from '@/logging/httpServerMonitoring'
|
||||
import { buildErrorFormatter } from '@/modules/core/graph/setup'
|
||||
import {
|
||||
@@ -64,7 +64,7 @@ import { statusCodePlugin } from '@/modules/core/graph/plugins/statusCode'
|
||||
import { BaseError, ForbiddenError } from '@/modules/shared/errors'
|
||||
import { loggingPlugin } from '@/modules/core/graph/plugins/logging'
|
||||
import { shouldLogAsInfoLevel } from '@/logging/graphqlError'
|
||||
import { getUser } from '@/modules/core/repositories/users'
|
||||
import { getUserFactory } from '@/modules/core/repositories/users'
|
||||
|
||||
const GRAPHQL_PATH = '/graphql'
|
||||
|
||||
@@ -385,7 +385,8 @@ export async function init() {
|
||||
next()
|
||||
}
|
||||
)
|
||||
if (enableMixpanel()) app.use(mixpanelTrackerHelperMiddlewareFactory({ getUser }))
|
||||
if (enableMixpanel())
|
||||
app.use(mixpanelTrackerHelperMiddlewareFactory({ getUser: getUserFactory({ db }) }))
|
||||
|
||||
// Initialize default modules, including rest api handlers
|
||||
await ModulesSetup.init(app)
|
||||
|
||||
@@ -29,7 +29,7 @@ import {
|
||||
getStreamFactory,
|
||||
grantStreamPermissionsFactory
|
||||
} from '@/modules/core/repositories/streams'
|
||||
import { getUser } from '@/modules/core/repositories/users'
|
||||
import { getUserFactory } from '@/modules/core/repositories/users'
|
||||
import {
|
||||
addOrUpdateStreamCollaboratorFactory,
|
||||
validateStreamAccessFactory
|
||||
@@ -38,6 +38,7 @@ import { authorizeResolver } from '@/modules/shared'
|
||||
import { LogicError } from '@/modules/shared/errors'
|
||||
import { publish } from '@/modules/shared/utils/subscriptions'
|
||||
|
||||
const getUser = getUserFactory({ db })
|
||||
const getStream = getStreamFactory({ db })
|
||||
const getUserProjectAccessRequest = getUserProjectAccessRequestFactory({
|
||||
getUsersPendingAccessRequest: getUsersPendingAccessRequestFactory({ db })
|
||||
|
||||
@@ -33,7 +33,7 @@ import {
|
||||
grantStreamPermissionsFactory,
|
||||
revokeStreamPermissionsFactory
|
||||
} from '@/modules/core/repositories/streams'
|
||||
import { getUser } from '@/modules/core/repositories/users'
|
||||
import { getUserFactory } from '@/modules/core/repositories/users'
|
||||
import {
|
||||
addOrUpdateStreamCollaboratorFactory,
|
||||
isStreamCollaboratorFactory,
|
||||
@@ -64,6 +64,7 @@ import { BasicTestStream, createTestStreams } from '@/test/speckle-helpers/strea
|
||||
import { expect } from 'chai'
|
||||
import { noop } from 'lodash'
|
||||
|
||||
const getUser = getUserFactory({ db })
|
||||
const getStream = getStreamFactory({ db })
|
||||
const getStreamCollaborators = getStreamCollaboratorsFactory({ db })
|
||||
const requestProjectAccess = requestProjectAccessFactory({
|
||||
|
||||
@@ -35,7 +35,7 @@ import {
|
||||
grantStreamPermissionsFactory,
|
||||
revokeStreamPermissionsFactory
|
||||
} from '@/modules/core/repositories/streams'
|
||||
import { getUser } from '@/modules/core/repositories/users'
|
||||
import { getUserFactory } from '@/modules/core/repositories/users'
|
||||
import {
|
||||
addOrUpdateStreamCollaboratorFactory,
|
||||
isStreamCollaboratorFactory,
|
||||
@@ -66,6 +66,7 @@ import { BasicTestStream, createTestStreams } from '@/test/speckle-helpers/strea
|
||||
import { expect } from 'chai'
|
||||
import { noop } from 'lodash'
|
||||
|
||||
const getUser = getUserFactory({ db })
|
||||
const getStreamCollaborators = getStreamCollaboratorsFactory({ db })
|
||||
const getStream = getStreamFactory({ db })
|
||||
const requestStreamAccess = requestStreamAccessFactory({
|
||||
|
||||
@@ -19,11 +19,11 @@ import { StreamAcl, StreamActivity } from '@/modules/core/dbSchema'
|
||||
import { Roles } from '@/modules/core/helpers/mainConstants'
|
||||
import { StreamAclRecord } from '@/modules/core/helpers/types'
|
||||
import { getServerInfo } from '@/modules/core/services/generic'
|
||||
import { getUser } from '@/modules/core/repositories/users'
|
||||
import { createWebhookEventFactory } from '@/modules/webhooks/repositories/webhooks'
|
||||
import { dispatchStreamEventFactory } from '@/modules/webhooks/services/webhooks'
|
||||
import { Knex } from 'knex'
|
||||
import { getStreamFactory } from '@/modules/core/repositories/streams'
|
||||
import { getUserFactory } from '@/modules/core/repositories/users'
|
||||
|
||||
const tables = {
|
||||
streamActivity: <T extends object = StreamActivityRecord>(db: Knex) =>
|
||||
@@ -255,7 +255,7 @@ export const saveActivityFactory =
|
||||
getServerInfo,
|
||||
getStream: getStreamFactory({ db }),
|
||||
createWebhookEvent: createWebhookEventFactory({ db }),
|
||||
getUser
|
||||
getUser: getUserFactory({ db })
|
||||
})({
|
||||
streamId,
|
||||
event: actionType,
|
||||
|
||||
@@ -2,21 +2,23 @@ import {
|
||||
NotificationPublisher,
|
||||
NotificationType
|
||||
} from '@/modules/notifications/helpers/types'
|
||||
import { getUser } from '@/modules/core/repositories/users'
|
||||
import {
|
||||
CreateActivitySummary,
|
||||
GetActiveUserStreams,
|
||||
GetActivity
|
||||
} from '@/modules/activitystream/domain/operations'
|
||||
import { GetStream } from '@/modules/core/domain/streams/operations'
|
||||
import { GetUser } from '@/modules/core/domain/users/operations'
|
||||
|
||||
export const createActivitySummaryFactory =
|
||||
({
|
||||
getStream,
|
||||
getActivity
|
||||
getActivity,
|
||||
getUser
|
||||
}: {
|
||||
getStream: GetStream
|
||||
getActivity: GetActivity
|
||||
getUser: GetUser
|
||||
}): CreateActivitySummary =>
|
||||
async ({
|
||||
userId,
|
||||
|
||||
@@ -19,14 +19,15 @@ const {
|
||||
addOrUpdateStreamCollaboratorFactory
|
||||
} = require('@/modules/core/services/streams/access')
|
||||
const { authorizeResolver } = require('@/modules/shared')
|
||||
const { getUser } = require('@/modules/core/repositories/users')
|
||||
const { grantStreamPermissionsFactory } = require('@/modules/core/repositories/streams')
|
||||
const {
|
||||
addStreamInviteAcceptedActivityFactory,
|
||||
addStreamPermissionsAddedActivityFactory
|
||||
} = require('@/modules/activitystream/services/streamActivity')
|
||||
const { publish } = require('@/modules/shared/utils/subscriptions')
|
||||
const { getUserFactory } = require('@/modules/core/repositories/users')
|
||||
|
||||
const getUser = getUserFactory({ db })
|
||||
const getUserActivity = getUserActivityFactory({ db })
|
||||
const saveActivity = saveActivityFactory({ db })
|
||||
const validateStreamAccess = validateStreamAccessFactory({ authorizeResolver })
|
||||
|
||||
@@ -36,21 +36,24 @@ import {
|
||||
import { collectAndValidateCoreTargetsFactory } from '@/modules/serverinvites/services/coreResourceCollection'
|
||||
import { buildCoreInviteEmailContentsFactory } from '@/modules/serverinvites/services/coreEmailContents'
|
||||
import { getEventBus } from '@/modules/shared/services/eventBus'
|
||||
import { getUsers } from '@/modules/core/repositories/users'
|
||||
import { addStreamCreatedActivityFactory } from '@/modules/activitystream/services/streamActivity'
|
||||
import { ProjectsEmitter } from '@/modules/core/events/projectsEmitter'
|
||||
import { createBranchFactory } from '@/modules/core/repositories/branches'
|
||||
import { publish } from '@/modules/shared/utils/subscriptions'
|
||||
import { getUserFactory, getUsersFactory } from '@/modules/core/repositories/users'
|
||||
|
||||
const cleanup = async () => {
|
||||
await truncateTables([StreamActivity.name, Users.name])
|
||||
}
|
||||
|
||||
const getUser = getUserFactory({ db })
|
||||
const getUsers = getUsersFactory({ db })
|
||||
const getStream = getStreamFactory({ db })
|
||||
const saveActivity = saveActivityFactory({ db })
|
||||
const createActivitySummary = createActivitySummaryFactory({
|
||||
getStream,
|
||||
getActivity: getActivityFactory({ db })
|
||||
getActivity: getActivityFactory({ db }),
|
||||
getUser
|
||||
})
|
||||
const addStreamCreatedActivity = addStreamCreatedActivityFactory({
|
||||
saveActivity: saveActivityFactory({ db }),
|
||||
@@ -60,7 +63,7 @@ const createStream = legacyCreateStreamFactory({
|
||||
createStreamReturnRecord: createStreamReturnRecordFactory({
|
||||
inviteUsersToProject: inviteUsersToProjectFactory({
|
||||
createAndSendInvite: createAndSendInviteFactory({
|
||||
findUserByTarget: findUserByTargetFactory(),
|
||||
findUserByTarget: findUserByTargetFactory({ db }),
|
||||
insertInviteAndDeleteOld: insertInviteAndDeleteOldFactory({ db }),
|
||||
collectAndValidateResourceTargets: collectAndValidateCoreTargetsFactory({
|
||||
getStream
|
||||
@@ -72,7 +75,8 @@ const createStream = legacyCreateStreamFactory({
|
||||
getEventBus().emit({
|
||||
eventName,
|
||||
payload
|
||||
})
|
||||
}),
|
||||
getUser
|
||||
}),
|
||||
getUsers
|
||||
}),
|
||||
|
||||
@@ -2,7 +2,6 @@
|
||||
import mailchimp from '@mailchimp/mailchimp_marketing'
|
||||
import { md5 } from '@/modules/shared/helpers/cryptoHelper'
|
||||
import { getMailchimpConfig } from '@/modules/shared/helpers/envHelper'
|
||||
// import { getUserById } from '@/modules/core/services/users'
|
||||
import { UserRecord } from '@/modules/core/helpers/types'
|
||||
|
||||
let mailchimpInitialized = false
|
||||
|
||||
@@ -37,7 +37,6 @@ const {
|
||||
buildCoreInviteEmailContentsFactory
|
||||
} = require('@/modules/serverinvites/services/coreEmailContents')
|
||||
const { getEventBus } = require('@/modules/shared/services/eventBus')
|
||||
const { getUsers } = require('@/modules/core/repositories/users')
|
||||
const { createBranchFactory } = require('@/modules/core/repositories/branches')
|
||||
const { ProjectsEmitter } = require('@/modules/core/events/projectsEmitter')
|
||||
const {
|
||||
@@ -45,7 +44,10 @@ const {
|
||||
} = require('@/modules/activitystream/services/streamActivity')
|
||||
const { saveActivityFactory } = require('@/modules/activitystream/repositories')
|
||||
const { publish } = require('@/modules/shared/utils/subscriptions')
|
||||
const { getUsersFactory, getUserFactory } = require('@/modules/core/repositories/users')
|
||||
|
||||
const getUser = getUserFactory({ db })
|
||||
const getUsers = getUsersFactory({ db })
|
||||
const addStreamCreatedActivity = addStreamCreatedActivityFactory({
|
||||
saveActivity: saveActivityFactory({ db }),
|
||||
publish
|
||||
@@ -57,7 +59,7 @@ const createStream = legacyCreateStreamFactory({
|
||||
createStreamReturnRecord: createStreamReturnRecordFactory({
|
||||
inviteUsersToProject: inviteUsersToProjectFactory({
|
||||
createAndSendInvite: createAndSendInviteFactory({
|
||||
findUserByTarget: findUserByTargetFactory(),
|
||||
findUserByTarget: findUserByTargetFactory({ db }),
|
||||
insertInviteAndDeleteOld: insertInviteAndDeleteOldFactory({ db }),
|
||||
collectAndValidateResourceTargets: collectAndValidateCoreTargetsFactory({
|
||||
getStream
|
||||
@@ -69,7 +71,8 @@ const createStream = legacyCreateStreamFactory({
|
||||
getEventBus().emit({
|
||||
eventName,
|
||||
payload
|
||||
})
|
||||
}),
|
||||
getUser
|
||||
}),
|
||||
getUsers
|
||||
}),
|
||||
|
||||
@@ -53,7 +53,6 @@ import {
|
||||
AutomateRunTriggerType
|
||||
} from '@/modules/core/graph/generated/graphql'
|
||||
import { getGenericRedis } from '@/modules/core/index'
|
||||
import { getUser } from '@/modules/core/repositories/users'
|
||||
import { createAutomation as clientCreateAutomation } from '@/modules/automate/clients/executionEngine'
|
||||
import { Automate, Roles, isNullOrUndefined, isNonNullable } from '@speckle/shared'
|
||||
import { getFeatureFlags, getServerOrigin } from '@/modules/shared/helpers/envHelper'
|
||||
@@ -110,9 +109,11 @@ import { AutomateRunsEmitter } from '@/modules/automate/events/runs'
|
||||
import { createAppToken } from '@/modules/core/services/tokens'
|
||||
import { getCommitFactory } from '@/modules/core/repositories/commits'
|
||||
import { validateStreamAccessFactory } from '@/modules/core/services/streams/access'
|
||||
import { getUserFactory } from '@/modules/core/repositories/users'
|
||||
|
||||
const { FF_AUTOMATE_MODULE_ENABLED } = getFeatureFlags()
|
||||
|
||||
const getUser = getUserFactory({ db })
|
||||
const storeAutomation = storeAutomationFactory({ db })
|
||||
const storeAutomationToken = storeAutomationTokenFactory({ db })
|
||||
const storeAutomationRevision = storeAutomationRevisionFactory({ db })
|
||||
|
||||
@@ -16,7 +16,6 @@ import {
|
||||
CreateAutomateFunctionInput,
|
||||
AutomateFunctionTemplateLanguage
|
||||
} from '@/modules/core/graph/generated/graphql'
|
||||
import { getUser } from '@/modules/core/repositories/users'
|
||||
import {
|
||||
MaybeNullOrUndefined,
|
||||
Nullable,
|
||||
@@ -46,6 +45,7 @@ import {
|
||||
import { getFunctionsMarketplaceUrl } from '@/modules/core/helpers/routeHelper'
|
||||
import { automateLogger } from '@/logging/logging'
|
||||
import { CreateStoredAuthCode } from '@/modules/automate/domain/operations'
|
||||
import { GetUser } from '@/modules/core/domain/users/operations'
|
||||
|
||||
const mapGqlTemplateIdToExecEngineTemplateId = (
|
||||
id: AutomateFunctionTemplateLanguage
|
||||
@@ -119,7 +119,7 @@ export const convertFunctionReleaseToGraphQLReturn = (
|
||||
export type CreateFunctionDeps = {
|
||||
createStoredAuthCode: CreateStoredAuthCode
|
||||
createExecutionEngineFn: typeof createFunction
|
||||
getUser: typeof getUser
|
||||
getUser: GetUser
|
||||
}
|
||||
|
||||
export const createFunctionFromTemplateFactory =
|
||||
|
||||
@@ -48,7 +48,6 @@ import {
|
||||
validateStreamAccessFactory
|
||||
} from '@/modules/core/services/streams/access'
|
||||
import { authorizeResolver } from '@/modules/shared'
|
||||
import { getUser } from '@/modules/core/repositories/users'
|
||||
import { grantStreamPermissionsFactory } from '@/modules/core/repositories/streams'
|
||||
import {
|
||||
addStreamInviteAcceptedActivityFactory,
|
||||
@@ -56,6 +55,7 @@ import {
|
||||
} from '@/modules/activitystream/services/streamActivity'
|
||||
import { saveActivityFactory } from '@/modules/activitystream/repositories'
|
||||
import { publish } from '@/modules/shared/utils/subscriptions'
|
||||
import { getUserFactory } from '@/modules/core/repositories/users'
|
||||
|
||||
/**
|
||||
* TODO: Extra test ideas
|
||||
@@ -65,6 +65,7 @@ import { publish } from '@/modules/shared/utils/subscriptions'
|
||||
|
||||
const { FF_AUTOMATE_MODULE_ENABLED } = getFeatureFlags()
|
||||
|
||||
const getUser = getUserFactory({ db })
|
||||
const saveActivity = saveActivityFactory({ db })
|
||||
const validateStreamAccess = validateStreamAccessFactory({ authorizeResolver })
|
||||
const addOrUpdateStreamCollaborator = addOrUpdateStreamCollaboratorFactory({
|
||||
|
||||
@@ -32,7 +32,6 @@ const {
|
||||
buildCoreInviteEmailContentsFactory
|
||||
} = require('@/modules/serverinvites/services/coreEmailContents')
|
||||
const { getEventBus } = require('@/modules/shared/services/eventBus')
|
||||
const { getUsers } = require('@/modules/core/repositories/users')
|
||||
const { createBranchFactory } = require('@/modules/core/repositories/branches')
|
||||
const { ProjectsEmitter } = require('@/modules/core/events/projectsEmitter')
|
||||
const {
|
||||
@@ -40,7 +39,10 @@ const {
|
||||
} = require('@/modules/activitystream/services/streamActivity')
|
||||
const { saveActivityFactory } = require('@/modules/activitystream/repositories')
|
||||
const { publish } = require('@/modules/shared/utils/subscriptions')
|
||||
const { getUsersFactory, getUserFactory } = require('@/modules/core/repositories/users')
|
||||
|
||||
const getUser = getUserFactory({ db })
|
||||
const getUsers = getUsersFactory({ db })
|
||||
const addStreamCreatedActivity = addStreamCreatedActivityFactory({
|
||||
saveActivity: saveActivityFactory({ db }),
|
||||
publish
|
||||
@@ -50,7 +52,7 @@ const createStream = legacyCreateStreamFactory({
|
||||
createStreamReturnRecord: createStreamReturnRecordFactory({
|
||||
inviteUsersToProject: inviteUsersToProjectFactory({
|
||||
createAndSendInvite: createAndSendInviteFactory({
|
||||
findUserByTarget: findUserByTargetFactory(),
|
||||
findUserByTarget: findUserByTargetFactory({ db }),
|
||||
insertInviteAndDeleteOld: insertInviteAndDeleteOldFactory({ db }),
|
||||
collectAndValidateResourceTargets: collectAndValidateCoreTargetsFactory({
|
||||
getStream
|
||||
@@ -62,7 +64,8 @@ const createStream = legacyCreateStreamFactory({
|
||||
getEventBus().emit({
|
||||
eventName,
|
||||
payload
|
||||
})
|
||||
}),
|
||||
getUser
|
||||
}),
|
||||
getUsers
|
||||
}),
|
||||
|
||||
@@ -31,7 +31,6 @@ const {
|
||||
buildCoreInviteEmailContentsFactory
|
||||
} = require('@/modules/serverinvites/services/coreEmailContents')
|
||||
const { getEventBus } = require('@/modules/shared/services/eventBus')
|
||||
const { getUsers } = require('@/modules/core/repositories/users')
|
||||
const { createBranchFactory } = require('@/modules/core/repositories/branches')
|
||||
const { ProjectsEmitter } = require('@/modules/core/events/projectsEmitter')
|
||||
const {
|
||||
@@ -39,7 +38,10 @@ const {
|
||||
} = require('@/modules/activitystream/services/streamActivity')
|
||||
const { saveActivityFactory } = require('@/modules/activitystream/repositories')
|
||||
const { publish } = require('@/modules/shared/utils/subscriptions')
|
||||
const { getUsersFactory, getUserFactory } = require('@/modules/core/repositories/users')
|
||||
|
||||
const getUser = getUserFactory({ db })
|
||||
const getUsers = getUsersFactory({ db })
|
||||
const addStreamCreatedActivity = addStreamCreatedActivityFactory({
|
||||
saveActivity: saveActivityFactory({ db }),
|
||||
publish
|
||||
@@ -49,7 +51,7 @@ const createStream = legacyCreateStreamFactory({
|
||||
createStreamReturnRecord: createStreamReturnRecordFactory({
|
||||
inviteUsersToProject: inviteUsersToProjectFactory({
|
||||
createAndSendInvite: createAndSendInviteFactory({
|
||||
findUserByTarget: findUserByTargetFactory(),
|
||||
findUserByTarget: findUserByTargetFactory({ db }),
|
||||
insertInviteAndDeleteOld: insertInviteAndDeleteOldFactory({ db }),
|
||||
collectAndValidateResourceTargets: collectAndValidateCoreTargetsFactory({
|
||||
getStream
|
||||
@@ -61,7 +63,8 @@ const createStream = legacyCreateStreamFactory({
|
||||
getEventBus().emit({
|
||||
eventName,
|
||||
payload
|
||||
})
|
||||
}),
|
||||
getUser
|
||||
}),
|
||||
getUsers
|
||||
}),
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
import { db } from '@/db/knex'
|
||||
import { cliLogger } from '@/logging/logging'
|
||||
import { getStreamFactory } from '@/modules/core/repositories/streams'
|
||||
import { getUser } from '@/modules/core/repositories/users'
|
||||
import { getUserFactory } from '@/modules/core/repositories/users'
|
||||
import { BasicTestCommit, createTestCommits } from '@/test/speckle-helpers/commitHelper'
|
||||
import dayjs from 'dayjs'
|
||||
import { times } from 'lodash'
|
||||
@@ -29,6 +29,7 @@ const command: CommandModule<
|
||||
}
|
||||
},
|
||||
handler: async (argv) => {
|
||||
const getUser = getUserFactory({ db })
|
||||
const getStream = getStreamFactory({ db })
|
||||
|
||||
const count = argv.count
|
||||
|
||||
@@ -13,7 +13,6 @@ import {
|
||||
getStreamBranchesByNameFactory,
|
||||
markCommitBranchUpdatedFactory
|
||||
} from '@/modules/core/repositories/branches'
|
||||
import { getUser } from '@/modules/core/repositories/users'
|
||||
import { createObject } from '@/modules/core/services/objects'
|
||||
import {
|
||||
getObjectFactory,
|
||||
@@ -54,6 +53,7 @@ import { VersionsEmitter } from '@/modules/core/events/versionsEmitter'
|
||||
import { addCommitCreatedActivityFactory } from '@/modules/activitystream/services/commitActivity'
|
||||
import { saveActivityFactory } from '@/modules/activitystream/repositories'
|
||||
import { publish } from '@/modules/shared/utils/subscriptions'
|
||||
import { getUserFactory } from '@/modules/core/repositories/users'
|
||||
|
||||
const command: CommandModule<
|
||||
unknown,
|
||||
@@ -149,6 +149,7 @@ const command: CommandModule<
|
||||
})
|
||||
})
|
||||
|
||||
const getUser = getUserFactory({ db })
|
||||
const getStreamCollaborators = getStreamCollaboratorsFactory({ db })
|
||||
const downloadCommit = downloadCommitFactory({
|
||||
getStream,
|
||||
|
||||
@@ -16,7 +16,6 @@ import {
|
||||
getStreamBranchesByNameFactory,
|
||||
markCommitBranchUpdatedFactory
|
||||
} from '@/modules/core/repositories/branches'
|
||||
import { getUser, getUsers } from '@/modules/core/repositories/users'
|
||||
import { createCommitByBranchIdFactory } from '@/modules/core/services/commit/management'
|
||||
import { createObject } from '@/modules/core/services/objects'
|
||||
import {
|
||||
@@ -71,6 +70,7 @@ import { addStreamCreatedActivityFactory } from '@/modules/activitystream/servic
|
||||
import { saveActivityFactory } from '@/modules/activitystream/repositories'
|
||||
import { publish } from '@/modules/shared/utils/subscriptions'
|
||||
import { addCommitCreatedActivityFactory } from '@/modules/activitystream/services/commitActivity'
|
||||
import { getUserFactory, getUsersFactory } from '@/modules/core/repositories/users'
|
||||
|
||||
const command: CommandModule<
|
||||
unknown,
|
||||
@@ -158,10 +158,12 @@ const command: CommandModule<
|
||||
})
|
||||
})
|
||||
|
||||
const getUser = getUserFactory({ db })
|
||||
const getUsers = getUsersFactory({ db })
|
||||
const createStreamReturnRecord = createStreamReturnRecordFactory({
|
||||
inviteUsersToProject: inviteUsersToProjectFactory({
|
||||
createAndSendInvite: createAndSendInviteFactory({
|
||||
findUserByTarget: findUserByTargetFactory(),
|
||||
findUserByTarget: findUserByTargetFactory({ db }),
|
||||
insertInviteAndDeleteOld: insertInviteAndDeleteOldFactory({ db }),
|
||||
collectAndValidateResourceTargets: collectAndValidateCoreTargetsFactory({
|
||||
getStream
|
||||
@@ -173,7 +175,8 @@ const command: CommandModule<
|
||||
getEventBus().emit({
|
||||
eventName,
|
||||
payload
|
||||
})
|
||||
}),
|
||||
getUser
|
||||
}),
|
||||
getUsers
|
||||
}),
|
||||
|
||||
@@ -23,7 +23,7 @@ import {
|
||||
createStreamFactory,
|
||||
getStreamFactory
|
||||
} from '@/modules/core/repositories/streams'
|
||||
import { getUser } from '@/modules/core/repositories/users'
|
||||
import { getUserFactory } from '@/modules/core/repositories/users'
|
||||
import { cloneStreamFactory } from '@/modules/core/services/streams/clone'
|
||||
import { publish } from '@/modules/shared/utils/subscriptions'
|
||||
import { CommandModule } from 'yargs'
|
||||
@@ -46,6 +46,8 @@ const command: CommandModule<
|
||||
},
|
||||
handler: async (argv) => {
|
||||
const { sourceStreamId, targetUserId } = argv
|
||||
|
||||
const getUser = getUserFactory({ db })
|
||||
const cloneStream = cloneStreamFactory({
|
||||
getStream: getStreamFactory({ db }),
|
||||
getUser,
|
||||
|
||||
@@ -78,7 +78,6 @@ const {
|
||||
buildCoreInviteEmailContentsFactory
|
||||
} = require('@/modules/serverinvites/services/coreEmailContents')
|
||||
const { getEventBus } = require('@/modules/shared/services/eventBus')
|
||||
const { getUsers } = require('@/modules/core/repositories/users')
|
||||
const { ProjectsEmitter } = require('@/modules/core/events/projectsEmitter')
|
||||
const {
|
||||
addStreamCreatedActivityFactory
|
||||
@@ -88,7 +87,10 @@ const { publish } = require('@/modules/shared/utils/subscriptions')
|
||||
const {
|
||||
addCommitCreatedActivityFactory
|
||||
} = require('@/modules/activitystream/services/commitActivity')
|
||||
const { getUsersFactory, getUserFactory } = require('@/modules/core/repositories/users')
|
||||
|
||||
const getUser = getUserFactory({ db })
|
||||
const getUsers = getUsersFactory({ db })
|
||||
const markCommitStreamUpdated = markCommitStreamUpdatedFactory({ db })
|
||||
const streamResourceCheck = streamResourceCheckFactory({
|
||||
checkStreamResourceAccess: checkStreamResourceAccessFactory({ db })
|
||||
@@ -137,7 +139,7 @@ const createStream = legacyCreateStreamFactory({
|
||||
createStreamReturnRecord: createStreamReturnRecordFactory({
|
||||
inviteUsersToProject: inviteUsersToProjectFactory({
|
||||
createAndSendInvite: createAndSendInviteFactory({
|
||||
findUserByTarget: findUserByTargetFactory(),
|
||||
findUserByTarget: findUserByTargetFactory({ db }),
|
||||
insertInviteAndDeleteOld: insertInviteAndDeleteOldFactory({ db }),
|
||||
collectAndValidateResourceTargets: collectAndValidateCoreTargetsFactory({
|
||||
getStream
|
||||
@@ -149,7 +151,8 @@ const createStream = legacyCreateStreamFactory({
|
||||
getEventBus().emit({
|
||||
eventName,
|
||||
payload
|
||||
})
|
||||
}),
|
||||
getUser
|
||||
}),
|
||||
getUsers
|
||||
}),
|
||||
|
||||
@@ -97,7 +97,6 @@ const {
|
||||
buildCoreInviteEmailContentsFactory
|
||||
} = require('@/modules/serverinvites/services/coreEmailContents')
|
||||
const { getEventBus } = require('@/modules/shared/services/eventBus')
|
||||
const { getUsers } = require('@/modules/core/repositories/users')
|
||||
const { ProjectsEmitter } = require('@/modules/core/events/projectsEmitter')
|
||||
const {
|
||||
addStreamCreatedActivityFactory
|
||||
@@ -107,7 +106,10 @@ const { publish } = require('@/modules/shared/utils/subscriptions')
|
||||
const {
|
||||
addCommitCreatedActivityFactory
|
||||
} = require('@/modules/activitystream/services/commitActivity')
|
||||
const { getUsersFactory, getUserFactory } = require('@/modules/core/repositories/users')
|
||||
|
||||
const getUser = getUserFactory({ db })
|
||||
const getUsers = getUsersFactory({ db })
|
||||
const getStream = getStreamFactory({ db })
|
||||
const streamResourceCheck = streamResourceCheckFactory({
|
||||
checkStreamResourceAccess: checkStreamResourceAccessFactory({ db })
|
||||
@@ -185,7 +187,7 @@ const createStream = legacyCreateStreamFactory({
|
||||
createStreamReturnRecord: createStreamReturnRecordFactory({
|
||||
inviteUsersToProject: inviteUsersToProjectFactory({
|
||||
createAndSendInvite: createAndSendInviteFactory({
|
||||
findUserByTarget: findUserByTargetFactory(),
|
||||
findUserByTarget: findUserByTargetFactory({ db }),
|
||||
insertInviteAndDeleteOld: insertInviteAndDeleteOldFactory({ db }),
|
||||
collectAndValidateResourceTargets: collectAndValidateCoreTargetsFactory({
|
||||
getStream
|
||||
@@ -197,7 +199,8 @@ const createStream = legacyCreateStreamFactory({
|
||||
getEventBus().emit({
|
||||
eventName,
|
||||
payload
|
||||
})
|
||||
}),
|
||||
getUser
|
||||
}),
|
||||
getUsers
|
||||
}),
|
||||
|
||||
@@ -0,0 +1,24 @@
|
||||
import { UserWithOptionalRole } from '@/modules/core/domain/users/types'
|
||||
import { Nullable } from '@speckle/shared'
|
||||
|
||||
export type GetUserParams = Partial<{
|
||||
/**
|
||||
* Join server_acl and get user role info
|
||||
*/
|
||||
withRole: boolean
|
||||
|
||||
/**
|
||||
* Skip record sanitization. ONLY use when you wish to work with a user's password digest
|
||||
*/
|
||||
skipClean: boolean
|
||||
}>
|
||||
|
||||
export type GetUsers = (
|
||||
userIds: string | string[],
|
||||
params?: GetUserParams
|
||||
) => Promise<UserWithOptionalRole[]>
|
||||
|
||||
export type GetUser = (
|
||||
userId: string,
|
||||
params?: GetUserParams
|
||||
) => Promise<Nullable<UserWithOptionalRole>>
|
||||
@@ -0,0 +1,14 @@
|
||||
import { LimitedUserRecord, UserRecord } from '@/modules/core/helpers/userHelper'
|
||||
import { ServerRoles } from '@speckle/shared'
|
||||
|
||||
export type User = UserRecord
|
||||
export type LimitedUser = LimitedUserRecord
|
||||
|
||||
export type UserWithOptionalRole<UserType extends LimitedUserRecord = UserRecord> =
|
||||
UserType & {
|
||||
/**
|
||||
* Available, if query joined this data from server_acl
|
||||
* (this can be the server role or stream role depending on how and where this was retrieved)
|
||||
*/
|
||||
role?: ServerRoles
|
||||
}
|
||||
@@ -51,7 +51,7 @@ import {
|
||||
getUserStreamsPageFactory,
|
||||
getUserStreamsCountFactory
|
||||
} from '@/modules/core/repositories/streams'
|
||||
import { getUser, getUsers } from '@/modules/core/repositories/users'
|
||||
import { getUserFactory, getUsersFactory } from '@/modules/core/repositories/users'
|
||||
import {
|
||||
getRateLimitResult,
|
||||
isRateLimitBreached
|
||||
@@ -91,13 +91,15 @@ import {
|
||||
} from '@/modules/shared/utils/subscriptions'
|
||||
import { has } from 'lodash'
|
||||
|
||||
const getUsers = getUsersFactory({ db })
|
||||
const getUser = getUserFactory({ db })
|
||||
const saveActivity = saveActivityFactory({ db })
|
||||
const getStream = getStreamFactory({ db })
|
||||
const getStreamCollaborators = getStreamCollaboratorsFactory({ db })
|
||||
const createStreamReturnRecord = createStreamReturnRecordFactory({
|
||||
inviteUsersToProject: inviteUsersToProjectFactory({
|
||||
createAndSendInvite: createAndSendInviteFactory({
|
||||
findUserByTarget: findUserByTargetFactory(),
|
||||
findUserByTarget: findUserByTargetFactory({ db }),
|
||||
insertInviteAndDeleteOld: insertInviteAndDeleteOldFactory({ db }),
|
||||
collectAndValidateResourceTargets: collectAndValidateCoreTargetsFactory({
|
||||
getStream
|
||||
@@ -109,7 +111,8 @@ const createStreamReturnRecord = createStreamReturnRecordFactory({
|
||||
getEventBus().emit({
|
||||
eventName,
|
||||
payload
|
||||
})
|
||||
}),
|
||||
getUser
|
||||
}),
|
||||
getUsers
|
||||
}),
|
||||
|
||||
@@ -59,7 +59,6 @@ import {
|
||||
} from '@/modules/serverinvites/repositories/serverInvites'
|
||||
import db from '@/db/knex'
|
||||
import { getInvitationTargetUsersFactory } from '@/modules/serverinvites/services/retrieval'
|
||||
import { getUser, getUsers } from '@/modules/core/repositories/users'
|
||||
import { BadRequestError, InvalidArgumentError } from '@/modules/shared/errors'
|
||||
import { createAndSendInviteFactory } from '@/modules/serverinvites/services/creation'
|
||||
import { collectAndValidateCoreTargetsFactory } from '@/modules/serverinvites/services/coreResourceCollection'
|
||||
@@ -87,7 +86,10 @@ import {
|
||||
favoriteStreamFactory,
|
||||
getFavoriteStreamsCollectionFactory
|
||||
} from '@/modules/core/services/streams/favorite'
|
||||
import { getUserFactory, getUsersFactory } from '@/modules/core/repositories/users'
|
||||
|
||||
const getUsers = getUsersFactory({ db })
|
||||
const getUser = getUserFactory({ db })
|
||||
const getFavoriteStreamsCollection = getFavoriteStreamsCollectionFactory({
|
||||
getFavoritedStreamsCount: getFavoritedStreamsCountFactory({ db }),
|
||||
getFavoritedStreamsPage: getFavoritedStreamsPageFactory({ db })
|
||||
@@ -97,7 +99,7 @@ const getStream = getStreamFactory({ db })
|
||||
const createStreamReturnRecord = createStreamReturnRecordFactory({
|
||||
inviteUsersToProject: inviteUsersToProjectFactory({
|
||||
createAndSendInvite: createAndSendInviteFactory({
|
||||
findUserByTarget: findUserByTargetFactory(),
|
||||
findUserByTarget: findUserByTargetFactory({ db }),
|
||||
insertInviteAndDeleteOld: insertInviteAndDeleteOldFactory({ db }),
|
||||
collectAndValidateResourceTargets: collectAndValidateCoreTargetsFactory({
|
||||
getStream
|
||||
@@ -109,7 +111,8 @@ const createStreamReturnRecord = createStreamReturnRecordFactory({
|
||||
getEventBus().emit({
|
||||
eventName,
|
||||
payload
|
||||
})
|
||||
}),
|
||||
getUser
|
||||
}),
|
||||
getUsers
|
||||
}),
|
||||
|
||||
@@ -15,12 +15,13 @@ import {
|
||||
updateAllInviteTargetsFactory
|
||||
} from '@/modules/serverinvites/repositories/serverInvites'
|
||||
import { validateAndCreateUserEmailFactory } from '@/modules/core/services/userEmails'
|
||||
import { getUser } from '@/modules/core/repositories/users'
|
||||
import { getServerInfo } from '@/modules/core/services/generic'
|
||||
import { deleteOldAndInsertNewVerificationFactory } from '@/modules/emails/repositories'
|
||||
import { renderEmail } from '@/modules/emails/services/emailRendering'
|
||||
import { sendEmail } from '@/modules/emails/services/sending'
|
||||
import { getUserFactory } from '@/modules/core/repositories/users'
|
||||
|
||||
const getUser = getUserFactory({ db })
|
||||
const requestNewEmailVerification = requestNewEmailVerificationFactory({
|
||||
findEmail: findEmailFactory({ db }),
|
||||
getUser,
|
||||
|
||||
@@ -9,7 +9,6 @@ import {
|
||||
getUserStreamCountsFactory,
|
||||
getStreamsSourceAppsFactory
|
||||
} from '@/modules/core/repositories/streams'
|
||||
import { UserWithOptionalRole, getUsers } from '@/modules/core/repositories/users'
|
||||
import { keyBy } from 'lodash'
|
||||
import { AuthContext } from '@/modules/shared/authz'
|
||||
import {
|
||||
@@ -85,6 +84,10 @@ import db from '@/db/knex'
|
||||
import { graphDataloadersBuilders } from '@/modules'
|
||||
import { getAppScopesFactory } from '@/modules/auth/repositories'
|
||||
import { StreamWithCommitId } from '@/modules/core/domain/streams/types'
|
||||
import {
|
||||
getUsersFactory,
|
||||
UserWithOptionalRole
|
||||
} from '@/modules/core/repositories/users'
|
||||
|
||||
const simpleTupleCacheKey = (key: [string, string]) => `${key[0]}:${key[1]}`
|
||||
|
||||
@@ -124,6 +127,7 @@ const getOwnedFavoritesCountByUserIds = getOwnedFavoritesCountByUserIdsFactory({
|
||||
const getStreamRoles = getStreamRolesFactory({ db })
|
||||
const getUserStreamCounts = getUserStreamCountsFactory({ db })
|
||||
const getStreamsSourceApps = getStreamsSourceAppsFactory({ db })
|
||||
const getUsers = getUsersFactory({ db })
|
||||
|
||||
/**
|
||||
* TODO: Lazy load DataLoaders to reduce memory usage
|
||||
|
||||
@@ -1,9 +1,5 @@
|
||||
import { ServerAcl, UserEmails, Users, knex } from '@/modules/core/dbSchema'
|
||||
import {
|
||||
LimitedUserRecord,
|
||||
UserRecord,
|
||||
UserWithRole
|
||||
} from '@/modules/core/helpers/types'
|
||||
import { UserRecord, UserWithRole } from '@/modules/core/helpers/types'
|
||||
import { Nullable } from '@/modules/shared/helpers/typeHelper'
|
||||
import { clamp, isArray, omit } from 'lodash'
|
||||
import { metaHelpers } from '@/modules/core/helpers/meta'
|
||||
@@ -13,27 +9,18 @@ import { Roles, ServerRoles } from '@speckle/shared'
|
||||
import { updateUserEmailFactory } from '@/modules/core/repositories/userEmails'
|
||||
import { db } from '@/db/knex'
|
||||
import { markUserEmailAsVerifiedFactory } from '@/modules/core/services/users/emailVerification'
|
||||
import { UserWithOptionalRole } from '@/modules/core/domain/users/types'
|
||||
import {
|
||||
GetUser,
|
||||
GetUserParams,
|
||||
GetUsers
|
||||
} from '@/modules/core/domain/users/operations'
|
||||
export type { UserWithOptionalRole, GetUserParams }
|
||||
|
||||
export type UserWithOptionalRole<User extends LimitedUserRecord = UserRecord> = User & {
|
||||
/**
|
||||
* Available, if query joined this data from server_acl
|
||||
* (this can be the server role or stream role depending on how and where this was retrieved)
|
||||
*/
|
||||
role?: ServerRoles
|
||||
const tables = {
|
||||
users: (db: Knex) => db<UserRecord>(Users.name)
|
||||
}
|
||||
|
||||
export type GetUserParams = Partial<{
|
||||
/**
|
||||
* Join server_acl and get user role info
|
||||
*/
|
||||
withRole: boolean
|
||||
|
||||
/**
|
||||
* Skip record sanitization. ONLY use when you wish to work with a user's password digest
|
||||
*/
|
||||
skipClean: boolean
|
||||
}>
|
||||
|
||||
function sanitizeUserRecord<T extends Nullable<UserRecord>>(user: T): T {
|
||||
if (!user) return user
|
||||
delete user.passwordDigest
|
||||
@@ -65,35 +52,37 @@ export const getUsersBaseQuery = (
|
||||
/**
|
||||
* Get users by ID
|
||||
*/
|
||||
export async function getUsers(
|
||||
userIds: string | string[],
|
||||
params?: GetUserParams
|
||||
): Promise<UserWithOptionalRole[]> {
|
||||
const { withRole, skipClean } = params || {}
|
||||
userIds = isArray(userIds) ? userIds : [userIds]
|
||||
export const getUsersFactory =
|
||||
(deps: { db: Knex }): GetUsers =>
|
||||
async (
|
||||
userIds: string | string[],
|
||||
params?: GetUserParams
|
||||
): Promise<UserWithOptionalRole[]> => {
|
||||
const { withRole, skipClean } = params || {}
|
||||
userIds = isArray(userIds) ? userIds : [userIds]
|
||||
|
||||
const q = Users.knex<UserWithOptionalRole[]>().whereIn(Users.col.id, userIds)
|
||||
q.leftJoin(UserEmails.name, UserEmails.col.userId, Users.col.id).where({
|
||||
[UserEmails.col.primary]: true
|
||||
})
|
||||
const q = tables.users(deps.db).whereIn(Users.col.id, userIds)
|
||||
q.leftJoin(UserEmails.name, UserEmails.col.userId, Users.col.id).where({
|
||||
[UserEmails.col.primary]: true
|
||||
})
|
||||
|
||||
const columns: (Knex.Raw<UserRecord> | string)[] = [
|
||||
...Object.values(omit(Users.col, ['email', 'verified'])),
|
||||
knex.raw(`(array_agg("user_emails"."email"))[1] as email`),
|
||||
knex.raw(`(array_agg("user_emails"."verified"))[1] as verified`)
|
||||
]
|
||||
if (withRole) {
|
||||
// Getting first role from grouped results
|
||||
columns.push(knex.raw(`(array_agg("server_acl"."role"))[1] as role`))
|
||||
q.leftJoin(ServerAcl.name, ServerAcl.col.userId, Users.col.id)
|
||||
const columns: (Knex.Raw<UserRecord> | string)[] = [
|
||||
...Object.values(omit(Users.col, ['email', 'verified'])),
|
||||
knex.raw(`(array_agg("user_emails"."email"))[1] as email`),
|
||||
knex.raw(`(array_agg("user_emails"."verified"))[1] as verified`)
|
||||
]
|
||||
if (withRole) {
|
||||
// Getting first role from grouped results
|
||||
columns.push(knex.raw(`(array_agg("server_acl"."role"))[1] as role`))
|
||||
q.leftJoin(ServerAcl.name, ServerAcl.col.userId, Users.col.id)
|
||||
}
|
||||
|
||||
q.columns<UserWithOptionalRole[]>(columns)
|
||||
q.groupBy(Users.col.id)
|
||||
|
||||
return (await q).map((u) => (skipClean ? u : sanitizeUserRecord(u)))
|
||||
}
|
||||
|
||||
q.columns(columns)
|
||||
q.groupBy(Users.col.id)
|
||||
|
||||
return (await q).map((u) => (skipClean ? u : sanitizeUserRecord(u)))
|
||||
}
|
||||
|
||||
type UserQuery = {
|
||||
query: string | null
|
||||
role?: ServerRoles | null
|
||||
@@ -149,11 +138,13 @@ export async function countUsers(args: UserQuery): Promise<number> {
|
||||
/**
|
||||
* Get user by ID
|
||||
*/
|
||||
export async function getUser(userId: string, params?: GetUserParams) {
|
||||
if (!userId) return null
|
||||
const users = await getUsers([userId], params)
|
||||
return users?.[0] || null
|
||||
}
|
||||
export const getUserFactory =
|
||||
(deps: { db: Knex }): GetUser =>
|
||||
async (userId: string, params?: GetUserParams) => {
|
||||
if (!userId) return null
|
||||
const users = await getUsersFactory(deps)([userId], params)
|
||||
return users?.[0] || null
|
||||
}
|
||||
|
||||
/**
|
||||
* Get user by e-mail address
|
||||
|
||||
@@ -12,12 +12,12 @@ import {
|
||||
RevokeStreamPermissions,
|
||||
ValidateStreamAccess
|
||||
} from '@/modules/core/domain/streams/operations'
|
||||
import { GetUser } from '@/modules/core/domain/users/operations'
|
||||
import {
|
||||
StreamAccessUpdateError,
|
||||
StreamInvalidAccessError
|
||||
} from '@/modules/core/errors/stream'
|
||||
import { StreamRecord } from '@/modules/core/helpers/types'
|
||||
import { getUser } from '@/modules/core/repositories/users'
|
||||
import { AuthorizeResolver } from '@/modules/shared/domain/operations'
|
||||
import { BadRequestError, ForbiddenError, LogicError } from '@/modules/shared/errors'
|
||||
import { ensureError, Roles, StreamRoles } from '@speckle/shared'
|
||||
@@ -142,7 +142,7 @@ export const removeStreamCollaboratorFactory =
|
||||
export const addOrUpdateStreamCollaboratorFactory =
|
||||
(deps: {
|
||||
validateStreamAccess: ValidateStreamAccess
|
||||
getUser: typeof getUser
|
||||
getUser: GetUser
|
||||
grantStreamPermissions: GrantStreamPermissions
|
||||
addStreamInviteAcceptedActivity: ReturnType<
|
||||
typeof addStreamInviteAcceptedActivityFactory
|
||||
|
||||
@@ -5,7 +5,7 @@ import {
|
||||
UserRecord
|
||||
} from '@/modules/core/helpers/types'
|
||||
import { StreamWithOptionalRole } from '@/modules/core/repositories/streams'
|
||||
import { getUser, UserWithOptionalRole } from '@/modules/core/repositories/users'
|
||||
import { UserWithOptionalRole } from '@/modules/core/repositories/users'
|
||||
import { generateCommitId } from '@/modules/core/repositories/commits'
|
||||
import { chunk } from 'lodash'
|
||||
import { generateBranchId } from '@/modules/core/repositories/branches'
|
||||
@@ -42,6 +42,7 @@ import {
|
||||
GetBatchedStreamBranches,
|
||||
InsertBranches
|
||||
} from '@/modules/core/domain/branches/operations'
|
||||
import { GetUser } from '@/modules/core/domain/users/operations'
|
||||
|
||||
type CloneStreamInitialState = {
|
||||
user: UserWithOptionalRole<UserRecord>
|
||||
@@ -79,7 +80,7 @@ const decrementingDateGenerator = () => {
|
||||
|
||||
type PrepareStateDeps = {
|
||||
getStream: GetStream
|
||||
getUser: typeof getUser
|
||||
getUser: GetUser
|
||||
db: Knex
|
||||
}
|
||||
|
||||
|
||||
@@ -5,7 +5,6 @@ import {
|
||||
} from '@/modules/core/errors/stream'
|
||||
import { StreamRecord } from '@/modules/core/helpers/types'
|
||||
import { logger } from '@/logging/logging'
|
||||
import { getUser } from '@/modules/core/services/users'
|
||||
import {
|
||||
ContextResourceAccessRules,
|
||||
isNewResourceAllowed
|
||||
@@ -18,13 +17,14 @@ import {
|
||||
UpdateStreamRecord
|
||||
} from '@/modules/core/domain/streams/operations'
|
||||
import { GetOnboardingBaseProject } from '@/modules/cross-server-sync/domain/operations'
|
||||
import { GetUser } from '@/modules/core/domain/users/operations'
|
||||
|
||||
export const createOnboardingStreamFactory =
|
||||
(deps: {
|
||||
getOnboardingBaseProject: GetOnboardingBaseProject
|
||||
cloneStream: CloneStream
|
||||
createStreamReturnRecord: CreateStream
|
||||
getUser: typeof getUser
|
||||
getUser: GetUser
|
||||
updateStream: UpdateStreamRecord
|
||||
}): CreateOnboardingStream =>
|
||||
async (
|
||||
@@ -69,7 +69,7 @@ export const createOnboardingStreamFactory =
|
||||
|
||||
logger.info('Updating onboarding stream title')
|
||||
const user = await deps.getUser(targetUserId)
|
||||
const name = user.name.split(' ')[0]
|
||||
const name = user!.name.split(' ')[0]
|
||||
await deps.updateStream({
|
||||
id: newStream.id,
|
||||
name: `${name}'s First Project`,
|
||||
|
||||
@@ -20,7 +20,7 @@ const { LIMITED_USER_FIELDS } = require('@/modules/core/helpers/userHelper')
|
||||
const {
|
||||
getUserByEmail,
|
||||
getUsersBaseQuery,
|
||||
getUser
|
||||
getUserFactory
|
||||
} = require('@/modules/core/repositories/users')
|
||||
const { UsersEmitter, UsersEvents } = require('@/modules/core/events/usersEmitter')
|
||||
const { pick, omit } = require('lodash')
|
||||
@@ -75,6 +75,7 @@ const _ensureAtleastOneAdminRemains = async (userId) => {
|
||||
}
|
||||
}
|
||||
|
||||
const getUser = getUserFactory({ db })
|
||||
const requestNewEmailVerification = requestNewEmailVerificationFactory({
|
||||
findEmail: findEmailFactory({ db }),
|
||||
getUser,
|
||||
|
||||
@@ -5,7 +5,7 @@ import { UserUpdateError, UserValidationError } from '@/modules/core/errors/user
|
||||
import { PasswordTooShortError } from '@/modules/core/errors/userinput'
|
||||
import { UserUpdateInput } from '@/modules/core/graph/generated/graphql'
|
||||
import type { UserRecord } from '@/modules/core/helpers/userHelper'
|
||||
import { getUser, updateUser } from '@/modules/core/repositories/users'
|
||||
import { getUserFactory, updateUser } from '@/modules/core/repositories/users'
|
||||
import { sanitizeImageUrl } from '@/modules/shared/helpers/sanitization'
|
||||
import { isNullOrUndefined } from '@speckle/shared'
|
||||
import bcrypt from 'bcrypt'
|
||||
@@ -13,6 +13,7 @@ import bcrypt from 'bcrypt'
|
||||
export const MINIMUM_PASSWORD_LENGTH = 8
|
||||
|
||||
export async function updateUserAndNotify(userId: string, update: UserUpdateInput) {
|
||||
const getUser = getUserFactory({ db })
|
||||
const existingUser = await getUser(userId)
|
||||
if (!existingUser) {
|
||||
throw new UserUpdateError('Attempting to update a non-existant user')
|
||||
@@ -71,6 +72,7 @@ export async function changePassword(
|
||||
input: { oldPassword: string; newPassword: string }
|
||||
) {
|
||||
const { oldPassword, newPassword } = input
|
||||
const getUser = getUserFactory({ db })
|
||||
const user = await getUser(userId, { skipClean: true })
|
||||
if (!user) {
|
||||
throw new UserUpdateError('Could not find the user with the specified id')
|
||||
|
||||
@@ -10,7 +10,7 @@ import { Roles } from '@/modules/core/helpers/mainConstants'
|
||||
import { createBranchFactory } from '@/modules/core/repositories/branches'
|
||||
import { getCommitsFactory } from '@/modules/core/repositories/commits'
|
||||
import { grantStreamPermissionsFactory } from '@/modules/core/repositories/streams'
|
||||
import { getUser } from '@/modules/core/repositories/users'
|
||||
import { getUserFactory } from '@/modules/core/repositories/users'
|
||||
import {
|
||||
addOrUpdateStreamCollaboratorFactory,
|
||||
validateStreamAccessFactory
|
||||
@@ -36,6 +36,7 @@ enum BatchActionType {
|
||||
Delete
|
||||
}
|
||||
|
||||
const getUser = getUserFactory({ db })
|
||||
const createBranch = createBranchFactory({ db })
|
||||
const getCommits = getCommitsFactory({ db })
|
||||
const saveActivity = saveActivityFactory({ db })
|
||||
|
||||
@@ -67,7 +67,6 @@ const {
|
||||
buildCoreInviteEmailContentsFactory
|
||||
} = require('@/modules/serverinvites/services/coreEmailContents')
|
||||
const { getEventBus } = require('@/modules/shared/services/eventBus')
|
||||
const { getUsers } = require('@/modules/core/repositories/users')
|
||||
const { ProjectsEmitter } = require('@/modules/core/events/projectsEmitter')
|
||||
const {
|
||||
addStreamCreatedActivityFactory
|
||||
@@ -77,10 +76,13 @@ const { publish } = require('@/modules/shared/utils/subscriptions')
|
||||
const {
|
||||
addCommitCreatedActivityFactory
|
||||
} = require('@/modules/activitystream/services/commitActivity')
|
||||
const { getUsersFactory, getUserFactory } = require('@/modules/core/repositories/users')
|
||||
|
||||
const db = knex
|
||||
const Commits = () => knex('commits')
|
||||
|
||||
const getUser = getUserFactory({ db })
|
||||
const getUsers = getUsersFactory({ db })
|
||||
const markCommitStreamUpdated = markCommitStreamUpdatedFactory({ db })
|
||||
const markBranchStreamUpdated = markBranchStreamUpdatedFactory({ db })
|
||||
const getStream = getStreamFactory({ db: knex })
|
||||
@@ -131,7 +133,7 @@ const createStream = legacyCreateStreamFactory({
|
||||
createStreamReturnRecord: createStreamReturnRecordFactory({
|
||||
inviteUsersToProject: inviteUsersToProjectFactory({
|
||||
createAndSendInvite: createAndSendInviteFactory({
|
||||
findUserByTarget: findUserByTargetFactory(),
|
||||
findUserByTarget: findUserByTargetFactory({ db }),
|
||||
insertInviteAndDeleteOld: insertInviteAndDeleteOldFactory({ db }),
|
||||
collectAndValidateResourceTargets: collectAndValidateCoreTargetsFactory({
|
||||
getStream
|
||||
@@ -143,7 +145,8 @@ const createStream = legacyCreateStreamFactory({
|
||||
getEventBus().emit({
|
||||
eventName,
|
||||
payload
|
||||
})
|
||||
}),
|
||||
getUser
|
||||
}),
|
||||
getUsers
|
||||
}),
|
||||
|
||||
@@ -76,14 +76,16 @@ const {
|
||||
buildCoreInviteEmailContentsFactory
|
||||
} = require('@/modules/serverinvites/services/coreEmailContents')
|
||||
const { getEventBus } = require('@/modules/shared/services/eventBus')
|
||||
const { getUsers } = require('@/modules/core/repositories/users')
|
||||
const { ProjectsEmitter } = require('@/modules/core/events/projectsEmitter')
|
||||
const {
|
||||
addStreamCreatedActivityFactory
|
||||
} = require('@/modules/activitystream/services/streamActivity')
|
||||
const { saveActivityFactory } = require('@/modules/activitystream/repositories')
|
||||
const { publish } = require('@/modules/shared/utils/subscriptions')
|
||||
const { getUsersFactory, getUserFactory } = require('@/modules/core/repositories/users')
|
||||
|
||||
const getUser = getUserFactory({ db })
|
||||
const getUsers = getUsersFactory({ db })
|
||||
const markCommitStreamUpdated = markCommitStreamUpdatedFactory({ db })
|
||||
const getCommitStream = getCommitStreamFactory({ db })
|
||||
const getStream = getStreamFactory({ db })
|
||||
@@ -149,7 +151,7 @@ const createStream = legacyCreateStreamFactory({
|
||||
createStreamReturnRecord: createStreamReturnRecordFactory({
|
||||
inviteUsersToProject: inviteUsersToProjectFactory({
|
||||
createAndSendInvite: createAndSendInviteFactory({
|
||||
findUserByTarget: findUserByTargetFactory(),
|
||||
findUserByTarget: findUserByTargetFactory({ db }),
|
||||
insertInviteAndDeleteOld: insertInviteAndDeleteOldFactory({ db }),
|
||||
collectAndValidateResourceTargets: collectAndValidateCoreTargetsFactory({
|
||||
getStream
|
||||
@@ -161,7 +163,8 @@ const createStream = legacyCreateStreamFactory({
|
||||
getEventBus().emit({
|
||||
eventName,
|
||||
payload
|
||||
})
|
||||
}),
|
||||
getUser
|
||||
}),
|
||||
getUsers
|
||||
}),
|
||||
|
||||
@@ -8,7 +8,7 @@ import {
|
||||
import { Commits, Streams, Users } from '@/modules/core/dbSchema'
|
||||
import { Roles } from '@/modules/core/helpers/mainConstants'
|
||||
import { grantStreamPermissionsFactory } from '@/modules/core/repositories/streams'
|
||||
import { getUser } from '@/modules/core/repositories/users'
|
||||
import { getUserFactory } from '@/modules/core/repositories/users'
|
||||
import {
|
||||
addOrUpdateStreamCollaboratorFactory,
|
||||
validateStreamAccessFactory
|
||||
@@ -24,6 +24,7 @@ import { createTestCommit } from '@/test/speckle-helpers/commitHelper'
|
||||
import { BasicTestStream, createTestStreams } from '@/test/speckle-helpers/streamHelper'
|
||||
import { expect } from 'chai'
|
||||
|
||||
const getUser = getUserFactory({ db })
|
||||
const saveActivity = saveActivityFactory({ db })
|
||||
const validateStreamAccess = validateStreamAccessFactory({ authorizeResolver })
|
||||
const addOrUpdateStreamCollaborator = addOrUpdateStreamCollaboratorFactory({
|
||||
|
||||
@@ -38,7 +38,6 @@ const {
|
||||
buildCoreInviteEmailContentsFactory
|
||||
} = require('@/modules/serverinvites/services/coreEmailContents')
|
||||
const { getEventBus } = require('@/modules/shared/services/eventBus')
|
||||
const { getUsers } = require('@/modules/core/repositories/users')
|
||||
const { createBranchFactory } = require('@/modules/core/repositories/branches')
|
||||
const { ProjectsEmitter } = require('@/modules/core/events/projectsEmitter')
|
||||
const {
|
||||
@@ -46,7 +45,10 @@ const {
|
||||
} = require('@/modules/activitystream/services/streamActivity')
|
||||
const { saveActivityFactory } = require('@/modules/activitystream/repositories')
|
||||
const { publish } = require('@/modules/shared/utils/subscriptions')
|
||||
const { getUsersFactory, getUserFactory } = require('@/modules/core/repositories/users')
|
||||
|
||||
const getUser = getUserFactory({ db })
|
||||
const getUsers = getUsersFactory({ db })
|
||||
const addStreamCreatedActivity = addStreamCreatedActivityFactory({
|
||||
saveActivity: saveActivityFactory({ db }),
|
||||
publish
|
||||
@@ -56,7 +58,7 @@ const createStream = legacyCreateStreamFactory({
|
||||
createStreamReturnRecord: createStreamReturnRecordFactory({
|
||||
inviteUsersToProject: inviteUsersToProjectFactory({
|
||||
createAndSendInvite: createAndSendInviteFactory({
|
||||
findUserByTarget: findUserByTargetFactory(),
|
||||
findUserByTarget: findUserByTargetFactory({ db }),
|
||||
insertInviteAndDeleteOld: insertInviteAndDeleteOldFactory({ db }),
|
||||
collectAndValidateResourceTargets: collectAndValidateCoreTargetsFactory({
|
||||
getStream
|
||||
@@ -68,7 +70,8 @@ const createStream = legacyCreateStreamFactory({
|
||||
getEventBus().emit({
|
||||
eventName,
|
||||
payload
|
||||
})
|
||||
}),
|
||||
getUser
|
||||
}),
|
||||
getUsers
|
||||
}),
|
||||
|
||||
@@ -43,7 +43,6 @@ const {
|
||||
buildCoreInviteEmailContentsFactory
|
||||
} = require('@/modules/serverinvites/services/coreEmailContents')
|
||||
const { getEventBus } = require('@/modules/shared/services/eventBus')
|
||||
const { getUsers } = require('@/modules/core/repositories/users')
|
||||
const { createBranchFactory } = require('@/modules/core/repositories/branches')
|
||||
const { ProjectsEmitter } = require('@/modules/core/events/projectsEmitter')
|
||||
const {
|
||||
@@ -51,7 +50,10 @@ const {
|
||||
} = require('@/modules/activitystream/services/streamActivity')
|
||||
const { saveActivityFactory } = require('@/modules/activitystream/repositories')
|
||||
const { publish } = require('@/modules/shared/utils/subscriptions')
|
||||
const { getUsersFactory, getUserFactory } = require('@/modules/core/repositories/users')
|
||||
|
||||
const getUser = getUserFactory({ db })
|
||||
const getUsers = getUsersFactory({ db })
|
||||
const addStreamCreatedActivity = addStreamCreatedActivityFactory({
|
||||
saveActivity: saveActivityFactory({ db }),
|
||||
publish
|
||||
@@ -61,7 +63,7 @@ const createStream = legacyCreateStreamFactory({
|
||||
createStreamReturnRecord: createStreamReturnRecordFactory({
|
||||
inviteUsersToProject: inviteUsersToProjectFactory({
|
||||
createAndSendInvite: createAndSendInviteFactory({
|
||||
findUserByTarget: findUserByTargetFactory(),
|
||||
findUserByTarget: findUserByTargetFactory({ db }),
|
||||
insertInviteAndDeleteOld: insertInviteAndDeleteOldFactory({ db }),
|
||||
collectAndValidateResourceTargets: collectAndValidateCoreTargetsFactory({
|
||||
getStream
|
||||
@@ -73,7 +75,8 @@ const createStream = legacyCreateStreamFactory({
|
||||
getEventBus().emit({
|
||||
eventName,
|
||||
payload
|
||||
})
|
||||
}),
|
||||
getUser
|
||||
}),
|
||||
getUsers
|
||||
}),
|
||||
|
||||
@@ -33,8 +33,9 @@ const {
|
||||
addStreamPermissionsAddedActivityFactory
|
||||
} = require('@/modules/activitystream/services/streamActivity')
|
||||
const { publish } = require('@/modules/shared/utils/subscriptions')
|
||||
const { getUser } = require('@/modules/core/repositories/users')
|
||||
const { getUserFactory } = require('@/modules/core/repositories/users')
|
||||
|
||||
const getUser = getUserFactory({ db })
|
||||
const getStream = getStreamFactory({ db })
|
||||
const saveActivity = saveActivityFactory({ db })
|
||||
const validateStreamAccess = validateStreamAccessFactory({ authorizeResolver })
|
||||
|
||||
@@ -22,17 +22,18 @@ const {
|
||||
addOrUpdateStreamCollaboratorFactory
|
||||
} = require('@/modules/core/services/streams/access')
|
||||
const { authorizeResolver } = require('@/modules/shared')
|
||||
const { getUser } = require('@/modules/core/repositories/users')
|
||||
const { grantStreamPermissionsFactory } = require('@/modules/core/repositories/streams')
|
||||
const {
|
||||
addStreamInviteAcceptedActivityFactory,
|
||||
addStreamPermissionsAddedActivityFactory
|
||||
} = require('@/modules/activitystream/services/streamActivity')
|
||||
const { publish } = require('@/modules/shared/utils/subscriptions')
|
||||
const { getUserFactory } = require('@/modules/core/repositories/users')
|
||||
|
||||
const saveActivity = saveActivityFactory({ db })
|
||||
const validateStreamAccess = validateStreamAccessFactory({ authorizeResolver })
|
||||
|
||||
const getUser = getUserFactory({ db })
|
||||
const addOrUpdateStreamCollaborator = addOrUpdateStreamCollaboratorFactory({
|
||||
validateStreamAccess,
|
||||
getUser,
|
||||
|
||||
@@ -7,7 +7,13 @@ import {
|
||||
import { updateUserEmailFactory } from '@/modules/core/repositories/userEmails'
|
||||
import { db } from '@/db/knex'
|
||||
import { expect } from 'chai'
|
||||
import { getUserByEmail, getUsers, listUsers } from '@/modules/core/repositories/users'
|
||||
import {
|
||||
getUserByEmail,
|
||||
getUsersFactory,
|
||||
listUsers
|
||||
} from '@/modules/core/repositories/users'
|
||||
|
||||
const getUsers = getUsersFactory({ db })
|
||||
|
||||
describe('Find users @core', () => {
|
||||
describe('getUsers', () => {
|
||||
|
||||
@@ -4,8 +4,8 @@ import { beforeEachContext } from '@/test/hooks'
|
||||
import { expect } from 'chai'
|
||||
import {
|
||||
countUsers,
|
||||
getUser,
|
||||
getUserByEmail,
|
||||
getUserFactory,
|
||||
listUsers,
|
||||
markUserAsVerified
|
||||
} from '@/modules/core/repositories/users'
|
||||
@@ -42,6 +42,7 @@ import { deleteOldAndInsertNewVerificationFactory } from '@/modules/emails/repos
|
||||
import { renderEmail } from '@/modules/emails/services/emailRendering'
|
||||
import { sendEmail } from '@/modules/emails/services/sending'
|
||||
|
||||
const getUser = getUserFactory({ db })
|
||||
const requestNewEmailVerification = requestNewEmailVerificationFactory({
|
||||
findEmail: findEmailFactory({ db }),
|
||||
getUser,
|
||||
|
||||
@@ -44,7 +44,6 @@ const {
|
||||
buildCoreInviteEmailContentsFactory
|
||||
} = require('@/modules/serverinvites/services/coreEmailContents')
|
||||
const { getEventBus } = require('@/modules/shared/services/eventBus')
|
||||
const { getUsers } = require('@/modules/core/repositories/users')
|
||||
const { createBranchFactory } = require('@/modules/core/repositories/branches')
|
||||
const { ProjectsEmitter } = require('@/modules/core/events/projectsEmitter')
|
||||
const {
|
||||
@@ -52,6 +51,7 @@ const {
|
||||
} = require('@/modules/activitystream/services/streamActivity')
|
||||
const { saveActivityFactory } = require('@/modules/activitystream/repositories')
|
||||
const { publish } = require('@/modules/shared/utils/subscriptions')
|
||||
const { getUsersFactory, getUserFactory } = require('@/modules/core/repositories/users')
|
||||
|
||||
const sampleCommit = JSON.parse(`{
|
||||
"Objects": [
|
||||
@@ -76,6 +76,8 @@ const sampleObject = JSON.parse(`{
|
||||
"speckleType": "Tests.Polyline"
|
||||
}`)
|
||||
|
||||
const getUser = getUserFactory({ db })
|
||||
const getUsers = getUsersFactory({ db })
|
||||
const addStreamCreatedActivity = addStreamCreatedActivityFactory({
|
||||
saveActivity: saveActivityFactory({ db }),
|
||||
publish
|
||||
@@ -85,7 +87,7 @@ const createStream = legacyCreateStreamFactory({
|
||||
createStreamReturnRecord: createStreamReturnRecordFactory({
|
||||
inviteUsersToProject: inviteUsersToProjectFactory({
|
||||
createAndSendInvite: createAndSendInviteFactory({
|
||||
findUserByTarget: findUserByTargetFactory(),
|
||||
findUserByTarget: findUserByTargetFactory({ db }),
|
||||
insertInviteAndDeleteOld: insertInviteAndDeleteOldFactory({ db }),
|
||||
collectAndValidateResourceTargets: collectAndValidateCoreTargetsFactory({
|
||||
getStream
|
||||
@@ -97,7 +99,8 @@ const createStream = legacyCreateStreamFactory({
|
||||
getEventBus().emit({
|
||||
eventName,
|
||||
payload
|
||||
})
|
||||
}),
|
||||
getUser
|
||||
}),
|
||||
getUsers
|
||||
}),
|
||||
|
||||
@@ -37,7 +37,6 @@ const {
|
||||
buildCoreInviteEmailContentsFactory
|
||||
} = require('@/modules/serverinvites/services/coreEmailContents')
|
||||
const { getEventBus } = require('@/modules/shared/services/eventBus')
|
||||
const { getUsers } = require('@/modules/core/repositories/users')
|
||||
const { createBranchFactory } = require('@/modules/core/repositories/branches')
|
||||
const { ProjectsEmitter } = require('@/modules/core/events/projectsEmitter')
|
||||
const {
|
||||
@@ -45,7 +44,10 @@ const {
|
||||
} = require('@/modules/activitystream/services/streamActivity')
|
||||
const { saveActivityFactory } = require('@/modules/activitystream/repositories')
|
||||
const { publish } = require('@/modules/shared/utils/subscriptions')
|
||||
const { getUsersFactory, getUserFactory } = require('@/modules/core/repositories/users')
|
||||
|
||||
const getUser = getUserFactory({ db })
|
||||
const getUsers = getUsersFactory({ db })
|
||||
const addStreamCreatedActivity = addStreamCreatedActivityFactory({
|
||||
saveActivity: saveActivityFactory({ db }),
|
||||
publish
|
||||
@@ -55,7 +57,7 @@ const createStream = legacyCreateStreamFactory({
|
||||
createStreamReturnRecord: createStreamReturnRecordFactory({
|
||||
inviteUsersToProject: inviteUsersToProjectFactory({
|
||||
createAndSendInvite: createAndSendInviteFactory({
|
||||
findUserByTarget: findUserByTargetFactory(),
|
||||
findUserByTarget: findUserByTargetFactory({ db }),
|
||||
insertInviteAndDeleteOld: insertInviteAndDeleteOldFactory({ db }),
|
||||
collectAndValidateResourceTargets: collectAndValidateCoreTargetsFactory({
|
||||
getStream
|
||||
@@ -67,7 +69,8 @@ const createStream = legacyCreateStreamFactory({
|
||||
getEventBus().emit({
|
||||
eventName,
|
||||
payload
|
||||
})
|
||||
}),
|
||||
getUser
|
||||
}),
|
||||
getUsers
|
||||
}),
|
||||
|
||||
@@ -80,7 +80,6 @@ import {
|
||||
import { collectAndValidateCoreTargetsFactory } from '@/modules/serverinvites/services/coreResourceCollection'
|
||||
import { buildCoreInviteEmailContentsFactory } from '@/modules/serverinvites/services/coreEmailContents'
|
||||
import { getEventBus } from '@/modules/shared/services/eventBus'
|
||||
import { getUser, getUsers } from '@/modules/core/repositories/users'
|
||||
import { ProjectsEmitter } from '@/modules/core/events/projectsEmitter'
|
||||
import {
|
||||
addStreamCreatedActivityFactory,
|
||||
@@ -95,7 +94,10 @@ import {
|
||||
validateStreamAccessFactory
|
||||
} from '@/modules/core/services/streams/access'
|
||||
import { authorizeResolver } from '@/modules/shared'
|
||||
import { getUserFactory, getUsersFactory } from '@/modules/core/repositories/users'
|
||||
|
||||
const getUser = getUserFactory({ db })
|
||||
const getUsers = getUsersFactory({ db })
|
||||
const markCommitStreamUpdated = markCommitStreamUpdatedFactory({ db })
|
||||
const markBranchStreamUpdated = markBranchStreamUpdatedFactory({ db })
|
||||
const getStream = getStreamFactory({ db })
|
||||
@@ -140,7 +142,7 @@ const createStream = legacyCreateStreamFactory({
|
||||
createStreamReturnRecord: createStreamReturnRecordFactory({
|
||||
inviteUsersToProject: inviteUsersToProjectFactory({
|
||||
createAndSendInvite: createAndSendInviteFactory({
|
||||
findUserByTarget: findUserByTargetFactory(),
|
||||
findUserByTarget: findUserByTargetFactory({ db }),
|
||||
insertInviteAndDeleteOld: insertInviteAndDeleteOldFactory({ db }),
|
||||
collectAndValidateResourceTargets: collectAndValidateCoreTargetsFactory({
|
||||
getStream
|
||||
@@ -152,7 +154,8 @@ const createStream = legacyCreateStreamFactory({
|
||||
getEventBus().emit({
|
||||
eventName,
|
||||
payload
|
||||
})
|
||||
}),
|
||||
getUser
|
||||
}),
|
||||
getUsers
|
||||
}),
|
||||
|
||||
@@ -76,7 +76,6 @@ const {
|
||||
buildCoreInviteEmailContentsFactory
|
||||
} = require('@/modules/serverinvites/services/coreEmailContents')
|
||||
const { getEventBus } = require('@/modules/shared/services/eventBus')
|
||||
const { getUsers } = require('@/modules/core/repositories/users')
|
||||
const { ProjectsEmitter } = require('@/modules/core/events/projectsEmitter')
|
||||
const {
|
||||
addStreamCreatedActivityFactory
|
||||
@@ -86,7 +85,9 @@ const { publish } = require('@/modules/shared/utils/subscriptions')
|
||||
const {
|
||||
addCommitCreatedActivityFactory
|
||||
} = require('@/modules/activitystream/services/commitActivity')
|
||||
const { getUsersFactory, getUserFactory } = require('@/modules/core/repositories/users')
|
||||
|
||||
const getUsers = getUsersFactory({ db })
|
||||
const markCommitStreamUpdated = markCommitStreamUpdatedFactory({ db })
|
||||
const getStream = getStreamFactory({ db })
|
||||
const createBranch = createBranchFactory({ db })
|
||||
@@ -122,7 +123,7 @@ const createStream = legacyCreateStreamFactory({
|
||||
createStreamReturnRecord: createStreamReturnRecordFactory({
|
||||
inviteUsersToProject: inviteUsersToProjectFactory({
|
||||
createAndSendInvite: createAndSendInviteFactory({
|
||||
findUserByTarget: findUserByTargetFactory(),
|
||||
findUserByTarget: findUserByTargetFactory({ db }),
|
||||
insertInviteAndDeleteOld: insertInviteAndDeleteOldFactory({ db }),
|
||||
collectAndValidateResourceTargets: collectAndValidateCoreTargetsFactory({
|
||||
getStream
|
||||
@@ -134,7 +135,8 @@ const createStream = legacyCreateStreamFactory({
|
||||
getEventBus().emit({
|
||||
eventName,
|
||||
payload
|
||||
})
|
||||
}),
|
||||
getUser: getUserFactory({ db })
|
||||
}),
|
||||
getUsers
|
||||
}),
|
||||
|
||||
@@ -28,16 +28,18 @@ import {
|
||||
import { collectAndValidateCoreTargetsFactory } from '@/modules/serverinvites/services/coreResourceCollection'
|
||||
import { buildCoreInviteEmailContentsFactory } from '@/modules/serverinvites/services/coreEmailContents'
|
||||
import { getEventBus } from '@/modules/shared/services/eventBus'
|
||||
import { getUsers } from '@/modules/core/repositories/users'
|
||||
import { createBranchFactory } from '@/modules/core/repositories/branches'
|
||||
import { ProjectsEmitter } from '@/modules/core/events/projectsEmitter'
|
||||
import { addStreamCreatedActivityFactory } from '@/modules/activitystream/services/streamActivity'
|
||||
import { saveActivityFactory } from '@/modules/activitystream/repositories'
|
||||
import { publish } from '@/modules/shared/utils/subscriptions'
|
||||
import { getUserFactory, getUsersFactory } from '@/modules/core/repositories/users'
|
||||
|
||||
// To ensure that the invites are created in the correct order, we need to wait a bit between each creation
|
||||
const WAIT_TIMEOUT = 5
|
||||
|
||||
const getUser = getUserFactory({ db })
|
||||
const getUsers = getUsersFactory({ db })
|
||||
const addStreamCreatedActivity = addStreamCreatedActivityFactory({
|
||||
saveActivity: saveActivityFactory({ db }),
|
||||
publish
|
||||
@@ -47,7 +49,7 @@ const createStream = legacyCreateStreamFactory({
|
||||
createStreamReturnRecord: createStreamReturnRecordFactory({
|
||||
inviteUsersToProject: inviteUsersToProjectFactory({
|
||||
createAndSendInvite: createAndSendInviteFactory({
|
||||
findUserByTarget: findUserByTargetFactory(),
|
||||
findUserByTarget: findUserByTargetFactory({ db }),
|
||||
insertInviteAndDeleteOld: insertInviteAndDeleteOldFactory({ db }),
|
||||
collectAndValidateResourceTargets: collectAndValidateCoreTargetsFactory({
|
||||
getStream
|
||||
@@ -59,7 +61,8 @@ const createStream = legacyCreateStreamFactory({
|
||||
getEventBus().emit({
|
||||
eventName,
|
||||
payload
|
||||
})
|
||||
}),
|
||||
getUser
|
||||
}),
|
||||
getUsers
|
||||
}),
|
||||
|
||||
@@ -30,12 +30,13 @@ import {
|
||||
} from '@/modules/serverinvites/repositories/serverInvites'
|
||||
import { buildApolloServer } from '@/app'
|
||||
import { requestNewEmailVerificationFactory } from '@/modules/emails/services/verification/request'
|
||||
import { getUser } from '@/modules/core/repositories/users'
|
||||
import { getServerInfo } from '@/modules/core/services/generic'
|
||||
import { deleteOldAndInsertNewVerificationFactory } from '@/modules/emails/repositories'
|
||||
import { renderEmail } from '@/modules/emails/services/emailRendering'
|
||||
import { sendEmail } from '@/modules/emails/services/sending'
|
||||
import { getUserFactory } from '@/modules/core/repositories/users'
|
||||
|
||||
const getUser = getUserFactory({ db })
|
||||
const requestNewEmailVerification = requestNewEmailVerificationFactory({
|
||||
findEmail: findEmailFactory({ db }),
|
||||
getUser,
|
||||
|
||||
@@ -51,7 +51,11 @@ import {
|
||||
markCommitStreamUpdatedFactory,
|
||||
markOnboardingBaseStreamFactory
|
||||
} from '@/modules/core/repositories/streams'
|
||||
import { getFirstAdmin, getUser, getUsers } from '@/modules/core/repositories/users'
|
||||
import {
|
||||
getFirstAdmin,
|
||||
getUserFactory,
|
||||
getUsersFactory
|
||||
} from '@/modules/core/repositories/users'
|
||||
import { createBranchAndNotifyFactory } from '@/modules/core/services/branch/management'
|
||||
import { createCommitByBranchIdFactory } from '@/modules/core/services/commit/management'
|
||||
import {
|
||||
@@ -82,6 +86,8 @@ const crossServerSyncModule: SpeckleModule = {
|
||||
finalize() {
|
||||
crossServerSyncLogger.info('⬇️ Ensuring base onboarding stream asynchronously...')
|
||||
|
||||
const getUser = getUserFactory({ db })
|
||||
const getUsers = getUsersFactory({ db })
|
||||
const markOnboardingBaseStream = markOnboardingBaseStreamFactory({ db })
|
||||
const markCommitStreamUpdated = markCommitStreamUpdatedFactory({ db })
|
||||
const getStream = getStreamFactory({ db })
|
||||
@@ -139,7 +145,7 @@ const crossServerSyncModule: SpeckleModule = {
|
||||
const createStreamReturnRecord = createStreamReturnRecordFactory({
|
||||
inviteUsersToProject: inviteUsersToProjectFactory({
|
||||
createAndSendInvite: createAndSendInviteFactory({
|
||||
findUserByTarget: findUserByTargetFactory(),
|
||||
findUserByTarget: findUserByTargetFactory({ db }),
|
||||
insertInviteAndDeleteOld: insertInviteAndDeleteOldFactory({ db }),
|
||||
collectAndValidateResourceTargets: collectAndValidateCoreTargetsFactory({
|
||||
getStream
|
||||
@@ -151,7 +157,8 @@ const crossServerSyncModule: SpeckleModule = {
|
||||
getEventBus().emit({
|
||||
eventName,
|
||||
payload
|
||||
})
|
||||
}),
|
||||
getUser
|
||||
}),
|
||||
getUsers
|
||||
}),
|
||||
|
||||
@@ -7,7 +7,6 @@ import { createObject } from '@/modules/core/services/objects'
|
||||
import ObjectLoader from '@speckle/objectloader'
|
||||
import { noop } from 'lodash'
|
||||
import { crossServerSyncLogger } from '@/logging/logging'
|
||||
import { getUser } from '@/modules/core/repositories/users'
|
||||
import type { SpeckleViewer } from '@speckle/shared'
|
||||
import { retry } from '@speckle/shared'
|
||||
import {
|
||||
@@ -34,6 +33,7 @@ import {
|
||||
GetStream,
|
||||
GetStreamCollaborators
|
||||
} from '@/modules/core/domain/streams/operations'
|
||||
import { GetUser } from '@/modules/core/domain/users/operations'
|
||||
|
||||
type LocalResources = Awaited<ReturnType<ReturnType<typeof getLocalResourcesFactory>>>
|
||||
type LocalResourcesWithCommit = LocalResources & { newCommitId: string }
|
||||
@@ -224,7 +224,7 @@ type GetLocalResourcesDeps = {
|
||||
getStream: GetStream
|
||||
getStreamBranchByName: GetStreamBranchByName
|
||||
getStreamCollaborators: GetStreamCollaborators
|
||||
getUser: typeof getUser
|
||||
getUser: GetUser
|
||||
}
|
||||
|
||||
const getLocalResourcesFactory =
|
||||
|
||||
@@ -1,5 +1,4 @@
|
||||
import { crossServerSyncLogger, Logger } from '@/logging/logging'
|
||||
import { getUser } from '@/modules/core/repositories/users'
|
||||
import { CrossServerProjectSyncError } from '@/modules/cross-server-sync/errors'
|
||||
import {
|
||||
createApolloClient,
|
||||
@@ -19,6 +18,7 @@ import {
|
||||
GetStreamBranchByName
|
||||
} from '@/modules/core/domain/branches/operations'
|
||||
import { CreateStream } from '@/modules/core/domain/streams/operations'
|
||||
import { GetUser } from '@/modules/core/domain/users/operations'
|
||||
|
||||
type ProjectMetadata = Awaited<ReturnType<typeof getProjectMetadata>>
|
||||
|
||||
@@ -48,7 +48,7 @@ const projectMetadataQuery = gql`
|
||||
`
|
||||
|
||||
type GetLocalResourcesDeps = {
|
||||
getUser: typeof getUser
|
||||
getUser: GetUser
|
||||
}
|
||||
|
||||
const getLocalResourcesFactory =
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
import { db } from '@/db/knex'
|
||||
import { Resolvers } from '@/modules/core/graph/generated/graphql'
|
||||
import { findPrimaryEmailForUserFactory } from '@/modules/core/repositories/userEmails'
|
||||
import { getUser, getUserByEmail } from '@/modules/core/repositories/users'
|
||||
import { getUserByEmail, getUserFactory } from '@/modules/core/repositories/users'
|
||||
import { getServerInfo } from '@/modules/core/services/generic'
|
||||
import {
|
||||
deleteOldAndInsertNewVerificationFactory,
|
||||
@@ -11,6 +11,7 @@ import { renderEmail } from '@/modules/emails/services/emailRendering'
|
||||
import { sendEmail } from '@/modules/emails/services/sending'
|
||||
import { requestEmailVerificationFactory } from '@/modules/emails/services/verification/request'
|
||||
|
||||
const getUser = getUserFactory({ db })
|
||||
const requestEmailVerification = requestEmailVerificationFactory({
|
||||
getUser,
|
||||
getServerInfo,
|
||||
|
||||
@@ -3,7 +3,7 @@ import { db } from '@/db/knex'
|
||||
import { moduleLogger } from '@/logging/logging'
|
||||
import { UsersEmitter } from '@/modules/core/events/usersEmitter'
|
||||
import { findPrimaryEmailForUserFactory } from '@/modules/core/repositories/userEmails'
|
||||
import { getUser } from '@/modules/core/repositories/users'
|
||||
import { getUserFactory } from '@/modules/core/repositories/users'
|
||||
import { getServerInfo } from '@/modules/core/services/generic'
|
||||
import { deleteOldAndInsertNewVerificationFactory } from '@/modules/emails/repositories'
|
||||
import { renderEmail } from '@/modules/emails/services/emailRendering'
|
||||
@@ -29,6 +29,7 @@ const emailsModule: SpeckleModule = {
|
||||
|
||||
// init event listeners
|
||||
if (isInitial) {
|
||||
const getUser = getUserFactory({ db })
|
||||
const initializeVerificationOnRegistration =
|
||||
initializeVerificationOnRegistrationFactory({
|
||||
userEmitterListener: UsersEmitter.listen,
|
||||
|
||||
@@ -6,7 +6,6 @@ import { UserEmail } from '@/modules/core/domain/userEmails/types'
|
||||
import { UsersEmitter, UsersEvents } from '@/modules/core/events/usersEmitter'
|
||||
import { getEmailVerificationFinalizationRoute } from '@/modules/core/helpers/routeHelper'
|
||||
import { ServerInfo, UserRecord } from '@/modules/core/helpers/types'
|
||||
import { getUser } from '@/modules/core/repositories/users'
|
||||
import { getServerInfo } from '@/modules/core/services/generic'
|
||||
import { EmailVerificationRequestError } from '@/modules/emails/errors'
|
||||
import {
|
||||
@@ -20,11 +19,12 @@ import {
|
||||
RequestEmailVerification,
|
||||
RequestNewEmailVerification
|
||||
} from '@/modules/emails/domain/operations'
|
||||
import { GetUser } from '@/modules/core/domain/users/operations'
|
||||
|
||||
const EMAIL_SUBJECT = 'Speckle Account E-mail Verification'
|
||||
|
||||
type CreateNewVerificationDeps = {
|
||||
getUser: typeof getUser
|
||||
getUser: GetUser
|
||||
findPrimaryEmailForUser: FindPrimaryEmailForUser
|
||||
getServerInfo: typeof getServerInfo
|
||||
deleteOldAndInsertNewVerification: DeleteOldAndInsertNewVerification
|
||||
@@ -69,7 +69,7 @@ type VerificationRequestContext = {
|
||||
|
||||
type CreateNewEmailVerificationFactoryDeps = {
|
||||
findEmail: FindEmail
|
||||
getUser: typeof getUser
|
||||
getUser: GetUser
|
||||
getServerInfo: typeof getServerInfo
|
||||
deleteOldAndInsertNewVerification: DeleteOldAndInsertNewVerification
|
||||
}
|
||||
|
||||
@@ -14,7 +14,6 @@ import {
|
||||
} from '@/test/graphql/users'
|
||||
import { getEmailVerificationFinalizationRoute } from '@/modules/core/helpers/routeHelper'
|
||||
import { Express } from 'express'
|
||||
import { getUser } from '@/modules/core/repositories/users'
|
||||
import dayjs from 'dayjs'
|
||||
import { EmailSendingServiceMock } from '@/test/mocks/global'
|
||||
import {
|
||||
@@ -29,8 +28,10 @@ import { getServerInfo } from '@/modules/core/services/generic'
|
||||
import { findPrimaryEmailForUserFactory } from '@/modules/core/repositories/userEmails'
|
||||
import { sendEmail } from '@/modules/emails/services/sending'
|
||||
import { renderEmail } from '@/modules/emails/services/emailRendering'
|
||||
import { getUserFactory } from '@/modules/core/repositories/users'
|
||||
|
||||
const mailerMock = EmailSendingServiceMock
|
||||
const getUser = getUserFactory({ db })
|
||||
const getPendingToken = getPendingTokenFactory({ db })
|
||||
const deleteVerifications = deleteVerificationsFactory({ db })
|
||||
const requestEmailVerification = requestEmailVerificationFactory({
|
||||
|
||||
@@ -29,13 +29,15 @@ import {
|
||||
import { collectAndValidateCoreTargetsFactory } from '@/modules/serverinvites/services/coreResourceCollection'
|
||||
import { buildCoreInviteEmailContentsFactory } from '@/modules/serverinvites/services/coreEmailContents'
|
||||
import { getEventBus } from '@/modules/shared/services/eventBus'
|
||||
import { getUsers } from '@/modules/core/repositories/users'
|
||||
import { createBranchFactory } from '@/modules/core/repositories/branches'
|
||||
import { ProjectsEmitter } from '@/modules/core/events/projectsEmitter'
|
||||
import { addStreamCreatedActivityFactory } from '@/modules/activitystream/services/streamActivity'
|
||||
import { saveActivityFactory } from '@/modules/activitystream/repositories'
|
||||
import { publish } from '@/modules/shared/utils/subscriptions'
|
||||
import { getUserFactory, getUsersFactory } from '@/modules/core/repositories/users'
|
||||
|
||||
const getUser = getUserFactory({ db })
|
||||
const getUsers = getUsersFactory({ db })
|
||||
const addStreamCreatedActivity = addStreamCreatedActivityFactory({
|
||||
saveActivity: saveActivityFactory({ db }),
|
||||
publish
|
||||
@@ -45,7 +47,7 @@ const createStream = legacyCreateStreamFactory({
|
||||
createStreamReturnRecord: createStreamReturnRecordFactory({
|
||||
inviteUsersToProject: inviteUsersToProjectFactory({
|
||||
createAndSendInvite: createAndSendInviteFactory({
|
||||
findUserByTarget: findUserByTargetFactory(),
|
||||
findUserByTarget: findUserByTargetFactory({ db }),
|
||||
insertInviteAndDeleteOld: insertInviteAndDeleteOldFactory({ db }),
|
||||
collectAndValidateResourceTargets: collectAndValidateCoreTargetsFactory({
|
||||
getStream
|
||||
@@ -57,7 +59,8 @@ const createStream = legacyCreateStreamFactory({
|
||||
getEventBus().emit({
|
||||
eventName,
|
||||
payload
|
||||
})
|
||||
}),
|
||||
getUser
|
||||
}),
|
||||
getUsers
|
||||
}),
|
||||
|
||||
@@ -32,6 +32,7 @@ import {
|
||||
import { createActivitySummaryFactory } from '@/modules/activitystream/services/summary'
|
||||
import { getActivityFactory } from '@/modules/activitystream/repositories'
|
||||
import { getStreamFactory } from '@/modules/core/repositories/streams'
|
||||
import { getUserFactory } from '@/modules/core/repositories/users'
|
||||
|
||||
const digestNotificationEmailHandlerFactory =
|
||||
(
|
||||
@@ -437,7 +438,8 @@ const digestNotificationEmailHandler = digestNotificationEmailHandlerFactory({
|
||||
}),
|
||||
createActivitySummary: createActivitySummaryFactory({
|
||||
getStream: getStreamFactory({ db }),
|
||||
getActivity: getActivityFactory({ db })
|
||||
getActivity: getActivityFactory({ db }),
|
||||
getUser: getUserFactory({ db })
|
||||
}),
|
||||
getServerInfo,
|
||||
renderEmail
|
||||
|
||||
@@ -4,11 +4,12 @@ import { ExtendedComment } from '@/modules/comments/domain/types'
|
||||
import { getCommentFactory } from '@/modules/comments/repositories/comments'
|
||||
import { GetStream } from '@/modules/core/domain/streams/operations'
|
||||
import { StreamWithOptionalRole } from '@/modules/core/domain/streams/types'
|
||||
import { GetUser } from '@/modules/core/domain/users/operations'
|
||||
import { Roles } from '@/modules/core/helpers/mainConstants'
|
||||
import { getCommentRoute } from '@/modules/core/helpers/routeHelper'
|
||||
import { ServerInfo } from '@/modules/core/helpers/types'
|
||||
import { getStreamFactory } from '@/modules/core/repositories/streams'
|
||||
import { getUser, UserWithOptionalRole } from '@/modules/core/repositories/users'
|
||||
import { getUserFactory, UserWithOptionalRole } from '@/modules/core/repositories/users'
|
||||
import { getServerInfo } from '@/modules/core/services/generic'
|
||||
import {
|
||||
EmailTemplateParams,
|
||||
@@ -164,7 +165,7 @@ function buildEmailTemplateParams(
|
||||
*/
|
||||
const mentionedInCommentHandlerFactory =
|
||||
(deps: {
|
||||
getUser: typeof getUser
|
||||
getUser: GetUser
|
||||
getStream: GetStream
|
||||
getComment: GetComment
|
||||
getServerInfo: typeof getServerInfo
|
||||
@@ -221,7 +222,7 @@ const mentionedInCommentHandlerFactory =
|
||||
*/
|
||||
const handler: NotificationHandler<MentionedInCommentMessage> = async (...args) => {
|
||||
const mentionedInCommentHandler = mentionedInCommentHandlerFactory({
|
||||
getUser,
|
||||
getUser: getUserFactory({ db }),
|
||||
getStream: getStreamFactory({ db }),
|
||||
getComment: getCommentFactory({ db }),
|
||||
getServerInfo,
|
||||
|
||||
@@ -2,7 +2,6 @@ import {
|
||||
AccessRequestType,
|
||||
getPendingAccessRequestFactory
|
||||
} from '@/modules/accessrequests/repositories'
|
||||
import { getUser } from '@/modules/core/repositories/users'
|
||||
import {
|
||||
NewStreamAccessRequestMessage,
|
||||
NotificationHandler
|
||||
@@ -23,10 +22,12 @@ import { db } from '@/db/knex'
|
||||
import { GetPendingAccessRequest } from '@/modules/accessrequests/domain/operations'
|
||||
import { GetStream } from '@/modules/core/domain/streams/operations'
|
||||
import { getStreamFactory } from '@/modules/core/repositories/streams'
|
||||
import { GetUser } from '@/modules/core/domain/users/operations'
|
||||
import { getUserFactory } from '@/modules/core/repositories/users'
|
||||
|
||||
type ValidateMessageDeps = {
|
||||
getPendingAccessRequest: GetPendingAccessRequest
|
||||
getUser: typeof getUser
|
||||
getUser: GetUser
|
||||
getStream: GetStream
|
||||
}
|
||||
|
||||
@@ -150,7 +151,7 @@ const handler: NotificationHandler<NewStreamAccessRequestMessage> = (...args) =>
|
||||
getServerInfo,
|
||||
renderEmail,
|
||||
sendEmail,
|
||||
getUser,
|
||||
getUser: getUserFactory({ db }),
|
||||
getStream: getStreamFactory({ db }),
|
||||
getPendingAccessRequest: getPendingAccessRequestFactory({ db })
|
||||
})
|
||||
|
||||
+4
-3
@@ -1,11 +1,12 @@
|
||||
import { db } from '@/db/knex'
|
||||
import { GetStream } from '@/modules/core/domain/streams/operations'
|
||||
import { GetUser } from '@/modules/core/domain/users/operations'
|
||||
import {
|
||||
buildAbsoluteFrontendUrlFromPath,
|
||||
getStreamRoute
|
||||
} from '@/modules/core/helpers/routeHelper'
|
||||
import { getStreamFactory } from '@/modules/core/repositories/streams'
|
||||
import { getUser } from '@/modules/core/repositories/users'
|
||||
import { getUserFactory } from '@/modules/core/repositories/users'
|
||||
import { getServerInfo } from '@/modules/core/services/generic'
|
||||
import {
|
||||
EmailTemplateParams,
|
||||
@@ -19,7 +20,7 @@ import {
|
||||
} from '@/modules/notifications/helpers/types'
|
||||
|
||||
type ValidateMessageDeps = {
|
||||
getUser: typeof getUser
|
||||
getUser: GetUser
|
||||
getStream: GetStream
|
||||
}
|
||||
|
||||
@@ -130,7 +131,7 @@ const handler: NotificationHandler<StreamAccessRequestApprovedMessage> = async (
|
||||
getServerInfo,
|
||||
renderEmail,
|
||||
sendEmail,
|
||||
getUser,
|
||||
getUser: getUserFactory({ db }),
|
||||
getStream: getStreamFactory({ db })
|
||||
})
|
||||
return streamAccessRequestApprovedHandler(...args)
|
||||
|
||||
@@ -41,7 +41,6 @@ import {
|
||||
getUserPendingProjectInvitesFactory,
|
||||
useProjectInviteAndNotifyFactory
|
||||
} from '@/modules/serverinvites/services/projectInviteManagement'
|
||||
import { getUser, getUsers } from '@/modules/core/repositories/users'
|
||||
import { collectAndValidateCoreTargetsFactory } from '@/modules/serverinvites/services/coreResourceCollection'
|
||||
import { buildCoreInviteEmailContentsFactory } from '@/modules/serverinvites/services/coreEmailContents'
|
||||
import { getEventBus } from '@/modules/shared/services/eventBus'
|
||||
@@ -83,10 +82,13 @@ import {
|
||||
addOrUpdateStreamCollaboratorFactory,
|
||||
validateStreamAccessFactory
|
||||
} from '@/modules/core/services/streams/access'
|
||||
import { getUserFactory, getUsersFactory } from '@/modules/core/repositories/users'
|
||||
|
||||
const saveActivity = saveActivityFactory({ db })
|
||||
const validateStreamAccess = validateStreamAccessFactory({ authorizeResolver })
|
||||
|
||||
const getUser = getUserFactory({ db })
|
||||
const getUsers = getUsersFactory({ db })
|
||||
const addOrUpdateStreamCollaborator = addOrUpdateStreamCollaboratorFactory({
|
||||
validateStreamAccess,
|
||||
getUser,
|
||||
@@ -117,7 +119,7 @@ const buildCollectAndValidateResourceTargets = () =>
|
||||
|
||||
const buildCreateAndSendServerOrProjectInvite = () =>
|
||||
createAndSendInviteFactory({
|
||||
findUserByTarget: findUserByTargetFactory(),
|
||||
findUserByTarget: findUserByTargetFactory({ db }),
|
||||
insertInviteAndDeleteOld: insertInviteAndDeleteOldFactory({ db }),
|
||||
collectAndValidateResourceTargets: buildCollectAndValidateResourceTargets(),
|
||||
buildInviteEmailContents: buildCoreInviteEmailContentsFactory({
|
||||
@@ -127,7 +129,8 @@ const buildCreateAndSendServerOrProjectInvite = () =>
|
||||
getEventBus().emit({
|
||||
eventName,
|
||||
payload
|
||||
})
|
||||
}),
|
||||
getUser
|
||||
})
|
||||
|
||||
export = {
|
||||
@@ -377,9 +380,10 @@ export = {
|
||||
buildInviteEmailContents: buildCoreInviteEmailContentsFactory({
|
||||
getStream
|
||||
}),
|
||||
findUserByTarget: findUserByTargetFactory(),
|
||||
findUserByTarget: findUserByTargetFactory({ db }),
|
||||
findInvite: findInviteFactory({ db }),
|
||||
markInviteUpdated: markInviteUpdatedfactory({ db })
|
||||
markInviteUpdated: markInviteUpdatedfactory({ db }),
|
||||
getUser
|
||||
})
|
||||
|
||||
await resendInviteEmail({ inviteId })
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
import { knex, ServerInvites, Streams, Users } from '@/modules/core/dbSchema'
|
||||
import {
|
||||
getUserByEmail,
|
||||
getUser,
|
||||
getUserFactory,
|
||||
UserWithOptionalRole
|
||||
} from '@/modules/core/repositories/users'
|
||||
import { resolveTarget, buildUserTarget } from '@/modules/serverinvites/helpers/core'
|
||||
@@ -127,12 +127,12 @@ export const filterByResource = <Q extends Knex.QueryBuilder>(
|
||||
* Try to find a user using the target value
|
||||
*/
|
||||
export const findUserByTargetFactory =
|
||||
() =>
|
||||
(deps: { db: Knex }) =>
|
||||
(target: string): Promise<UserWithOptionalRole | null> => {
|
||||
const { userEmail, userId } = resolveTarget(target)
|
||||
return userEmail
|
||||
? getUserByEmail(userEmail, { withRole: true })
|
||||
: getUser(userId!, { withRole: true })
|
||||
: getUserFactory(deps)(userId!, { withRole: true })
|
||||
}
|
||||
|
||||
/**
|
||||
|
||||
@@ -8,7 +8,7 @@ import {
|
||||
buildUserTarget,
|
||||
ResolvedTargetData
|
||||
} from '@/modules/serverinvites/helpers/core'
|
||||
import { getUser, UserWithOptionalRole } from '@/modules/core/repositories/users'
|
||||
import { UserWithOptionalRole } from '@/modules/core/repositories/users'
|
||||
import {
|
||||
FindInvite,
|
||||
FindUserByTarget,
|
||||
@@ -31,6 +31,7 @@ import {
|
||||
} from '@/modules/serverinvites/domain/types'
|
||||
import { ServerInfo } from '@/modules/core/helpers/types'
|
||||
import { EventBusEmit } from '@/modules/shared/services/eventBus'
|
||||
import { GetUser } from '@/modules/core/domain/users/operations'
|
||||
|
||||
const getFinalTargetData = (
|
||||
target: string,
|
||||
@@ -88,13 +89,15 @@ export const createAndSendInviteFactory =
|
||||
insertInviteAndDeleteOld,
|
||||
collectAndValidateResourceTargets,
|
||||
buildInviteEmailContents,
|
||||
emitEvent
|
||||
emitEvent,
|
||||
getUser
|
||||
}: {
|
||||
findUserByTarget: FindUserByTarget
|
||||
insertInviteAndDeleteOld: InsertInviteAndDeleteOld
|
||||
collectAndValidateResourceTargets: CollectAndValidateResourceTargets
|
||||
buildInviteEmailContents: BuildInviteEmailContents
|
||||
emitEvent: EventBusEmit
|
||||
getUser: GetUser
|
||||
}): CreateAndSendInvite =>
|
||||
async (params, inviterResourceAccessLimits?) => {
|
||||
const sendInviteEmail = sendInviteEmailFactory({ buildInviteEmailContents })
|
||||
@@ -190,12 +193,14 @@ export const resendInviteEmailFactory =
|
||||
buildInviteEmailContents,
|
||||
findUserByTarget,
|
||||
findInvite,
|
||||
markInviteUpdated
|
||||
markInviteUpdated,
|
||||
getUser
|
||||
}: {
|
||||
buildInviteEmailContents: BuildInviteEmailContents
|
||||
findUserByTarget: FindUserByTarget
|
||||
findInvite: FindInvite
|
||||
markInviteUpdated: MarkInviteUpdated
|
||||
getUser: GetUser
|
||||
}): ResendInviteEmail =>
|
||||
async (params) => {
|
||||
const sendInviteEmail = sendInviteEmailFactory({ buildInviteEmailContents })
|
||||
|
||||
@@ -45,15 +45,15 @@ import {
|
||||
FindEmail,
|
||||
ValidateAndCreateUserEmail
|
||||
} from '@/modules/core/domain/userEmails/operations'
|
||||
import { getUser } from '@/modules/core/repositories/users'
|
||||
import { ServerInfo } from '@/modules/core/helpers/types'
|
||||
import { getServerInfo } from '@/modules/core/services/generic'
|
||||
import { GetUser } from '@/modules/core/domain/users/operations'
|
||||
|
||||
/**
|
||||
* Convert the initial validation function to a finalization validation function so same logic can be reused
|
||||
*/
|
||||
export const convertToFinalizationValidation = (params: {
|
||||
getUser: typeof getUser
|
||||
getUser: GetUser
|
||||
initialValidation: CollectAndValidateResourceTargets
|
||||
serverInfo: ServerInfo
|
||||
}): ValidateResourceInviteBeforeFinalization => {
|
||||
@@ -196,7 +196,7 @@ type FinalizeResourceInviteFactoryDeps = {
|
||||
validateAndCreateUserEmail: ValidateAndCreateUserEmail
|
||||
collectAndValidateResourceTargets: CollectAndValidateResourceTargets
|
||||
getServerInfo: typeof getServerInfo
|
||||
getUser: typeof getUser
|
||||
getUser: GetUser
|
||||
}
|
||||
|
||||
export const finalizeResourceInviteFactory =
|
||||
|
||||
@@ -1,5 +1,6 @@
|
||||
import { GetStream } from '@/modules/core/domain/streams/operations'
|
||||
import { TokenResourceIdentifier } from '@/modules/core/domain/tokens/types'
|
||||
import { GetUser, GetUsers } from '@/modules/core/domain/users/operations'
|
||||
import {
|
||||
MutationStreamInviteUseArgs,
|
||||
ProjectInviteCreateInput,
|
||||
@@ -9,7 +10,6 @@ import {
|
||||
import { ContextResourceAccessRules } from '@/modules/core/helpers/token'
|
||||
import { LimitedUserRecord } from '@/modules/core/helpers/types'
|
||||
import { removePrivateFields } from '@/modules/core/helpers/userHelper'
|
||||
import { getUser, getUsers } from '@/modules/core/repositories/users'
|
||||
import {
|
||||
ProjectInviteResourceType,
|
||||
ServerInviteResourceType
|
||||
@@ -151,7 +151,7 @@ export const useProjectInviteAndNotifyFactory =
|
||||
* Invite users to be contributors for the specified project
|
||||
*/
|
||||
export const inviteUsersToProjectFactory =
|
||||
(deps: { createAndSendInvite: CreateAndSendInvite; getUsers: typeof getUsers }) =>
|
||||
(deps: { createAndSendInvite: CreateAndSendInvite; getUsers: GetUsers }) =>
|
||||
async (
|
||||
inviterId: string,
|
||||
streamId: string,
|
||||
@@ -207,10 +207,7 @@ function buildPendingStreamCollaboratorModel(
|
||||
* Get all pending invitations to projects that this user has
|
||||
*/
|
||||
export const getUserPendingProjectInvitesFactory =
|
||||
(deps: {
|
||||
getUserResourceInvites: QueryAllUserResourceInvites
|
||||
getUser: typeof getUser
|
||||
}) =>
|
||||
(deps: { getUserResourceInvites: QueryAllUserResourceInvites; getUser: GetUser }) =>
|
||||
async (userId: string): Promise<PendingStreamCollaboratorGraphQLReturn[]> => {
|
||||
if (!userId) return []
|
||||
|
||||
@@ -234,7 +231,7 @@ export const getUserPendingProjectInvitesFactory =
|
||||
* Either the user ID or invite ID must be set
|
||||
*/
|
||||
export const getUserPendingProjectInviteFactory =
|
||||
(deps: { findInvite: FindInvite; getUser: typeof getUser }) =>
|
||||
(deps: { findInvite: FindInvite; getUser: GetUser }) =>
|
||||
async (
|
||||
projectId: string,
|
||||
userId: MaybeNullOrUndefined<string>,
|
||||
|
||||
@@ -1,16 +1,16 @@
|
||||
import { ServerInviteGraphQLReturnType } from '@/modules/core/helpers/graphTypes'
|
||||
import { getUsers } from '@/modules/core/repositories/users'
|
||||
import { resolveTarget } from '@/modules/serverinvites/helpers/core'
|
||||
import { Nullable } from '@speckle/shared'
|
||||
import { keyBy, uniq } from 'lodash'
|
||||
import { FindServerInvite } from '@/modules/serverinvites/domain/operations'
|
||||
import { GetInvitationTargetUsers } from '@/modules/serverinvites/services/operations'
|
||||
import { GetUsers } from '@/modules/core/domain/users/operations'
|
||||
|
||||
/**
|
||||
* Get all registered invitation target users keyed by their ID
|
||||
*/
|
||||
export const getInvitationTargetUsersFactory =
|
||||
(deps: { getUsers: typeof getUsers }): GetInvitationTargetUsers =>
|
||||
(deps: { getUsers: GetUsers }): GetInvitationTargetUsers =>
|
||||
async ({ invites }) => {
|
||||
const userIds = uniq(
|
||||
invites
|
||||
|
||||
@@ -16,7 +16,6 @@ import {
|
||||
MaybeNullOrUndefined,
|
||||
Nullable
|
||||
} from '@/modules/shared/helpers/typeHelper'
|
||||
import { getUser } from '@/modules/core/repositories/users'
|
||||
import { Optional, wait } from '@speckle/shared'
|
||||
import { mixpanel } from '@/modules/shared/utils/mixpanel'
|
||||
import * as Observability from '@speckle/shared/dist/commonjs/observability/index.js'
|
||||
@@ -27,6 +26,7 @@ import { Merge } from 'type-fest'
|
||||
import { resourceAccessRuleToIdentifier } from '@/modules/core/helpers/token'
|
||||
import { delayGraphqlResponsesBy } from '@/modules/shared/helpers/envHelper'
|
||||
import { subscriptionLogger } from '@/logging/logging'
|
||||
import { GetUser } from '@/modules/core/domain/users/operations'
|
||||
|
||||
export const authMiddlewareCreator = (steps: AuthPipelineFunction[]) => {
|
||||
const pipeline = authPipelineCreator(steps)
|
||||
@@ -189,7 +189,7 @@ export async function buildContext({
|
||||
* Adds a .mixpanel helper onto the req object that is already pre-identified with the active user's identity
|
||||
*/
|
||||
export const mixpanelTrackerHelperMiddlewareFactory =
|
||||
(deps: { getUser: typeof getUser }): Handler =>
|
||||
(deps: { getUser: GetUser }): Handler =>
|
||||
async (req: Request, _res: Response, next: NextFunction) => {
|
||||
const ctx = req.context
|
||||
const user = ctx.userId ? await deps.getUser(ctx.userId) : null
|
||||
|
||||
@@ -55,13 +55,14 @@ import {
|
||||
import { collectAndValidateCoreTargetsFactory } from '@/modules/serverinvites/services/coreResourceCollection'
|
||||
import { buildCoreInviteEmailContentsFactory } from '@/modules/serverinvites/services/coreEmailContents'
|
||||
import { getEventBus } from '@/modules/shared/services/eventBus'
|
||||
import { getUsers } from '@/modules/core/repositories/users'
|
||||
import { ProjectsEmitter } from '@/modules/core/events/projectsEmitter'
|
||||
import { addStreamCreatedActivityFactory } from '@/modules/activitystream/services/streamActivity'
|
||||
import { saveActivityFactory } from '@/modules/activitystream/repositories'
|
||||
import { publish } from '@/modules/shared/utils/subscriptions'
|
||||
import { addCommitCreatedActivityFactory } from '@/modules/activitystream/services/commitActivity'
|
||||
import { getUserFactory, getUsersFactory } from '@/modules/core/repositories/users'
|
||||
|
||||
const getUsers = getUsersFactory({ db })
|
||||
const markCommitStreamUpdated = markCommitStreamUpdatedFactory({ db })
|
||||
const getObject = getObjectFactory({ db })
|
||||
const createCommitByBranchId = createCommitByBranchIdFactory({
|
||||
@@ -94,7 +95,7 @@ const createStream = legacyCreateStreamFactory({
|
||||
createStreamReturnRecord: createStreamReturnRecordFactory({
|
||||
inviteUsersToProject: inviteUsersToProjectFactory({
|
||||
createAndSendInvite: createAndSendInviteFactory({
|
||||
findUserByTarget: findUserByTargetFactory(),
|
||||
findUserByTarget: findUserByTargetFactory({ db }),
|
||||
insertInviteAndDeleteOld: insertInviteAndDeleteOldFactory({ db }),
|
||||
collectAndValidateResourceTargets: collectAndValidateCoreTargetsFactory({
|
||||
getStream
|
||||
@@ -106,7 +107,8 @@ const createStream = legacyCreateStreamFactory({
|
||||
getEventBus().emit({
|
||||
eventName,
|
||||
payload
|
||||
})
|
||||
}),
|
||||
getUser: getUserFactory({ db })
|
||||
}),
|
||||
getUsers
|
||||
}),
|
||||
|
||||
@@ -12,13 +12,11 @@ import { Webhook } from '@/modules/webhooks/domain/types'
|
||||
import { SetValuesNullable } from '@speckle/shared'
|
||||
import crs from 'crypto-random-string'
|
||||
import { StreamWithOptionalRole } from '@/modules/core/repositories/streams'
|
||||
import {
|
||||
getUser as getUserFn,
|
||||
UserWithOptionalRole
|
||||
} from '@/modules/core/repositories/users'
|
||||
import { Knex } from 'knex'
|
||||
import { ServerInfo } from '@/modules/core/helpers/types'
|
||||
import { GetStream } from '@/modules/core/domain/streams/operations'
|
||||
import { UserWithOptionalRole } from '@/modules/core/domain/users/types'
|
||||
import { GetUser } from '@/modules/core/domain/users/operations'
|
||||
|
||||
const MAX_STREAM_WEBHOOKS = 100
|
||||
|
||||
@@ -110,7 +108,7 @@ export const dispatchStreamEventFactory =
|
||||
getServerInfo: typeof getServerInfoFn
|
||||
getStream: GetStream
|
||||
createWebhookEvent: CreateWebhookEvent
|
||||
getUser: typeof getUserFn
|
||||
getUser: GetUser
|
||||
}) =>
|
||||
async ({
|
||||
streamId,
|
||||
|
||||
@@ -11,7 +11,7 @@ import {
|
||||
createStreamFactory,
|
||||
getStreamFactory
|
||||
} from '@/modules/core/repositories/streams'
|
||||
import { getUsers } from '@/modules/core/repositories/users'
|
||||
import { getUserFactory, getUsersFactory } from '@/modules/core/repositories/users'
|
||||
import {
|
||||
createStreamReturnRecordFactory,
|
||||
legacyCreateStreamFactory
|
||||
@@ -38,6 +38,8 @@ const WEBHOOKS_EVENTS_TABLE = 'webhooks_events'
|
||||
const WebhooksConfig = () => knex(WEBHOOKS_CONFIG_TABLE)
|
||||
const randomId = () => crs({ length: 10 })
|
||||
|
||||
const getUsers = getUsersFactory({ db })
|
||||
const getUser = getUserFactory({ db })
|
||||
const addStreamCreatedActivity = addStreamCreatedActivityFactory({
|
||||
saveActivity: saveActivityFactory({ db }),
|
||||
publish
|
||||
@@ -47,7 +49,7 @@ const createStream = legacyCreateStreamFactory({
|
||||
createStreamReturnRecord: createStreamReturnRecordFactory({
|
||||
inviteUsersToProject: inviteUsersToProjectFactory({
|
||||
createAndSendInvite: createAndSendInviteFactory({
|
||||
findUserByTarget: findUserByTargetFactory(),
|
||||
findUserByTarget: findUserByTargetFactory({ db }),
|
||||
insertInviteAndDeleteOld: insertInviteAndDeleteOldFactory({ db }),
|
||||
collectAndValidateResourceTargets: collectAndValidateCoreTargetsFactory({
|
||||
getStream
|
||||
@@ -59,7 +61,8 @@ const createStream = legacyCreateStreamFactory({
|
||||
getEventBus().emit({
|
||||
eventName,
|
||||
payload
|
||||
})
|
||||
}),
|
||||
getUser
|
||||
}),
|
||||
getUsers
|
||||
}),
|
||||
|
||||
@@ -30,7 +30,6 @@ const {
|
||||
} = require('@/modules/webhooks/services/webhooks')
|
||||
const { Users, Streams } = require('@/modules/core/dbSchema')
|
||||
const { getServerInfo } = require('@/modules/core/services/generic')
|
||||
const { getUser, getUsers } = require('@/modules/core/repositories/users')
|
||||
const {
|
||||
getStreamFactory,
|
||||
createStreamFactory,
|
||||
@@ -64,7 +63,10 @@ const {
|
||||
} = require('@/modules/activitystream/services/streamActivity')
|
||||
const { saveActivityFactory } = require('@/modules/activitystream/repositories')
|
||||
const { publish } = require('@/modules/shared/utils/subscriptions')
|
||||
const { getUserFactory, getUsersFactory } = require('@/modules/core/repositories/users')
|
||||
|
||||
const getUser = getUserFactory({ db })
|
||||
const getUsers = getUsersFactory({ db })
|
||||
const addStreamCreatedActivity = addStreamCreatedActivityFactory({
|
||||
saveActivity: saveActivityFactory({ db }),
|
||||
publish
|
||||
@@ -78,7 +80,7 @@ const createStream = legacyCreateStreamFactory({
|
||||
createStreamReturnRecord: createStreamReturnRecordFactory({
|
||||
inviteUsersToProject: inviteUsersToProjectFactory({
|
||||
createAndSendInvite: createAndSendInviteFactory({
|
||||
findUserByTarget: findUserByTargetFactory(),
|
||||
findUserByTarget: findUserByTargetFactory({ db }),
|
||||
insertInviteAndDeleteOld: insertInviteAndDeleteOldFactory({ db }),
|
||||
collectAndValidateResourceTargets: collectAndValidateCoreTargetsFactory({
|
||||
getStream
|
||||
@@ -90,7 +92,8 @@ const createStream = legacyCreateStreamFactory({
|
||||
getEventBus().emit({
|
||||
eventName,
|
||||
payload
|
||||
})
|
||||
}),
|
||||
getUser
|
||||
}),
|
||||
getUsers
|
||||
}),
|
||||
|
||||
@@ -15,7 +15,6 @@ import {
|
||||
getUserStreamsPageFactory,
|
||||
getUserStreamsCountFactory
|
||||
} from '@/modules/core/repositories/streams'
|
||||
import { getUser, getUsers } from '@/modules/core/repositories/users'
|
||||
import { InviteCreateValidationError } from '@/modules/serverinvites/errors'
|
||||
import {
|
||||
deleteAllResourceInvitesFactory,
|
||||
@@ -149,7 +148,10 @@ import {
|
||||
} from '@/modules/activitystream/services/streamActivity'
|
||||
import { publish } from '@/modules/shared/utils/subscriptions'
|
||||
import { updateStreamRoleAndNotifyFactory } from '@/modules/core/services/streams/management'
|
||||
import { getUserFactory, getUsersFactory } from '@/modules/core/repositories/users'
|
||||
|
||||
const getUser = getUserFactory({ db })
|
||||
const getUsers = getUsersFactory({ db })
|
||||
const getStream = getStreamFactory({ db })
|
||||
const requestNewEmailVerification = requestNewEmailVerificationFactory({
|
||||
findEmail: findEmailFactory({ db }),
|
||||
@@ -170,7 +172,7 @@ const buildCollectAndValidateResourceTargets = () =>
|
||||
|
||||
const buildCreateAndSendServerOrProjectInvite = () =>
|
||||
createAndSendInviteFactory({
|
||||
findUserByTarget: findUserByTargetFactory(),
|
||||
findUserByTarget: findUserByTargetFactory({ db }),
|
||||
insertInviteAndDeleteOld: insertInviteAndDeleteOldFactory({ db }),
|
||||
collectAndValidateResourceTargets: buildCollectAndValidateResourceTargets(),
|
||||
buildInviteEmailContents: buildCoreInviteEmailContentsFactory({
|
||||
@@ -180,12 +182,13 @@ const buildCreateAndSendServerOrProjectInvite = () =>
|
||||
getEventBus().emit({
|
||||
eventName,
|
||||
payload
|
||||
})
|
||||
}),
|
||||
getUser
|
||||
})
|
||||
|
||||
const buildCreateAndSendWorkspaceInvite = () =>
|
||||
createAndSendInviteFactory({
|
||||
findUserByTarget: findUserByTargetFactory(),
|
||||
findUserByTarget: findUserByTargetFactory({ db }),
|
||||
insertInviteAndDeleteOld: insertInviteAndDeleteOldFactory({ db }),
|
||||
collectAndValidateResourceTargets: buildCollectAndValidateResourceTargets(),
|
||||
buildInviteEmailContents: buildWorkspaceInviteEmailContentsFactory({
|
||||
@@ -196,7 +199,8 @@ const buildCreateAndSendWorkspaceInvite = () =>
|
||||
getEventBus().emit({
|
||||
eventName,
|
||||
payload
|
||||
})
|
||||
}),
|
||||
getUser
|
||||
})
|
||||
const deleteStream = deleteStreamFactory({ db })
|
||||
const saveActivity = saveActivityFactory({ db })
|
||||
@@ -588,12 +592,13 @@ export = FF_WORKSPACES_MODULE_ENABLED
|
||||
getStream,
|
||||
getWorkspace: getWorkspaceFactory({ db })
|
||||
}),
|
||||
findUserByTarget: findUserByTargetFactory(),
|
||||
findUserByTarget: findUserByTargetFactory({ db }),
|
||||
findInvite: findInviteFactory({
|
||||
db,
|
||||
filterQuery: workspaceInviteValidityFilter
|
||||
}),
|
||||
markInviteUpdated: markInviteUpdatedfactory({ db })
|
||||
markInviteUpdated: markInviteUpdatedfactory({ db }),
|
||||
getUser
|
||||
})
|
||||
|
||||
await resendInviteEmail({
|
||||
|
||||
@@ -9,7 +9,6 @@ import { getWorkspaceRoute } from '@/modules/core/helpers/routeHelper'
|
||||
import { isResourceAllowed } from '@/modules/core/helpers/token'
|
||||
import { UserRecord } from '@/modules/core/helpers/types'
|
||||
import { removePrivateFields } from '@/modules/core/helpers/userHelper'
|
||||
import { getUser } from '@/modules/core/repositories/users'
|
||||
import {
|
||||
ProjectInviteResourceType,
|
||||
ServerInviteResourceType
|
||||
@@ -72,6 +71,7 @@ import {
|
||||
userEmailsCompliantWithWorkspaceDomains
|
||||
} from '@/modules/workspaces/domain/logic'
|
||||
import { GetStream } from '@/modules/core/domain/streams/operations'
|
||||
import { GetUser } from '@/modules/core/domain/users/operations'
|
||||
|
||||
const isWorkspaceResourceTarget = (
|
||||
target: InviteResourceTarget
|
||||
@@ -381,7 +381,7 @@ function buildPendingWorkspaceCollaboratorModel(
|
||||
export const getUserPendingWorkspaceInviteFactory =
|
||||
(deps: {
|
||||
findInvite: FindInvite
|
||||
getUser: typeof getUser
|
||||
getUser: GetUser
|
||||
getWorkspaceBySlug: GetWorkspaceBySlug
|
||||
}) =>
|
||||
async (params: {
|
||||
@@ -425,10 +425,7 @@ export const getUserPendingWorkspaceInviteFactory =
|
||||
}
|
||||
|
||||
export const getUserPendingWorkspaceInvitesFactory =
|
||||
(deps: {
|
||||
getUserResourceInvites: QueryAllUserResourceInvites
|
||||
getUser: typeof getUser
|
||||
}) =>
|
||||
(deps: { getUserResourceInvites: QueryAllUserResourceInvites; getUser: GetUser }) =>
|
||||
async (userId: string): Promise<PendingWorkspaceCollaboratorGraphQLReturn[]> => {
|
||||
if (!userId) return []
|
||||
|
||||
|
||||
@@ -45,6 +45,7 @@ import {
|
||||
WorkspaceRoles
|
||||
} from '@speckle/shared'
|
||||
import { getStreamFactory } from '@/modules/core/repositories/streams'
|
||||
import { getUserFactory } from '@/modules/core/repositories/users'
|
||||
|
||||
export type BasicTestWorkspace = {
|
||||
/**
|
||||
@@ -208,8 +209,9 @@ export const createWorkspaceInviteDirectly = async (
|
||||
inviterId: string
|
||||
) => {
|
||||
const getStream = getStreamFactory({ db })
|
||||
const getUser = getUserFactory({ db })
|
||||
const createAndSendInvite = createAndSendInviteFactory({
|
||||
findUserByTarget: findUserByTargetFactory(),
|
||||
findUserByTarget: findUserByTargetFactory({ db }),
|
||||
insertInviteAndDeleteOld: insertInviteAndDeleteOldFactory({ db }),
|
||||
collectAndValidateResourceTargets: collectAndValidateWorkspaceTargetsFactory({
|
||||
getStream,
|
||||
@@ -225,7 +227,8 @@ export const createWorkspaceInviteDirectly = async (
|
||||
getEventBus().emit({
|
||||
eventName,
|
||||
payload
|
||||
})
|
||||
}),
|
||||
getUser
|
||||
})
|
||||
|
||||
const createInvite = createWorkspaceInviteFactory({
|
||||
|
||||
@@ -87,12 +87,12 @@ import {
|
||||
validateStreamAccessFactory
|
||||
} from '@/modules/core/services/streams/access'
|
||||
import { authorizeResolver } from '@/modules/shared'
|
||||
import { getUser } from '@/modules/core/repositories/users'
|
||||
import {
|
||||
addStreamInviteAcceptedActivityFactory,
|
||||
addStreamPermissionsAddedActivityFactory
|
||||
} from '@/modules/activitystream/services/streamActivity'
|
||||
import { publish } from '@/modules/shared/utils/subscriptions'
|
||||
import { getUserFactory } from '@/modules/core/repositories/users'
|
||||
|
||||
enum InviteByTarget {
|
||||
Email = 'email',
|
||||
@@ -105,6 +105,7 @@ const getStream = getStreamFactory({ db })
|
||||
const saveActivity = saveActivityFactory({ db })
|
||||
const validateStreamAccess = validateStreamAccessFactory({ authorizeResolver })
|
||||
|
||||
const getUser = getUserFactory({ db })
|
||||
const addOrUpdateStreamCollaborator = addOrUpdateStreamCollaboratorFactory({
|
||||
validateStreamAccess,
|
||||
getUser,
|
||||
|
||||
@@ -35,7 +35,6 @@ const {
|
||||
buildCoreInviteEmailContentsFactory
|
||||
} = require('@/modules/serverinvites/services/coreEmailContents')
|
||||
const { getEventBus } = require('@/modules/shared/services/eventBus')
|
||||
const { getUsers } = require('@/modules/core/repositories/users')
|
||||
const { createBranchFactory } = require('@/modules/core/repositories/branches')
|
||||
const { ProjectsEmitter } = require('@/modules/core/events/projectsEmitter')
|
||||
const {
|
||||
@@ -43,7 +42,10 @@ const {
|
||||
} = require('@/modules/activitystream/services/streamActivity')
|
||||
const { saveActivityFactory } = require('@/modules/activitystream/repositories')
|
||||
const { publish } = require('@/modules/shared/utils/subscriptions')
|
||||
const { getUsersFactory, getUserFactory } = require('@/modules/core/repositories/users')
|
||||
|
||||
const getUsers = getUsersFactory({ db })
|
||||
const getUser = getUserFactory({ db })
|
||||
const addStreamCreatedActivity = addStreamCreatedActivityFactory({
|
||||
saveActivity: saveActivityFactory({ db }),
|
||||
publish
|
||||
@@ -53,7 +55,7 @@ const createStream = legacyCreateStreamFactory({
|
||||
createStreamReturnRecord: createStreamReturnRecordFactory({
|
||||
inviteUsersToProject: inviteUsersToProjectFactory({
|
||||
createAndSendInvite: createAndSendInviteFactory({
|
||||
findUserByTarget: findUserByTargetFactory(),
|
||||
findUserByTarget: findUserByTargetFactory({ db }),
|
||||
insertInviteAndDeleteOld: insertInviteAndDeleteOldFactory({ db }),
|
||||
collectAndValidateResourceTargets: collectAndValidateCoreTargetsFactory({
|
||||
getStream
|
||||
@@ -65,7 +67,8 @@ const createStream = legacyCreateStreamFactory({
|
||||
getEventBus().emit({
|
||||
eventName,
|
||||
payload
|
||||
})
|
||||
}),
|
||||
getUser
|
||||
}),
|
||||
getUsers
|
||||
}),
|
||||
|
||||
@@ -26,10 +26,12 @@ import {
|
||||
} from '@/modules/serverinvites/domain/types'
|
||||
import { EmailSendingServiceMock } from '@/test/mocks/global'
|
||||
import { getStreamFactory } from '@/modules/core/repositories/streams'
|
||||
import { getUserFactory } from '@/modules/core/repositories/users'
|
||||
|
||||
const getUser = getUserFactory({ db })
|
||||
const getStream = getStreamFactory({ db })
|
||||
const createAndSendInvite = createAndSendInviteFactory({
|
||||
findUserByTarget: findUserByTargetFactory(),
|
||||
findUserByTarget: findUserByTargetFactory({ db }),
|
||||
insertInviteAndDeleteOld: insertInviteAndDeleteOldFactory({ db }),
|
||||
collectAndValidateResourceTargets: collectAndValidateCoreTargetsFactory({
|
||||
getStream
|
||||
@@ -41,7 +43,8 @@ const createAndSendInvite = createAndSendInviteFactory({
|
||||
getEventBus().emit({
|
||||
eventName,
|
||||
payload
|
||||
})
|
||||
}),
|
||||
getUser
|
||||
})
|
||||
|
||||
export const createServerInviteDirectly = async (
|
||||
|
||||
@@ -13,7 +13,7 @@ import {
|
||||
getStreamFactory,
|
||||
revokeStreamPermissionsFactory
|
||||
} from '@/modules/core/repositories/streams'
|
||||
import { getUsers } from '@/modules/core/repositories/users'
|
||||
import { getUserFactory, getUsersFactory } from '@/modules/core/repositories/users'
|
||||
import {
|
||||
isStreamCollaboratorFactory,
|
||||
removeStreamCollaboratorFactory,
|
||||
@@ -39,6 +39,8 @@ import { BasicTestUser } from '@/test/authHelper'
|
||||
import { ensureError } from '@speckle/shared'
|
||||
import { omit } from 'lodash'
|
||||
|
||||
const getUsers = getUsersFactory({ db })
|
||||
const getUser = getUserFactory({ db })
|
||||
const addStreamCreatedActivity = addStreamCreatedActivityFactory({
|
||||
saveActivity: saveActivityFactory({ db }),
|
||||
publish
|
||||
@@ -48,7 +50,7 @@ const createStream = legacyCreateStreamFactory({
|
||||
createStreamReturnRecord: createStreamReturnRecordFactory({
|
||||
inviteUsersToProject: inviteUsersToProjectFactory({
|
||||
createAndSendInvite: createAndSendInviteFactory({
|
||||
findUserByTarget: findUserByTargetFactory(),
|
||||
findUserByTarget: findUserByTargetFactory({ db }),
|
||||
insertInviteAndDeleteOld: insertInviteAndDeleteOldFactory({ db }),
|
||||
collectAndValidateResourceTargets: collectAndValidateCoreTargetsFactory({
|
||||
getStream
|
||||
@@ -60,7 +62,8 @@ const createStream = legacyCreateStreamFactory({
|
||||
getEventBus().emit({
|
||||
eventName,
|
||||
payload
|
||||
})
|
||||
}),
|
||||
getUser
|
||||
}),
|
||||
getUsers
|
||||
}),
|
||||
|
||||
Reference in New Issue
Block a user