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 { IdMapping } from './entity/IdMapping'
|
||||||
import { RcUser, createUser } from './handlers/users'
|
import { RcUser, createUser } from './handlers/users'
|
||||||
import log from './helpers/logger'
|
import log from './helpers/logger'
|
||||||
import {
|
import { getRoomId, getUserId, initStorage, save } from './helpers/storage'
|
||||||
createMembership,
|
|
||||||
getMapping,
|
|
||||||
getRoomId,
|
|
||||||
getUserId,
|
|
||||||
initStorage,
|
|
||||||
save,
|
|
||||||
} from './helpers/storage'
|
|
||||||
import { whoami } from './helpers/synapse'
|
import { whoami } from './helpers/synapse'
|
||||||
import { RcRoom, createRoom } from './handlers/rooms'
|
import { RcRoom, createRoom } from './handlers/rooms'
|
||||||
|
|
||||||
@ -77,14 +70,6 @@ async function loadRcExport(entity: Entities) {
|
|||||||
|
|
||||||
await save(mapping)
|
await save(mapping)
|
||||||
log.debug('Mapping added:', 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
|
break
|
||||||
|
|||||||
@ -1,6 +1,7 @@
|
|||||||
process.env.REGISTRATION_SHARED_SECRET = 'ThisIsSoSecretWow'
|
process.env.REGISTRATION_SHARED_SECRET = 'ThisIsSoSecretWow'
|
||||||
import { expect, jest, test } from '@jest/globals'
|
import { expect, jest, test } from '@jest/globals'
|
||||||
import axios from 'axios'
|
import axios from 'axios'
|
||||||
|
import * as storage from '../helpers/storage'
|
||||||
import {
|
import {
|
||||||
MatrixUser,
|
MatrixUser,
|
||||||
RcUser,
|
RcUser,
|
||||||
@ -12,12 +13,15 @@ import {
|
|||||||
jest.mock('axios')
|
jest.mock('axios')
|
||||||
const mockedAxios = axios as jest.Mocked<typeof axios>
|
const mockedAxios = axios as jest.Mocked<typeof axios>
|
||||||
|
|
||||||
|
jest.mock('../helpers/storage')
|
||||||
|
const mockedStorage = storage as jest.Mocked<typeof storage>
|
||||||
|
|
||||||
const rcUser: RcUser = {
|
const rcUser: RcUser = {
|
||||||
_id: 'testRc',
|
_id: 'testRc',
|
||||||
name: 'Tester McDelme',
|
name: 'Tester McDelme',
|
||||||
username: 'testuser',
|
username: 'testuser',
|
||||||
roles: ['user'],
|
roles: ['user'],
|
||||||
__rooms: [],
|
__rooms: ['room0', 'room1'],
|
||||||
}
|
}
|
||||||
|
|
||||||
const matrixUser: MatrixUser = {
|
const matrixUser: MatrixUser = {
|
||||||
@ -65,4 +69,14 @@ test('creating users', async () => {
|
|||||||
// nonce,
|
// nonce,
|
||||||
// mac: 'be0537407ab3c82de908c5763185556e98a7211c',
|
// 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 { createHmac } from 'node:crypto'
|
||||||
import log from '../helpers/logger'
|
import log from '../helpers/logger'
|
||||||
import { axios } from '../helpers/synapse'
|
import { axios } from '../helpers/synapse'
|
||||||
|
import { createMembership } from '../helpers/storage'
|
||||||
|
|
||||||
export type RcUser = {
|
export type RcUser = {
|
||||||
_id: string
|
_id: string
|
||||||
@ -64,6 +65,15 @@ async function registerUser(user: MatrixUser): Promise<AccessToken> {
|
|||||||
return (await axios.post('/_synapse/admin/v1/register', user)).data
|
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> {
|
export async function createUser(rcUser: RcUser): Promise<MatrixUser> {
|
||||||
const user = mapUser(rcUser)
|
const user = mapUser(rcUser)
|
||||||
user.nonce = await getUserRegistrationNonce()
|
user.nonce = await getUserRegistrationNonce()
|
||||||
@ -76,5 +86,7 @@ export async function createUser(rcUser: RcUser): Promise<MatrixUser> {
|
|||||||
delete user.nonce
|
delete user.nonce
|
||||||
delete user.mac
|
delete user.mac
|
||||||
|
|
||||||
|
await parseUserMemberships(rcUser)
|
||||||
|
|
||||||
return user
|
return user
|
||||||
}
|
}
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user