save whole subscription object
This commit is contained in:
parent
dc1a5af77a
commit
fccb941e22
|
@ -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",
|
||||||
|
|
|
@ -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
|
||||||
|
|
|
@ -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);
|
||||||
|
|
|
@ -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) {
|
||||||
|
|
|
@ -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:
|
||||||
|
|
|
@ -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>
|
||||||
|
|
Loading…
Reference in New Issue