@@ -26,6 +26,12 @@ export class UsersController {
|
|||||||
await this.usersService.discordLogin(session);
|
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')
|
@Get('/whoami')
|
||||||
async remove(@Session() session: Record<string, any>): Promise<LoginDto> {
|
async remove(@Session() session: Record<string, any>): Promise<LoginDto> {
|
||||||
if (!session.tokenData) {
|
if (!session.tokenData) {
|
||||||
|
|||||||
@@ -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(
|
async discordLogin(
|
||||||
session: Record<string, any>,
|
session: Record<string, any>,
|
||||||
recursive: boolean = false,
|
recursive: boolean = false,
|
||||||
@@ -126,7 +143,9 @@ export class UsersService {
|
|||||||
return user;
|
return user;
|
||||||
}
|
}
|
||||||
|
|
||||||
remove(id: number) {
|
async discordLogout(session: Record<string, any>) {
|
||||||
return `This action removes a #${id} user`;
|
this.revokeDiscordToken(session.tokenData.access_token);
|
||||||
|
delete session.user;
|
||||||
|
delete session.tokenData;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user