|  |  | @ -14,7 +14,7 @@ export class JellyfinHandler { | 
			
		
	
		
		
			
				
					
					|  |  |  |   private userApi: UserApi |  |  |  |   private userApi: UserApi | 
			
		
	
		
		
			
				
					
					|  |  |  |   private systemApi: SystemApi |  |  |  |   private systemApi: SystemApi | 
			
		
	
		
		
			
				
					
					|  |  |  |   private token: string |  |  |  |   private token: string | 
			
		
	
		
		
			
				
					
					|  |  |  |   private authHeader: { headers: { 'X-MediaBrowser-Token': string } } |  |  |  |   private authHeader: { headers: { 'X-Emby-Authorization': string } } | 
			
				
				
			
		
	
		
		
	
		
		
			
				
					
					|  |  |  |   private config: Config |  |  |  |   private config: Config | 
			
		
	
		
		
			
				
					
					|  |  |  |   private serverName = ""; |  |  |  |   private serverName = ""; | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |  | 
			
		
	
	
		
		
			
				
					
					|  |  | @ -30,7 +30,7 @@ export class JellyfinHandler { | 
			
		
	
		
		
			
				
					
					|  |  |  |     this.token = this.config.bot.jellfin_token |  |  |  |     this.token = this.config.bot.jellfin_token | 
			
		
	
		
		
			
				
					
					|  |  |  |     this.authHeader = { |  |  |  |     this.authHeader = { | 
			
		
	
		
		
			
				
					
					|  |  |  |       headers: { |  |  |  |       headers: { | 
			
		
	
		
		
			
				
					
					|  |  |  |         "X-MediaBrowser-Token": this.token |  |  |  |         "X-Emby-Authorization": this.config.bot.workaround_token | 
			
				
				
			
		
	
		
		
	
		
		
			
				
					
					|  |  |  |       } |  |  |  |       } | 
			
		
	
		
		
			
				
					
					|  |  |  |     } |  |  |  |     } | 
			
		
	
		
		
			
				
					
					|  |  |  |     const userApiConfigurationParams: ConfigurationParameters = { |  |  |  |     const userApiConfigurationParams: ConfigurationParameters = { | 
			
		
	
	
		
		
			
				
					
					|  |  | @ -69,8 +69,8 @@ export class JellyfinHandler { | 
			
		
	
		
		
			
				
					
					|  |  |  |     } |  |  |  |     } | 
			
		
	
		
		
			
				
					
					|  |  |  |     logger.debug(JSON.stringify(req)) |  |  |  |     logger.debug(JSON.stringify(req)) | 
			
		
	
		
		
			
				
					
					|  |  |  |     const createResult = await this.userApi.createUserByName(req) |  |  |  |     const createResult = await this.userApi.createUserByName(req) | 
			
		
	
		
		
			
				
					
					|  |  |  |     if (createResult){ |  |  |  |     if (createResult) { | 
			
				
				
			
		
	
		
		
			
				
					
					|  |  |  |       (await discordUser.createDM()).send(`Ich hab dir mal nen Account angelegt :)\nDein Username ist ${createResult.name}, dein Password ist "${req.createUserByNameRequest.password}"!` ) |  |  |  |       (await discordUser.createDM()).send(`Ich hab dir mal nen Account angelegt :)\nDein Username ist ${createResult.name}, dein Password ist "${req.createUserByNameRequest.password}"!`) | 
			
				
				
			
		
	
		
		
	
		
		
	
		
		
			
				
					
					|  |  |  |       return createResult |  |  |  |       return createResult | 
			
		
	
		
		
			
				
					
					|  |  |  |     } |  |  |  |     } | 
			
		
	
		
		
			
				
					
					|  |  |  |     else throw new Error('Could not create User in Jellyfin') |  |  |  |     else throw new Error('Could not create User in Jellyfin') | 
			
		
	
	
		
		
			
				
					
					|  |  | @ -94,6 +94,7 @@ export class JellyfinHandler { | 
			
		
	
		
		
			
				
					
					|  |  |  |   } |  |  |  |   } | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |  | 
			
		
	
		
		
			
				
					
					|  |  |  |   public async getUser(discordUser: GuildMember, requestId?: string): Promise<Maybe<UserDto>> { |  |  |  |   public async getUser(discordUser: GuildMember, requestId?: string): Promise<Maybe<UserDto>> { | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |     logger.info(`Getting user for discord member ${discordUser.displayName}`, {requestId}) | 
			
		
	
		
		
			
				
					
					|  |  |  |     const jfUsernameFromDiscordUsername = this.generateJFUserName(discordUser) |  |  |  |     const jfUsernameFromDiscordUsername = this.generateJFUserName(discordUser) | 
			
		
	
		
		
			
				
					
					|  |  |  |     const jfUsers = await this.getCurrentUsers(discordUser.guild.id, requestId) |  |  |  |     const jfUsers = await this.getCurrentUsers(discordUser.guild.id, requestId) | 
			
		
	
		
		
			
				
					
					|  |  |  |     const foundUser = jfUsers.find(x => x.name === jfUsernameFromDiscordUsername) |  |  |  |     const foundUser = jfUsers.find(x => x.name === jfUsernameFromDiscordUsername) | 
			
		
	
	
		
		
			
				
					
					|  |  | @ -101,7 +102,7 @@ export class JellyfinHandler { | 
			
		
	
		
		
			
				
					
					|  |  |  |   } |  |  |  |   } | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |  | 
			
		
	
		
		
			
				
					
					|  |  |  |   public async removeUser(newMember: GuildMember, requestId?: string) { |  |  |  |   public async removeUser(newMember: GuildMember, requestId?: string) { | 
			
		
	
		
		
			
				
					
					|  |  |  |     logger.error(`Trying to remove user ${newMember.displayName}, but method is not implemented`) |  |  |  |     logger.error(`Trying to remove user ${newMember.displayName}, but method is not implemented`, {requestId}) | 
			
				
				
			
		
	
		
		
	
		
		
			
				
					
					|  |  |  |     const jfuser = await this.getUser(newMember, requestId) |  |  |  |     const jfuser = await this.getUser(newMember, requestId) | 
			
		
	
		
		
			
				
					
					|  |  |  |     if (jfuser) { |  |  |  |     if (jfuser) { | 
			
		
	
		
		
			
				
					
					|  |  |  |       await this.disableUser(jfuser, newMember.guild.id, requestId) |  |  |  |       await this.disableUser(jfuser, newMember.guild.id, requestId) | 
			
		
	
	
		
		
			
				
					
					|  |  | @ -109,20 +110,41 @@ export class JellyfinHandler { | 
			
		
	
		
		
			
				
					
					|  |  |  |   } |  |  |  |   } | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |  | 
			
		
	
		
		
			
				
					
					|  |  |  |   public async resetUserPasswort(member: GuildMember, requestId?: string) { |  |  |  |   public async resetUserPasswort(member: GuildMember, requestId?: string) { | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |     logger.info(`Resetting password for user ${member.displayName}`, {requestId}) | 
			
		
	
		
		
			
				
					
					|  |  |  |     const jfUser = await this.getUser(member, requestId) |  |  |  |     const jfUser = await this.getUser(member, requestId) | 
			
		
	
		
		
			
				
					
					|  |  |  |     if (jfUser && jfUser.id) { |  |  |  |     if (jfUser && jfUser.id) { | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |  | 
			
		
	
		
		
			
				
					
					|  |  |  |       const r: UpdateUserPasswordRequest = { |  |  |  |       // const reset: UpdateUserPasswordRequest = { | 
			
				
				
			
		
	
		
		
			
				
					
					|  |  |  |         newPw: this.generatePasswordForUser() |  |  |  |       //   resetPassword: true | 
			
				
				
			
		
	
		
		
	
		
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |       // } | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |        | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |       // const shit: UpdateUserPasswordOperationRequest = { | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |       //   updateUserPasswordRequest: reset, | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |       //   userId: jfUser.id | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |       // } | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |  | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |       // logger.info(JSON.stringify(jfUser.policy, null, 2)) | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |  | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |       // logger.info("Resetting password", {requestId}) | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |       // await this.userApi.updateUserPassword(shit); | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |        | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |       const password = this.generatePasswordForUser() | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |       const passwordRequest: UpdateUserPasswordRequest = { | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |         // resetPassword: true, | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |         currentPw: "", | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |         newPw: password | 
			
		
	
		
		
			
				
					
					|  |  |  |       } |  |  |  |       } | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |  | 
			
		
	
		
		
			
				
					
					|  |  |  |       const shit: UpdateUserPasswordOperationRequest = { |  |  |  |       const passwordOperationRequest: UpdateUserPasswordOperationRequest = { | 
			
				
				
			
		
	
		
		
			
				
					
					|  |  |  |         updateUserPasswordRequest: r, |  |  |  |         updateUserPasswordRequest: passwordRequest, | 
			
				
				
			
		
	
		
		
	
		
		
	
		
		
			
				
					
					|  |  |  |         userId: jfUser.id |  |  |  |         userId: jfUser.id | 
			
		
	
		
		
			
				
					
					|  |  |  |       } |  |  |  |       } | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |  | 
			
		
	
		
		
			
				
					
					|  |  |  |       this.userApi.updateUserPassword(shit) |  |  |  |       logger.info("Setting new password", {requestId}) | 
			
				
				
			
		
	
		
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |       await this.userApi.updateUserPassword(passwordOperationRequest); | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |  | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |  | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |       (await member.createDM()).send(`Hier ist dein neues Passwort: ${password}`) | 
			
		
	
		
		
			
				
					
					|  |  |  |     } else { |  |  |  |     } else { | 
			
		
	
		
		
			
				
					
					|  |  |  |       (await member.createDM()).send("Ich konnte leider keinen User von dir auf Jellyfin finden. Bitte melde dich bei Markus oder Samantha!") |  |  |  |       (await member.createDM()).send("Ich konnte leider keinen User von dir auf Jellyfin finden. Bitte melde dich bei Markus oder Samantha!") | 
			
		
	
		
		
			
				
					
					|  |  |  |     } |  |  |  |     } | 
			
		
	
	
		
		
			
				
					
					|  |  | @ -132,7 +154,7 @@ export class JellyfinHandler { | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |  | 
			
		
	
		
		
			
				
					
					|  |  |  |   public async disableUser(user: UserDto, guildId?: string, requestId?: string): Promise<void> { |  |  |  |   public async disableUser(user: UserDto, guildId?: string, requestId?: string): Promise<void> { | 
			
		
	
		
		
			
				
					
					|  |  |  |     if (user.id) { |  |  |  |     if (user.id) { | 
			
		
	
		
		
			
				
					
					|  |  |  |       const jfUser = await this.getUser(<GuildMember>{displayName: user.name, guild: {id: guildId}}, requestId) |  |  |  |       const jfUser = await this.getUser(<GuildMember>{ displayName: user.name, guild: { id: guildId } }, requestId) | 
			
				
				
			
		
	
		
		
	
		
		
			
				
					
					|  |  |  |       logger.info(`Trying to disable user: ${user.name}|${user.id}|${JSON.stringify(jfUser, null, 2)}`) |  |  |  |       logger.info(`Trying to disable user: ${user.name}|${user.id}|${JSON.stringify(jfUser, null, 2)}`) | 
			
		
	
		
		
			
				
					
					|  |  |  |       const r: UpdateUserPolicyOperationRequest = { |  |  |  |       const r: UpdateUserPolicyOperationRequest = { | 
			
		
	
		
		
			
				
					
					|  |  |  |         userId: user.id ?? "", |  |  |  |         userId: user.id ?? "", | 
			
		
	
	
		
		
			
				
					
					|  |  | @ -151,7 +173,7 @@ export class JellyfinHandler { | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |  | 
			
		
	
		
		
			
				
					
					|  |  |  |   public async enableUser(user: UserDto, guildId: string, requestId?: string): Promise<void> { |  |  |  |   public async enableUser(user: UserDto, guildId: string, requestId?: string): Promise<void> { | 
			
		
	
		
		
			
				
					
					|  |  |  |     if (user.id) { |  |  |  |     if (user.id) { | 
			
		
	
		
		
			
				
					
					|  |  |  |       const jfUser = await this.getUser(<GuildMember>{displayName: user.name, guild: {id: guildId}}, requestId) |  |  |  |       const jfUser = await this.getUser(<GuildMember>{ displayName: user.name, guild: { id: guildId } }, requestId) | 
			
				
				
			
		
	
		
		
	
		
		
			
				
					
					|  |  |  |       logger.info(`Trying to enable user: ${user.name}|${user.id}|${JSON.stringify(jfUser, null, 2)}`) |  |  |  |       logger.info(`Trying to enable user: ${user.name}|${user.id}|${JSON.stringify(jfUser, null, 2)}`) | 
			
		
	
		
		
			
				
					
					|  |  |  |       const r: UpdateUserPolicyOperationRequest = { |  |  |  |       const r: UpdateUserPolicyOperationRequest = { | 
			
		
	
		
		
			
				
					
					|  |  |  |         userId: user.id ?? "", |  |  |  |         userId: user.id ?? "", | 
			
		
	
	
		
		
			
				
					
					|  |  | 
 |