aefaeff
This commit is contained in:
parent
f8af4a5df7
commit
0484c1dfc7
@ -43,7 +43,7 @@ export const sites = pgTable("sites", {
|
||||
text_color_hex: varchar("text_color_hex", { length: 6 }).default('ffffff').notNull(),
|
||||
title: text("title").default("The best blog in the world!"),
|
||||
subtitle: text("subtitle").default("Some extra info about the best blog in the world!"),
|
||||
domain: text("domain").default("").unique(),
|
||||
domain: text("domain").default(null).unique(),
|
||||
use_freebie: boolean("send_freebie").default(false),
|
||||
freebie_name: text("freebie_name").default(""),
|
||||
freebie_url: text("freebie_url").default(""),
|
||||
|
@ -29,55 +29,62 @@ export const authRoutes = (fastify, _, done) => {
|
||||
|
||||
const [existing_user] = await db.select().from(usersTable).where(eq(usersTable.google_id, user_info.id));
|
||||
let user;
|
||||
await db.transaction(async tx => {
|
||||
try {
|
||||
if (existing_user) {
|
||||
user = existing_user;
|
||||
|
||||
if (existing_user) {
|
||||
user = existing_user;
|
||||
if (token.refresh_token) {
|
||||
await tx.update(sessions).set({
|
||||
refresh_token: token.refresh_token
|
||||
}).where(eq(sessions.user_id, user.id));
|
||||
}
|
||||
}
|
||||
else {
|
||||
const customer = await createCustomer(user_info.email, user_info.name);
|
||||
[user] = await tx.insert(usersTable).values({
|
||||
name: user_info.name,
|
||||
google_id: user_info.id,
|
||||
email: user_info.email,
|
||||
channel_id: channel_info.id,
|
||||
uploads_playlist_id: channel_info.contentDetails.relatedPlaylists.uploads,
|
||||
stripe_id: customer.id
|
||||
}).returning({ id: usersTable.id });
|
||||
|
||||
if (token.refresh_token) {
|
||||
await db.update(sessions).set({
|
||||
refresh_token: token.refresh_token
|
||||
}).where(eq(sessions.user_id, user.id));
|
||||
}
|
||||
}
|
||||
else {
|
||||
const customer = await createCustomer(user_info.email, user_info.name);
|
||||
[user] = await db.insert(usersTable).values({
|
||||
name: user_info.name,
|
||||
google_id: user_info.id,
|
||||
email: user_info.email,
|
||||
channel_id: channel_info.id,
|
||||
uploads_playlist_id: channel_info.contentDetails.relatedPlaylists.uploads,
|
||||
stripe_id: customer.id
|
||||
}).returning({ id: usersTable.id });
|
||||
await tx.insert(sites).values({
|
||||
name: `${user_info.name}'s Website`,
|
||||
user_id: user.id
|
||||
});
|
||||
|
||||
await db.insert(sites).values({
|
||||
name: `${user_info.name}'s Website`,
|
||||
user_id: user.id
|
||||
});
|
||||
if (user.length == 0) {
|
||||
response.status(400).send({ success: false, message: "Problem when creating user account" });
|
||||
return;
|
||||
}
|
||||
}
|
||||
let session_id;
|
||||
if (token.refresh_token) {
|
||||
let session_info = await createSession(user.id, {
|
||||
access_token: token.access_token,
|
||||
refresh_token: token.refresh_token,
|
||||
expires_at: new Date(token.expires_at)
|
||||
}, tx);
|
||||
|
||||
if (user.length == 0) {
|
||||
response.status(400).send({ success: false, message: "Problem when creating user account" });
|
||||
session_id = session_info.session_id;
|
||||
}
|
||||
else {
|
||||
let session_info = await tx.select().from(users).leftJoin(sessions, eq(sessions.user_id, users.id)).where(eq(users.google_id, user_info.id));
|
||||
if (session_info.length == 0) {
|
||||
response.status(400).send({ success: false, message: "Problem when creating user account" });
|
||||
return;
|
||||
}
|
||||
session_id = session_info[0].sessions.id
|
||||
}
|
||||
} catch (e) {
|
||||
console.log(e);
|
||||
await tx.rollback();
|
||||
return;
|
||||
}
|
||||
}
|
||||
let session_id;
|
||||
if (token.refresh_token) {
|
||||
let session_info = await createSession(user.id, {
|
||||
access_token: token.access_token,
|
||||
refresh_token: token.refresh_token,
|
||||
expires_at: new Date(token.expires_at)
|
||||
});
|
||||
|
||||
session_id = session_info.session_id;
|
||||
}
|
||||
else {
|
||||
let session_info = await db.select().from(users).leftJoin(sessions, eq(sessions.user_id, users.id)).where(eq(users.google_id, user_info.id));
|
||||
if (session_info.length == 0) {
|
||||
response.status(400).send({ success: false, message: "Problem when creating user account" });
|
||||
return;
|
||||
}
|
||||
session_id = session_info[0].sessions.id
|
||||
}
|
||||
})
|
||||
|
||||
// response.setCookie("token", session_id, {
|
||||
// httpOnly: false,
|
||||
|
@ -1,6 +1,6 @@
|
||||
/** @typedef {import("fastify").FastifyInstance} FastifyInstance */
|
||||
|
||||
import { desc, eq, getTableColumns, sql } from "drizzle-orm";
|
||||
import { and, desc, eq, getTableColumns, sql } from "drizzle-orm";
|
||||
import { db } from "../db/index.js";
|
||||
import { articles, articles as articlesTable, signups as signupsTable, sites, users } from "../db/schemas.js";
|
||||
import { authMiddleware, authMiddlewareFn } from "../modules/middleware.js";
|
||||
@ -147,6 +147,37 @@ export const dashboardRoutes = (fastify, _, done) => {
|
||||
return;
|
||||
});
|
||||
|
||||
fastify.delete("/article", {
|
||||
schema: {
|
||||
querystring: {
|
||||
type: "object",
|
||||
properties: {
|
||||
id: {
|
||||
type: "string"
|
||||
}
|
||||
},
|
||||
required: ["id"]
|
||||
}
|
||||
}
|
||||
}, async (req, reply) => {
|
||||
const [article] = await db.select(getTableColumns(articles)).from(articles).leftJoin(sites, eq(sites.id, articles.site_id)).where(and(eq(sites.user_id, req.session.user_id), eq(articles.id, req.query.id)));
|
||||
|
||||
if (!article) {
|
||||
reply.status(404).send({
|
||||
success: false,
|
||||
message: "This article does not exist."
|
||||
});
|
||||
return;
|
||||
}
|
||||
|
||||
await db.delete(articles).where(eq(articles.id, article.id));
|
||||
|
||||
reply.send({
|
||||
success: true
|
||||
});
|
||||
return;
|
||||
});
|
||||
|
||||
fastify.post("/create", {
|
||||
schema: {
|
||||
body: {
|
||||
|
@ -12,7 +12,7 @@ const envSchema = z.object({
|
||||
GOOGLE_CLIENT_ID: z.string(),
|
||||
GOOGLE_SECRET: z.string(),
|
||||
OPENAI_TOKEN: z.string(),
|
||||
CERTS_URL: z.string()
|
||||
CERTS_URL: z.string().nullable().default(null)
|
||||
});
|
||||
|
||||
export const env = envSchema.parse(process.env);
|
||||
|
@ -12,9 +12,9 @@ import { sessions } from "../db/schemas.js";
|
||||
export async function createSession(user_id, {
|
||||
access_token,
|
||||
refresh_token,
|
||||
expires_at
|
||||
}) {
|
||||
const [existing_session] = await db.select().from(sessions).where(eq(sessions.user_id, user_id));
|
||||
expires_at,
|
||||
}, tx = db) {
|
||||
const [existing_session] = await tx.select().from(sessions).where(eq(sessions.user_id, user_id));
|
||||
|
||||
if(existing_session) {
|
||||
return {
|
||||
@ -22,7 +22,7 @@ export async function createSession(user_id, {
|
||||
}
|
||||
}
|
||||
|
||||
const token = await db.insert(sessions).values({
|
||||
const token = await tx.insert(sessions).values({
|
||||
user_id,
|
||||
access_token: access_token,
|
||||
refresh_token: refresh_token,
|
||||
|
Loading…
Reference in New Issue
Block a user