feat: add PNID deletion button to account page

This commit is contained in:
Jonathan Barrow
2025-10-03 14:46:11 -04:00
parent 6a9ddda4b9
commit c8fbfa068b
7 changed files with 660 additions and 14 deletions

View File

@@ -50,5 +50,12 @@ module.exports = {
secret: jsonConfig.discourse.sso.secret
}
},
email
email,
grpc: {
api: {
host: jsonConfig.grpc.api.host,
port: jsonConfig.grpc.api.port,
api_key: jsonConfig.grpc.api.api_key
}
}
};

View File

@@ -4,6 +4,8 @@ const DiscordOauth2 = require('discord-oauth2');
const Stripe = require('stripe');
const { REST: DiscordRest } = require('@discordjs/rest');
const { Routes: DiscordRoutes } = require('discord-api-types/v10');
const { createChannel, createClient, Metadata } = require('nice-grpc');
const { ApiServiceDefinition } = require('@pretendonetwork/grpc/api/v2/api_service');
const requireLoginMiddleware = require('../middleware/require-login');
const database = require('../database');
const cache = require('../cache');
@@ -19,6 +21,9 @@ const stripe = new Stripe(config.stripe.secret_key);
const router = new Router();
const discordRest = new DiscordRest({ version: '10' }).setToken(config.discord.bot_token);
const gRPCApiChannel = createChannel(`${config.grpc.account.host}:${config.grpc.account.port}`);
const gRPCApiClient = createClient(ApiServiceDefinition, gRPCApiChannel);
// Create OAuth client
const discordOAuth = new DiscordOauth2({
clientId: config.discord.client_id,
@@ -574,4 +579,27 @@ router.post('/sso/discourse', async (request, response, next) => {
}
});
router.post('/delete', requireLoginMiddleware, async (request, response) => {
const { pnid } = request;
try {
await gRPCApiClient.deleteAccount({
pid: pnid.pid
}, {
metadata: Metadata({
'X-API-Key': config.grpc.api.api_key
})
});
response.json({
success: true
});
} catch (error) {
response.json({
success: false,
error
});
}
});
module.exports = router;