Fix edgecases for automatic user creation
- make eventdescription !wp case insensitive - Create accounts for users in channel without subscription when event starts - Make sent messages caused by VoiceState event dependant on creation result (created, enabled) - Create tmp user if normal user exists but is disabled
This commit is contained in:
@ -1,12 +1,11 @@
|
||||
import { GuildMember } from "discord.js";
|
||||
import { Config } from "../configuration";
|
||||
import { Maybe, PermissionLevel } from "../interfaces";
|
||||
import { logger } from "../logger";
|
||||
import { CreateUserByNameOperationRequest, DeleteUserRequest, SystemApi, UpdateUserPasswordOperationRequest, UpdateUserPolicyOperationRequest, UserApi } from "./apis";
|
||||
import { UpdateUserPasswordRequest } from "./models";
|
||||
import { UserDto } from "./models/UserDto";
|
||||
import { Configuration, ConfigurationParameters } from "./runtime";
|
||||
import { CreateUserByNameRequest, UpdateUserEasyPasswordRequest, UpdateUserPasswordRequest, UpdateUserPolicyRequest } from "./models";
|
||||
import { Config } from "../configuration";
|
||||
import { logger } from "../logger";
|
||||
import { Maybe, PermissionLevel } from "../interfaces";
|
||||
import { v4 as uuid } from "uuid";
|
||||
|
||||
|
||||
export class JellyfinHandler {
|
||||
@ -210,15 +209,20 @@ export class JellyfinHandler {
|
||||
}
|
||||
}
|
||||
|
||||
public async upsertUser(newMember: GuildMember, level: PermissionLevel, requestId?: string) {
|
||||
logger.error(`Trying to upsert user ${newMember.displayName}, with permissionLevel ${level}`, { guildId: newMember.guild.id, requestId })
|
||||
public async upsertUser(newMember: GuildMember, level: PermissionLevel, requestId?: string): Promise<UserUpsertResult> {
|
||||
logger.info(`Trying to upsert user ${newMember.displayName}, with permissionLevel ${level}`, { guildId: newMember.guild.id, requestId })
|
||||
const jfuser = await this.getUser(newMember, requestId)
|
||||
if (jfuser) {
|
||||
if (jfuser && !jfuser.policy?.isDisabled) {
|
||||
logger.info(`User with name ${newMember.displayName} is already present`, { guildId: newMember.guild.id, requestId })
|
||||
await this.enableUser(jfuser, newMember.guild.id, requestId)
|
||||
return UserUpsertResult.enabled
|
||||
} else {
|
||||
this.createUserAccountForDiscordUser(newMember, level, newMember.guild.id, requestId)
|
||||
return UserUpsertResult.created
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
export enum UserUpsertResult {enabled, created}
|
||||
|
||||
|
Reference in New Issue
Block a user