save whole subscription object

This commit is contained in:
adueck 2022-10-15 09:56:58 +05:00
parent dc1a5af77a
commit fccb941e22
6 changed files with 11 additions and 10 deletions

View File

@ -106,7 +106,7 @@ export async function updateLingdocsUser(uuid: T.UUID, toUpdate:
wordlistDbName: T.WordlistDbName, wordlistDbName: T.WordlistDbName,
couchDbPassword: T.UserDbPassword, couchDbPassword: T.UserDbPassword,
upgradeToStudentRequest: undefined, upgradeToStudentRequest: undefined,
subscriptionId: string | undefined, subscription?: T.StripeSubscription,
} | } |
{ {
level: "basic", level: "basic",

View File

@ -28,7 +28,7 @@ const student: AT.LingdocsUser = {
"lastActive":1630414108552 as AT.TimeStamp, "lastActive":1630414108552 as AT.TimeStamp,
"couchDbPassword": "12345" as AT.UserDbPassword, "couchDbPassword": "12345" as AT.UserDbPassword,
"wordlistDbName": "jim-db" as AT.WordlistDbName, "wordlistDbName": "jim-db" as AT.WordlistDbName,
subscriptionId: undefined, subscription: undefined,
}; };
const admin: AT.LingdocsUser = { const admin: AT.LingdocsUser = {
@ -46,7 +46,7 @@ const admin: AT.LingdocsUser = {
"lastActive":1630414108552 as AT.TimeStamp, "lastActive":1630414108552 as AT.TimeStamp,
"couchDbPassword": "12345" as AT.UserDbPassword, "couchDbPassword": "12345" as AT.UserDbPassword,
"wordlistDbName": "jim-db" as AT.WordlistDbName, "wordlistDbName": "jim-db" as AT.WordlistDbName,
subscriptionId: undefined, subscription: undefined,
}; };
const editor: AT.LingdocsUser = { const editor: AT.LingdocsUser = {
@ -63,7 +63,7 @@ const editor: AT.LingdocsUser = {
"lastActive":1630414108552 as AT.TimeStamp, "lastActive":1630414108552 as AT.TimeStamp,
"couchDbPassword": "12345" as AT.UserDbPassword, "couchDbPassword": "12345" as AT.UserDbPassword,
"wordlistDbName": "jim-db" as AT.WordlistDbName, "wordlistDbName": "jim-db" as AT.WordlistDbName,
subscriptionId: undefined, subscription: undefined,
}; };
// @ts-ignore // @ts-ignore

View File

@ -57,7 +57,7 @@ export function getEmailFromGoogleProfile(profile: T.GoogleProfile): { email: st
}; };
} }
export async function upgradeUser(userId: T.UUID, subscriptionId?: string): Promise<T.UpgradeUserResponse> { export async function upgradeUser(userId: T.UUID, subscription?: T.StripeSubscription): Promise<T.UpgradeUserResponse> {
// add user to couchdb authentication db // add user to couchdb authentication db
const { password, userDbName } = await addCouchDbAuthUser(userId); const { password, userDbName } = await addCouchDbAuthUser(userId);
// // create user db // // create user db
@ -67,7 +67,7 @@ export async function upgradeUser(userId: T.UUID, subscriptionId?: string): Prom
wordlistDbName: userDbName, wordlistDbName: userDbName,
couchDbPassword: password, couchDbPassword: password,
upgradeToStudentRequest: undefined, upgradeToStudentRequest: undefined,
subscriptionId, subscription,
}); });
if (user.email) { if (user.email) {
sendAccountUpgradeMessage(user).catch(console.error); sendAccountUpgradeMessage(user).catch(console.error);

View File

@ -196,8 +196,8 @@ const authRouter = (passport: PassportStatic) => {
if (!req.user) { if (!req.user) {
return res.redirect("/"); return res.redirect("/");
} }
await downgradeUser(req.user.userId, "subscriptionId" in req.user await downgradeUser(req.user.userId, "subscription" in req.user
? req.user.subscriptionId ? req.user.subscription?.id
: undefined); : undefined);
res.redirect("/"); res.redirect("/");
} catch (e) { } catch (e) {

View File

@ -54,7 +54,7 @@ paymentRouter.post(
subscription = event.data.object; subscription = event.data.object;
status = subscription.status; status = subscription.status;
console.log(`Upgrading user ${userId}.`); console.log(`Upgrading user ${userId}.`);
await upgradeUser(userId, subscription.id); await upgradeUser(userId, subscription);
// TODO: save subscription to db // TODO: save subscription to db
break; break;
default: default:

View File

@ -65,7 +65,7 @@
<div class="d-flex flex-row"> <div class="d-flex flex-row">
<form action="/payment/create-checkout-session" method="POST"> <form action="/payment/create-checkout-session" method="POST">
<input type="hidden" name="priceId" value="price_1Lt0XdJnpCQCjf9pM9qqdyt6" /> <input type="hidden" name="priceId" value="price_1Lt0XdJnpCQCjf9pM9qqdyt6" />
<button class="btn btn-sm btn-outline-secondary" type="submit">$1/month</button> <button class="btn btn-sm btn-outline-secondary mr-4" type="submit">$1/month</button>
</form> </form>
<form action="/payment/create-checkout-session" method="POST"> <form action="/payment/create-checkout-session" method="POST">
<input type="hidden" name="priceId" value="price_1Lt0XdJnpCQCjf9pHk1MQqCC" /> <input type="hidden" name="priceId" value="price_1Lt0XdJnpCQCjf9pHk1MQqCC" />
@ -75,6 +75,7 @@
<% } %> <% } %>
<% } %> <% } %>
<% if (user.tester && user.level === "student") { %> <% if (user.tester && user.level === "student") { %>
<p>Downgrade your account to cancel your subscription</p>
<form action="/downgradeToBasic" method="POST"> <form action="/downgradeToBasic" method="POST">
<button class="btn btn-sm btn-secondary" type="submit">Downgrade Account</button> <button class="btn btn-sm btn-secondary" type="submit">Downgrade Account</button>
</form> </form>