feat: logout
release-tag / release-image (push) Failing after 15s

This commit is contained in:
2024-12-20 21:57:05 +01:00
parent 6c1d4e9a53
commit ba5d56f7c1
2 changed files with 27 additions and 2 deletions
+6
View File
@@ -26,6 +26,12 @@ export class UsersController {
await this.usersService.discordLogin(session);
}
@Get('/logout')
@Redirect(process.env.CLIENT_ENDPOINT)
async logout(@Session() session: Record<string, any>): Promise<void> {
await this.usersService.discordLogout(session);
}
@Get('/whoami')
async remove(@Session() session: Record<string, any>): Promise<LoginDto> {
if (!session.tokenData) {
+21 -2
View File
@@ -81,6 +81,23 @@ export class UsersService {
};
}
async revokeDiscordToken(refresh_token: string) {
const body = new URLSearchParams({
client_id: process.env.DISCORD_CLIENTID,
client_secret: process.env.DISCORD_CLIENTSECRET,
token: refresh_token,
token_type_hint: 'refresh_token',
});
const req = await fetch('https://discord.com/api/oauth2/token/revoke', {
method: 'POST',
headers: {
'Content-Type': 'application/x-www-form-urlencoded',
},
body,
});
}
async discordLogin(
session: Record<string, any>,
recursive: boolean = false,
@@ -126,7 +143,9 @@ export class UsersService {
return user;
}
remove(id: number) {
return `This action removes a #${id} user`;
async discordLogout(session: Record<string, any>) {
this.revokeDiscordToken(session.tokenData.access_token);
delete session.user;
delete session.tokenData;
}
}