Compare commits
	
		
			2 Commits
		
	
	
		
			7e37641e0b
			...
			d3fff38e36
		
	
	| Author | SHA1 | Date | |
|---|---|---|---|
| d3fff38e36 | |||
| 11dac10a07 | 
							
								
								
									
										17
									
								
								server/commands/resetPassword.ts
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										17
									
								
								server/commands/resetPassword.ts
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,17 @@ | |||||||
|  | import { ApplicationCommandOptionType, BurstHandlerMajorIdKey } from 'discord.js' | ||||||
|  | import { Command } from '../structures/command' | ||||||
|  | import { RunOptions } from '../types/commandTypes' | ||||||
|  | import { jellyfinHandler } from "../.." | ||||||
|  | import { v4 as uuid } from 'uuid' | ||||||
|  |  | ||||||
|  | export default new Command({ | ||||||
|  | 	name: 'passwort_reset', | ||||||
|  | 	description: 'Ich vergebe dir ein neues Passwort und schicke es dir per DM zu. Kostet auch nix! Versprochen! 😉', | ||||||
|  | 	options: [], | ||||||
|  | 	run: async (interaction: RunOptions) => { | ||||||
|  | 		console.log('PasswortReset called') | ||||||
|  | 		interaction.interaction.followUp('Yo, ich schick dir eins!') | ||||||
|  | 		console.log(JSON.stringify(interaction.interaction.member, null, 2)) | ||||||
|  | 		jellyfinHandler.resetUserPasswort(interaction.interaction.member, uuid()) | ||||||
|  | 	} | ||||||
|  | }) | ||||||
| @ -19,6 +19,7 @@ export interface Config { | |||||||
|     jellfin_token: string |     jellfin_token: string | ||||||
|     jellyfin_url: string |     jellyfin_url: string | ||||||
|     port: number |     port: number | ||||||
|  |     workaround_token: string | ||||||
|   } |   } | ||||||
| } | } | ||||||
| export const config: Config = { | export const config: Config = { | ||||||
| @ -47,6 +48,7 @@ export const config: Config = { | |||||||
|     guild_id: process.env.GUILD_ID ?? "", |     guild_id: process.env.GUILD_ID ?? "", | ||||||
|     client_id: process.env.CLIENT_ID ?? "", |     client_id: process.env.CLIENT_ID ?? "", | ||||||
|     jellfin_token: process.env.JELLYFIN_TOKEN ?? "", |     jellfin_token: process.env.JELLYFIN_TOKEN ?? "", | ||||||
|     jellyfin_url: process.env.JELLYFIN_URL ?? "" |     jellyfin_url: process.env.JELLYFIN_URL ?? "", | ||||||
|  |     workaround_token: process.env.TOKEN ?? "" | ||||||
|   } |   } | ||||||
| } | } | ||||||
|  | |||||||
| @ -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 = { | ||||||
| @ -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!") | ||||||
|     } |     } | ||||||
|  | |||||||
		Reference in New Issue
	
	Block a user