Move membership creation to users
This commit is contained in:
parent
3e1169235c
commit
de87228b8d
17
src/app.ts
17
src/app.ts
@ -5,14 +5,7 @@ import 'reflect-metadata'
|
||||
import { IdMapping } from './entity/IdMapping'
|
||||
import { RcUser, createUser } from './handlers/users'
|
||||
import log from './helpers/logger'
|
||||
import {
|
||||
createMembership,
|
||||
getMapping,
|
||||
getRoomId,
|
||||
getUserId,
|
||||
initStorage,
|
||||
save,
|
||||
} from './helpers/storage'
|
||||
import { getRoomId, getUserId, initStorage, save } from './helpers/storage'
|
||||
import { whoami } from './helpers/synapse'
|
||||
import { RcRoom, createRoom } from './handlers/rooms'
|
||||
|
||||
@ -77,14 +70,6 @@ async function loadRcExport(entity: Entities) {
|
||||
|
||||
await save(mapping)
|
||||
log.debug('Mapping added:', mapping)
|
||||
|
||||
// Add user to room mapping (specific to users)
|
||||
await Promise.all(
|
||||
rcUser.__rooms.map(async (rcRoomId: string) => {
|
||||
await createMembership(rcRoomId, rcUser._id)
|
||||
log.debug(`${rcUser.username} membership for ${rcRoomId} created`)
|
||||
})
|
||||
)
|
||||
}
|
||||
|
||||
break
|
||||
|
||||
@ -1,6 +1,7 @@
|
||||
process.env.REGISTRATION_SHARED_SECRET = 'ThisIsSoSecretWow'
|
||||
import { expect, jest, test } from '@jest/globals'
|
||||
import axios from 'axios'
|
||||
import * as storage from '../helpers/storage'
|
||||
import {
|
||||
MatrixUser,
|
||||
RcUser,
|
||||
@ -12,12 +13,15 @@ import {
|
||||
jest.mock('axios')
|
||||
const mockedAxios = axios as jest.Mocked<typeof axios>
|
||||
|
||||
jest.mock('../helpers/storage')
|
||||
const mockedStorage = storage as jest.Mocked<typeof storage>
|
||||
|
||||
const rcUser: RcUser = {
|
||||
_id: 'testRc',
|
||||
name: 'Tester McDelme',
|
||||
username: 'testuser',
|
||||
roles: ['user'],
|
||||
__rooms: [],
|
||||
__rooms: ['room0', 'room1'],
|
||||
}
|
||||
|
||||
const matrixUser: MatrixUser = {
|
||||
@ -65,4 +69,14 @@ test('creating users', async () => {
|
||||
// nonce,
|
||||
// mac: 'be0537407ab3c82de908c5763185556e98a7211c',
|
||||
// })
|
||||
|
||||
expect(mockedStorage.createMembership).toHaveBeenCalledWith(
|
||||
rcUser.__rooms[0],
|
||||
rcUser._id
|
||||
)
|
||||
expect(mockedStorage.createMembership).toHaveBeenCalledWith(
|
||||
rcUser.__rooms[1],
|
||||
rcUser._id
|
||||
)
|
||||
expect(mockedStorage.createMembership).toHaveBeenCalledTimes(2)
|
||||
})
|
||||
|
||||
@ -1,6 +1,7 @@
|
||||
import { createHmac } from 'node:crypto'
|
||||
import log from '../helpers/logger'
|
||||
import { axios } from '../helpers/synapse'
|
||||
import { createMembership } from '../helpers/storage'
|
||||
|
||||
export type RcUser = {
|
||||
_id: string
|
||||
@ -64,6 +65,15 @@ async function registerUser(user: MatrixUser): Promise<AccessToken> {
|
||||
return (await axios.post('/_synapse/admin/v1/register', user)).data
|
||||
}
|
||||
|
||||
async function parseUserMemberships(rcUser: RcUser): Promise<void> {
|
||||
await Promise.all(
|
||||
rcUser.__rooms.map(async (rcRoomId: string) => {
|
||||
await createMembership(rcRoomId, rcUser._id)
|
||||
log.debug(`${rcUser.username} membership for ${rcRoomId} created`)
|
||||
})
|
||||
)
|
||||
}
|
||||
|
||||
export async function createUser(rcUser: RcUser): Promise<MatrixUser> {
|
||||
const user = mapUser(rcUser)
|
||||
user.nonce = await getUserRegistrationNonce()
|
||||
@ -76,5 +86,7 @@ export async function createUser(rcUser: RcUser): Promise<MatrixUser> {
|
||||
delete user.nonce
|
||||
delete user.mac
|
||||
|
||||
await parseUserMemberships(rcUser)
|
||||
|
||||
return user
|
||||
}
|
||||
|
||||
Loading…
Reference in New Issue
Block a user