adding stripe section, parts of dashboard

This commit is contained in:
metacryst
2026-01-07 18:30:58 -06:00
parent eced0b72d1
commit f0694f0b99
24 changed files with 183 additions and 411 deletions

View File

@@ -3,6 +3,7 @@ import chalk from 'chalk';
import path from 'path';
import Titles from "./model/Titles.js"
import Networks from "./model/Networks.js"
import Members from './model/Members.js'
import Tokens from './model/Tokens.js'
import Payments from "./model/Payments.js"
@@ -12,6 +13,7 @@ import Messages from "./model/Messages/Messages.js"
export default class Database {
titles = new Titles()
networks = new Networks()
members = new Members()
tokens = new Tokens()
payments = new Payments()
@@ -20,8 +22,9 @@ export default class Database {
messages = new Messages()
fromID = {
"HY": this.titles,
"MEMBER": this.members,
"NETWORK": this.networks,
"TITLE": this.titles,
"TOKEN": this.tokens,
"PAYMENT": this.payments,
"POST": this.posts,

View File

@@ -22,6 +22,7 @@ export default class Members extends OrderedObject {
),
joined: z.string(),
address: this.addressSchema,
networks: z.array(z.number())
})
isHashed = (s) => {return s.startsWith("$argon2")}

View File

@@ -0,0 +1,39 @@
import OrderedObject from "./OrderedObject.js"
import { z } from 'zod';
export default class Networks extends OrderedObject {
prefix = `NETWORK`
schema = z.object({
id: z.number(),
name: z.string(),
})
save(n) {
let id = `${this.prefix}-${n.id}`
let result = this.schema.safeParse(n)
if(result.success) {
try {
super.add(id, n)
} catch(e) {
console.error(e)
throw e
}
} else {
console.error(result.error)
throw new global.ServerError(400, "Invalid Member Data!");
}
}
add(n) {
let toSave = {
id: this.entries.length+1,
...n
}
this.save(toSave)
}
get(id) {
return this.entries[this.ids[`${this.prefix}-${id}`]]
}
}

View File

@@ -24,7 +24,7 @@ class Server {
registerRoutes(router) {
/* Stripe */
router.post("/create-checkout-session", PaymentsHandler.danceTicket)
router.post("/create-checkout-session", PaymentsHandler.newSubscription)
router.post("/webhook", express.raw({ type: "application/json" }), PaymentsHandler.webhook)
/* Auth */
@@ -33,7 +33,6 @@ class Server {
router.get('/signout', this.auth.logout)
/* Site */
router.get('/signup', this.verifyToken, this.get)
router.post('/signup', this.verifyToken, this.newUserSubmission)
router.get('/db/images/*', this.getUserImage)
router.get('/*', this.get)

View File

@@ -6,22 +6,22 @@ const stripe = new Stripe(process.env.STRIPE_SECRET);
export default class PaymentsHandler {
static async danceTicket(req, res) {
static async newSubscription(req, res) {
try {
const session = await stripe.checkout.sessions.create({
mode: "payment",
payment_method_types: ["card"],
metadata: {
productId: "austin_winter_ball_2025_ticket"
productId: "50_month_sub"
},
line_items: [
{
price_data: {
currency: "usd",
product_data: {
name: "Hyperia Winter Ball"
name: "Monthly Subscription"
},
unit_amount: 3500
unit_amount: 5000
},
quantity: 1
}