Compare commits

...

2 Commits

Author SHA1 Message Date
4ae0a16457 Prevent room creator from leaving 2023-10-27 11:03:17 +01:00
1775976045 Fix existing users 2023-10-27 11:02:54 +01:00
2 changed files with 21 additions and 3 deletions

View File

@ -144,6 +144,24 @@ export async function handle(rcMessage: RcMessage): Promise<void> {
)
return
}
const roomCreatorId = (
await axios.get(`/_synapse/admin/v1/rooms/${room_id}`)
).data.creator
if (!roomCreatorId) {
log.warn(
`Could not determine room creator for room ${room_id}, using admin credentials.`
)
}
log.warn(
`Room creator ${roomCreatorId}.`
)
if (roomCreatorId == matrixUser) {
log.warn(
`Room creator left room ${room_id}, skipping to prevent being unable to rejoin.`
)
return
}
log.http(`User ${matrixUser} leaves room ${room_id}`)
await axios.post(

View File

@ -84,8 +84,8 @@ async function registerUser(user: MatrixUser): Promise<AccessToken> {
async function getUserData(user: MatrixUser): Promise<UserInfo> {
return (await axios.get('/_synapse/admin/v2/users/@' + user.username + ":" + getUserDomain())).data
}
async function getUserLogin(user: MatrixUser): Promise<AccessToken> {
return (await axios.get('/_synapse/admin/v1/users/@' + user.username + ":" + getUserDomain() + "/login")).data
async function loginUser(user: MatrixUser): Promise<AccessToken> {
return (await axios.post('/_synapse/admin/v1/users/@' + user.username + ":" + getUserDomain() + "/login")).data
}
async function parseUserMemberships(rcUser: RcUser): Promise<void> {
@ -143,7 +143,7 @@ export async function createUser(rcUser: RcUser): Promise<MatrixUser> {
user.user_id = userData.name
user.displayname = userData.displayname
user.admin = user.admin || userData.admin
const accessToken = await getUserLogin(user)
const accessToken = await loginUser(user)
user.access_token = accessToken.access_token
log.info(`User ${rcUser.username} exists:`, user)
} else {