wip
This commit is contained in:
@@ -1,31 +1,9 @@
|
||||
import { COOKIE_OPTIONS, googleGsc } from '@openpanel/auth';
|
||||
import { db } from '@openpanel/db';
|
||||
import { googleGsc } from '@openpanel/auth';
|
||||
import { db, encrypt } from '@openpanel/db';
|
||||
import type { FastifyReply, FastifyRequest } from 'fastify';
|
||||
import { z } from 'zod';
|
||||
import { LogError } from '@/utils/errors';
|
||||
|
||||
export async function gscInitiate(req: FastifyRequest, reply: FastifyReply) {
|
||||
const schema = z.object({
|
||||
state: z.string(),
|
||||
code_verifier: z.string(),
|
||||
project_id: z.string(),
|
||||
redirect: z.string().url(),
|
||||
});
|
||||
|
||||
const query = schema.safeParse(req.query);
|
||||
if (!query.success) {
|
||||
return reply.status(400).send({ error: 'Invalid parameters' });
|
||||
}
|
||||
|
||||
const { state, code_verifier, project_id, redirect } = query.data;
|
||||
|
||||
reply.setCookie('gsc_oauth_state', state, { maxAge: 60 * 10, ...COOKIE_OPTIONS });
|
||||
reply.setCookie('gsc_code_verifier', code_verifier, { maxAge: 60 * 10, ...COOKIE_OPTIONS });
|
||||
reply.setCookie('gsc_project_id', project_id, { maxAge: 60 * 10, ...COOKIE_OPTIONS });
|
||||
|
||||
return reply.redirect(redirect);
|
||||
}
|
||||
|
||||
export async function gscGoogleCallback(
|
||||
req: FastifyRequest,
|
||||
reply: FastifyReply
|
||||
@@ -89,14 +67,14 @@ export async function gscGoogleCallback(
|
||||
where: { projectId },
|
||||
create: {
|
||||
projectId,
|
||||
accessToken,
|
||||
refreshToken,
|
||||
accessToken: encrypt(accessToken),
|
||||
refreshToken: encrypt(refreshToken),
|
||||
accessTokenExpiresAt,
|
||||
siteUrl: '',
|
||||
},
|
||||
update: {
|
||||
accessToken,
|
||||
refreshToken,
|
||||
accessToken: encrypt(accessToken),
|
||||
refreshToken: encrypt(refreshToken),
|
||||
accessTokenExpiresAt,
|
||||
lastSyncStatus: null,
|
||||
lastSyncError: null,
|
||||
|
||||
@@ -36,13 +36,13 @@ import { timestampHook } from './hooks/timestamp.hook';
|
||||
import aiRouter from './routes/ai.router';
|
||||
import eventRouter from './routes/event.router';
|
||||
import exportRouter from './routes/export.router';
|
||||
import gscCallbackRouter from './routes/gsc-callback.router';
|
||||
import importRouter from './routes/import.router';
|
||||
import insightsRouter from './routes/insights.router';
|
||||
import liveRouter from './routes/live.router';
|
||||
import manageRouter from './routes/manage.router';
|
||||
import miscRouter from './routes/misc.router';
|
||||
import oauthRouter from './routes/oauth-callback.router';
|
||||
import gscCallbackRouter from './routes/gsc-callback.router';
|
||||
import profileRouter from './routes/profile.router';
|
||||
import trackRouter from './routes/track.router';
|
||||
import webhookRouter from './routes/webhook.router';
|
||||
|
||||
@@ -1,12 +1,7 @@
|
||||
import { gscGoogleCallback, gscInitiate } from '@/controllers/gsc-oauth-callback.controller';
|
||||
import { gscGoogleCallback } from '@/controllers/gsc-oauth-callback.controller';
|
||||
import type { FastifyPluginCallback } from 'fastify';
|
||||
|
||||
const router: FastifyPluginCallback = async (fastify) => {
|
||||
fastify.route({
|
||||
method: 'GET',
|
||||
url: '/initiate',
|
||||
handler: gscInitiate,
|
||||
});
|
||||
fastify.route({
|
||||
method: 'GET',
|
||||
url: '/callback',
|
||||
|
||||
Reference in New Issue
Block a user