Changeset View
Changeset View
Standalone View
Standalone View
keyserver/src/creators/account-creator.js
Show All 26 Lines | |||||
import { threadTypes } from 'lib/types/thread-types-enum.js'; | import { threadTypes } from 'lib/types/thread-types-enum.js'; | ||||
import { ServerError } from 'lib/utils/errors.js'; | import { ServerError } from 'lib/utils/errors.js'; | ||||
import { values } from 'lib/utils/objects.js'; | import { values } from 'lib/utils/objects.js'; | ||||
import { reservedUsernamesSet } from 'lib/utils/reserved-users.js'; | import { reservedUsernamesSet } from 'lib/utils/reserved-users.js'; | ||||
import { isValidEthereumAddress } from 'lib/utils/siwe-utils.js'; | import { isValidEthereumAddress } from 'lib/utils/siwe-utils.js'; | ||||
import createIDs from './id-creator.js'; | import createIDs from './id-creator.js'; | ||||
import createMessages from './message-creator.js'; | import createMessages from './message-creator.js'; | ||||
import { createOlmSession } from './olm-session-creator.js'; | |||||
import { | import { | ||||
createThread, | createThread, | ||||
createPrivateThread, | createPrivateThread, | ||||
privateThreadDescription, | privateThreadDescription, | ||||
} from './thread-creator.js'; | } from './thread-creator.js'; | ||||
import { dbQuery, SQL } from '../database/database.js'; | import { dbQuery, SQL } from '../database/database.js'; | ||||
import { deleteCookie } from '../deleters/cookie-deleters.js'; | import { deleteCookie } from '../deleters/cookie-deleters.js'; | ||||
import { fetchThreadInfos } from '../fetchers/thread-fetchers.js'; | import { fetchThreadInfos } from '../fetchers/thread-fetchers.js'; | ||||
Show All 35 Lines | ): Promise<RegisterResponse> { | ||||
} | } | ||||
const usernameQuery = SQL` | const usernameQuery = SQL` | ||||
SELECT COUNT(id) AS count | SELECT COUNT(id) AS count | ||||
FROM users | FROM users | ||||
WHERE LCASE(username) = LCASE(${request.username}) | WHERE LCASE(username) = LCASE(${request.username}) | ||||
`; | `; | ||||
const promises = [dbQuery(usernameQuery)]; | const promises = [dbQuery(usernameQuery)]; | ||||
const { calendarQuery, signedIdentityKeysBlob } = request; | const { | ||||
calendarQuery, | |||||
signedIdentityKeysBlob, | |||||
initialNotificationsEncryptedMessage, | |||||
} = request; | |||||
if (calendarQuery) { | if (calendarQuery) { | ||||
promises.push(verifyCalendarQueryThreadIDs(calendarQuery)); | promises.push(verifyCalendarQueryThreadIDs(calendarQuery)); | ||||
} | } | ||||
const [[usernameResult]] = await Promise.all(promises); | const [[usernameResult]] = await Promise.all(promises); | ||||
if ( | if ( | ||||
reservedUsernamesSet.has(request.username.toLowerCase()) || | reservedUsernamesSet.has(request.username.toLowerCase()) || | ||||
isValidEthereumAddress(request.username.toLowerCase()) | isValidEthereumAddress(request.username.toLowerCase()) | ||||
Show All 30 Lines | const [userViewerData] = await Promise.all([ | ||||
dbQuery(newUserQuery), | dbQuery(newUserQuery), | ||||
]); | ]); | ||||
viewer.setNewCookie(userViewerData); | viewer.setNewCookie(userViewerData); | ||||
if (calendarQuery) { | if (calendarQuery) { | ||||
await setNewSession(viewer, calendarQuery, 0); | await setNewSession(viewer, calendarQuery, 0); | ||||
} | } | ||||
const olmSessionPromise = (async () => { | |||||
if (userViewerData.cookieID && initialNotificationsEncryptedMessage) { | |||||
await createOlmSession( | |||||
initialNotificationsEncryptedMessage, | |||||
'notifications', | |||||
userViewerData.cookieID, | |||||
); | |||||
} | |||||
})(); | |||||
await Promise.all([ | await Promise.all([ | ||||
updateThread( | updateThread( | ||||
createScriptViewer(ashoat.id), | createScriptViewer(ashoat.id), | ||||
{ | { | ||||
threadID: genesis.id, | threadID: genesis.id, | ||||
changes: { newMemberIDs: [id] }, | changes: { newMemberIDs: [id] }, | ||||
}, | }, | ||||
{ forceAddMembers: true, silenceMessages: true, ignorePermissions: true }, | { forceAddMembers: true, silenceMessages: true, ignorePermissions: true }, | ||||
), | ), | ||||
viewerAcknowledgmentUpdater(viewer, policyTypes.tosAndPrivacyPolicy), | viewerAcknowledgmentUpdater(viewer, policyTypes.tosAndPrivacyPolicy), | ||||
olmSessionPromise, | |||||
]); | ]); | ||||
const [privateThreadResult, ashoatThreadResult] = await Promise.all([ | const [privateThreadResult, ashoatThreadResult] = await Promise.all([ | ||||
createPrivateThread(viewer, request.username), | createPrivateThread(viewer, request.username), | ||||
createThread( | createThread( | ||||
viewer, | viewer, | ||||
{ | { | ||||
type: threadTypes.PERSONAL, | type: threadTypes.PERSONAL, | ||||
▲ Show 20 Lines • Show All 152 Lines • Show Last 20 Lines |