WIP changes

This commit is contained in:
daniel31x13
2023-11-02 01:52:49 -04:00
parent b1b0d98eb2
commit b458fad567
20 changed files with 358 additions and 43 deletions
+1 -1
View File
@@ -16,7 +16,7 @@ export default async function Index(req: NextApiRequest, res: NextApiResponse) {
if (!session?.user?.username)
return res.status(401).json({ response: "You must be logged in." });
else if (session?.user?.isSubscriber === false)
res.status(401).json({
return res.status(401).json({
response:
"You are not a subscriber, feel free to reach out to us at support@linkwarden.app in case of any issues.",
});
+11 -11
View File
@@ -1,10 +1,9 @@
import { prisma } from "@/lib/api/db";
import NextAuth from "next-auth/next";
import CredentialsProvider from "next-auth/providers/credentials";
import { AuthOptions, Session } from "next-auth";
import { AuthOptions, Session, User } from "next-auth";
import bcrypt from "bcrypt";
import EmailProvider from "next-auth/providers/email";
import { JWT } from "next-auth/jwt";
import { PrismaAdapter } from "@auth/prisma-adapter";
import { Adapter } from "next-auth/adapters";
import sendVerificationRequest from "@/lib/api/sendVerificationRequest";
@@ -19,6 +18,7 @@ const providers: Provider[] = [
type: "credentials",
credentials: {},
async authorize(credentials, req) {
console.log("User logged in...");
if (!credentials) return null;
const { username, password } = credentials as {
@@ -81,13 +81,6 @@ export const authOptions: AuthOptions = {
verifyRequest: "/confirmation",
},
callbacks: {
session: async ({ session, token }: { session: Session; token: JWT }) => {
session.user.id = parseInt(token.id as string);
session.user.username = token.username as string;
session.user.isSubscriber = token.isSubscriber as boolean;
return session;
},
async jwt({ token, trigger, user }) {
const STRIPE_SECRET_KEY = process.env.STRIPE_SECRET_KEY;
@@ -121,7 +114,7 @@ export const authOptions: AuthOptions = {
}
if (trigger === "signIn") {
token.id = user.id;
token.id = user.id as number;
token.username = (user as any).username;
} else if (trigger === "update" && token.id) {
console.log(token);
@@ -132,7 +125,7 @@ export const authOptions: AuthOptions = {
},
});
if (user) {
if (user?.name && user.username && user.email) {
token.name = user.name;
token.username = user.username?.toLowerCase();
token.email = user.email?.toLowerCase();
@@ -140,6 +133,13 @@ export const authOptions: AuthOptions = {
}
return token;
},
async session({ session, token }) {
session.user.id = token.id;
session.user.username = token.username;
session.user.isSubscriber = token.isSubscriber;
return session;
},
},
};
+1 -1
View File
@@ -17,7 +17,7 @@ export default async function Index(req: NextApiRequest, res: NextApiResponse) {
.status(401)
.send("You must be logged in.");
else if (session?.user?.isSubscriber === false)
res.status(401).json({
return res.status(401).json({
response:
"You are not a subscriber, feel free to reach out to us at support@linkwarden.app in case of any issues.",
});
+1 -1
View File
@@ -13,7 +13,7 @@ export default async function collections(
if (!session?.user?.id) {
return res.status(401).json({ response: "You must be logged in." });
} else if (session?.user?.isSubscriber === false)
res.status(401).json({
return res.status(401).json({
response:
"You are not a subscriber, feel free to reach out to us at support@linkwarden.app in case of any issues.",
});
+1 -1
View File
@@ -13,7 +13,7 @@ export default async function collections(
if (!session?.user?.id) {
return res.status(401).json({ response: "You must be logged in." });
} else if (session?.user?.isSubscriber === false)
res.status(401).json({
return res.status(401).json({
response:
"You are not a subscriber, feel free to reach out to us at support@linkwarden.app in case of any issues.",
});
+1 -1
View File
@@ -10,7 +10,7 @@ export default async function links(req: NextApiRequest, res: NextApiResponse) {
if (!session?.user?.id) {
return res.status(401).json({ response: "You must be logged in." });
} else if (session?.user?.isSubscriber === false)
res.status(401).json({
return res.status(401).json({
response:
"You are not a subscriber, feel free to reach out to us at support@linkwarden.app in case of any issues.",
});
+9 -17
View File
@@ -1,18 +1,10 @@
// For future...
// import { getToken } from "next-auth/jwt";
import { NextApiRequest, NextApiResponse } from "next";
import { getToken } from "next-auth/jwt";
// export default async (req, res) => {
// // If you don't have NEXTAUTH_SECRET set, you will have to pass your secret as `secret` to `getToken`
// console.log({ req });
// const token = await getToken({ req, raw: true });
// if (token) {
// // Signed in
// console.log("JSON Web Token", JSON.stringify(token, null, 2));
// } else {
// // Not Signed in
// res.status(401);
// }
// res.end();
// };
export {};
export default async (req: NextApiRequest, res: NextApiResponse) => {
// if using `NEXTAUTH_SECRET` env variable, we detect it, and you won't actually need to `secret`
// const token = await getToken({ req })
const token = await getToken({ req });
console.log("JSON Web Token", token);
res.end();
};
+1 -1
View File
@@ -12,7 +12,7 @@ export default async function links(req: NextApiRequest, res: NextApiResponse) {
if (!session?.user?.id) {
return res.status(401).json({ response: "You must be logged in." });
} else if (session?.user?.isSubscriber === false)
res.status(401).json({
return res.status(401).json({
response:
"You are not a subscriber, feel free to reach out to us at support@linkwarden.app in case of any issues.",
});
+1 -1
View File
@@ -11,7 +11,7 @@ export default async function links(req: NextApiRequest, res: NextApiResponse) {
if (!session?.user?.id) {
return res.status(401).json({ response: "You must be logged in." });
} else if (session?.user?.isSubscriber === false)
res.status(401).json({
return res.status(401).json({
response:
"You are not a subscriber, feel free to reach out to us at support@linkwarden.app in case of any issues.",
});
+7 -2
View File
@@ -4,14 +4,19 @@ import { authOptions } from "@/pages/api/v1/auth/[...nextauth]";
import getLinks from "@/lib/api/controllers/links/getLinks";
import postLink from "@/lib/api/controllers/links/postLink";
import { LinkRequestQuery } from "@/types/global";
import { getToken } from "next-auth/jwt";
export default async function links(req: NextApiRequest, res: NextApiResponse) {
const session = await getServerSession(req, res, authOptions);
const token = await getToken({ req });
// const session = await getServerSession(req, res, authOptions);
return res.status(200).json(token);
if (!session?.user?.id) {
return res.status(401).json({ response: "You must be logged in." });
} else if (session?.user?.isSubscriber === false)
res.status(401).json({
return res.status(401).json({
response:
"You are not a subscriber, feel free to reach out to us at support@linkwarden.app in case of any issues.",
});
+1 -1
View File
@@ -20,7 +20,7 @@ export default async function users(req: NextApiRequest, res: NextApiResponse) {
if (!session?.user.id) {
return res.status(401).json({ response: "You must be logged in." });
} else if (session?.user?.isSubscriber === false)
res.status(401).json({
return res.status(401).json({
response:
"You are not a subscriber, feel free to reach out to us at support@linkwarden.app in case of any issues.",
});
+1 -1
View File
@@ -9,7 +9,7 @@ export default async function tags(req: NextApiRequest, res: NextApiResponse) {
if (!session?.user?.username) {
return res.status(401).json({ response: "You must be logged in." });
} else if (session?.user?.isSubscriber === false)
res.status(401).json({
return res.status(401).json({
response:
"You are not a subscriber, feel free to reach out to us at support@linkwarden.app in case of any issues.",
});
+1 -1
View File
@@ -9,7 +9,7 @@ export default async function tags(req: NextApiRequest, res: NextApiResponse) {
if (!session?.user?.username) {
return res.status(401).json({ response: "You must be logged in." });
} else if (session?.user?.isSubscriber === false)
res.status(401).json({
return res.status(401).json({
response:
"You are not a subscriber, feel free to reach out to us at support@linkwarden.app in case of any issues.",
});
+1 -1
View File
@@ -26,7 +26,7 @@ export default async function users(req: NextApiRequest, res: NextApiResponse) {
if (!userId) {
return res.status(401).json({ response: "You must be logged in." });
} else if (session?.user?.isSubscriber === false)
res.status(401).json({
return res.status(401).json({
response:
"You are not a subscriber, feel free to reach out to us at support@linkwarden.app in case of any issues.",
});
+62
View File
@@ -0,0 +1,62 @@
// TODO - Stripe webhooks for user cancellation...
// import { NextApiRequest, NextApiResponse } from "next";
// import Stripe from "stripe";
// import { buffer } from "micro";
// import { prisma } from "@/lib/api/db";
// const stripe = new Stripe(process.env.STRIPE_SECRET_KEY as string, {
// apiVersion: "2022-11-15",
// });
// const endpointSecret =
// "whsec_7c144bcd924041257e3d83eac1e2fba9c8a938b240fd8adb1c902f079e0cdee0";
// export const config = {
// api: {
// bodyParser: false,
// },
// };
// export default async function handler(
// req: NextApiRequest,
// res: NextApiResponse
// ) {
// if (req.method === "POST") {
// const buf = await buffer(req);
// const sig = req.headers["stripe-signature"];
// let event: Stripe.Event;
// try {
// if (!sig) throw new Error("Stripe Signature is not defined.");
// event = stripe.webhooks.constructEvent(buf, sig, endpointSecret);
// } catch (err) {
// console.log(err);
// return res.status(400).send({ response: "Error..." });
// }
// // Handle the event
// switch (event.type) {
// case "customer.subscription.deleted":
// const customerSubscriptionDeleted = event.data.object as any;
// // Revoke all the token under the customers email...
// const customer = (await stripe.customers.retrieve(
// customerSubscriptionDeleted.customer
// )) as any;
// if (customer?.email) {
// // Revoke tokens inside the database
// }
// break;
// // ... handle other event types
// default:
// console.log(`Unhandled event type ${event.type}`);
// }
// return res.status(200).send({ response: "Done!" });
// }
// }