implemented handling of password resets

This commit is contained in:
Sammy 2023-06-04 03:14:45 +02:00
parent 11dac10a07
commit d3fff38e36
2 changed files with 42 additions and 18 deletions

View File

@ -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 ?? ""
} }
} }

View File

@ -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!")
} }