Firestore auth working (ish)

This commit is contained in:
Fergal Moran
2023-02-22 07:13:37 +00:00
parent 18907f4304
commit 7f462fb014
9 changed files with 1456 additions and 51 deletions

4
.env
View File

@@ -3,6 +3,10 @@ QSTASH_CURRENT_SIGNING_KEY=khs3lpVBv1QtV/L9MTdXlcnoI8tTlg0aDfrFz+o8utA=
DATABASE_URL="postgresql://postgres:hackme@localhost:5432/radio-otherway?schema=public"
#auth
FIREBASE_PROJECT_ID=108334318546849571774
FIREBASE_CLIENT_EMAIL=firebase-adminsdk-30mf4@radio-otherway.iam.gserviceaccount.com
FIREBASE_PRIVATE_KEY="-----BEGIN PRIVATE KEY-----\nMIIEvgIBADANBgkqhkiG9w0BAQEFAASCBKgwggSkAgEAAoIBAQDCCUpIHFRRlpmU\nj/4q681t5J3Z+p7NFnAKY4ze+Jn/9nN2eNHZOonHJfRJcKoGYOySOtkG27flU1P6\nrV8uoFGGeBVNMXb48qouvbBHkjps8lQi5+uMVuiKJFDa/VBLJ2pVpLEGd56Uy0Au\nF1e00yoQdtVAnuPWUthRM3U/FgaILaOh4tkf8Kgk8/d+IGlkYeQYQGQZQsx64LfH\nA0O+yXOmOa8y9HHoeHvNXHFdHcbZXAlgQ4Qf+A9PshCGvJL0jRQMvk42dBzGqhI4\ngbcTsSvjGHCGLLRFqSj4cTUP2307QsSTPmksIAEmssxahGTzThnpTWSVRMijUwho\nHU+x8zIZAgMBAAECggEAC6CROMioeCp38dzpDvsKAy5NE+KpQRfkRzMXnhrekOXc\nnbpNX4uFoGSSrWiYv6tvhwRgvJZOVZR3NqZ3Std6MH53TvoKVjj7CrRSNmUO/Df5\n47eVuAH94Ef0fRLrN1MEKQqmkwEjBGk443+Blskv6ZmoBhMfYFie3srLGVMsDrKM\nC3hESO8LGqQo6DiZJTLHQIiLR8WcT3nf40n955dexGxj5Itfpe9N+E54xiXgSGzb\nJ7EHYZ3jhtvvoQkw5YBJ0nVu8sALdtIvjWl9Wv14weTKnnnDi8IIAtfi1FBr/Nii\ntLME7UIPI0+/HPuWKQM/RTfooEhKUShFDNTovw+0yQKBgQDkUXuMC6DYefpKn/EK\nmZPP7iBQd0VQGaHfZNhxbypRg+ntQiORMLseLqn4aAeOhRd5Li5v4OY3JvlgQskr\nBxWqsgQpRqm8NnoG0tP4HsZI5SPk4ibnQZYbAaa8dnahbSxIxd19sCYf34huMg83\nLC192Na+7+Xegb3moP8ufjDq5QKBgQDZj8RDRwF8kzgcP2DgqzG98gM7lSfMNNzj\nlb+07ZLKJSXVJ0MjUZV/zZ/r6uhoszFT8CUF/lfbTfITVy6LuXT6gnaxVl+ennyH\nJfHhpfn+ccoNub+X1TMyJqUTOzcOVERh92YM8JBZXyPdaOSS8QbiwwVDtjzm+RiG\nQcI7lUVTJQKBgQDX583jMyPZUg/D/dec5HoIyPA552/ePT7714tuSWdFSm8t87ta\nkzB/bDVDOGzc8zKtX2R+W7iYMvzjcIR3ce2lS03wEmh0GTfvt/LG0aNET5tP2CRd\nz4G47CjWU1f/cxPLhYDcWHTU8zc6rZAB5n7mYOVCDe3cKeiAbYKiXqa3mQKBgFIE\n7CW86CeRzM6BakFo6NjGG0fkJFvM9hVqiBpqkjNZK9ke8yWmhSjoWUj0h2epXohZ\neWu4BmEsEn4OGQMeCKbEdoDGokfHUgUVXgoGq6esOFNSWpOgEavve74zTb8+L4WL\nYlKwgore3kODXuCyszjb8ukjE/SzpfY/Zj1WOgttAoGBAKUh4wfHynLok4MCjyGR\nK8axvVbTitb5WI3GPtK7RHg4UV/GHUfm+i99Fk5qYq9LszjO6MCWQ0VNMBZYZtTr\nwYbpQQAxX4AL4dJpMFOYbYNzv1sGe6/0w4xlvIC90ajgJEnNPyH4iSrHK3DFjckv\nFgMUcGqHCWcyLBaVt8f5nCMf\n-----END PRIVATE KEY-----\n"
GOOGLE_APPLICATION_CREDENTIALS=radio-otherway-service-account.json
NEXTAUTH_URL=https://otherway.dev.fergl.ie:3000
GOOGLE_CLIENT_ID=47147490249-adhc8cbko4nvigrfoodo17oa3qfsg4pd.apps.googleusercontent.com
GOOGLE_CLIENT_SECRET=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

View File

@@ -1,7 +1,7 @@
name:
Cache Jobs
on:
# Triggers the workflow every 5 minutes
# Every 5 minutes
schedule:
- cron: "*/5 * * * *"
jobs:

1
.gitignore vendored
View File

@@ -36,3 +36,4 @@ yarn-error.log*
next-env.d.ts
.private/
radio-otherway-service-account.json

View File

@@ -10,6 +10,7 @@
"lint": "next lint"
},
"dependencies": {
"@next-auth/firebase-adapter": "^2.0.0",
"@next-auth/prisma-adapter": "^1.0.5",
"@next/font": "13.1.5",
"@prisma/client": "^4.9.0",
@@ -20,6 +21,8 @@
"daisyui": "^2.49.0",
"eslint": "8.32.0",
"eslint-config-next": "13.1.5",
"firebase": "^9.17.1",
"firebase-admin": "^11.5.0",
"next": "13.1.5",
"next-auth": "^4.19.0",
"react": "18.2.0",

View File

@@ -7,7 +7,7 @@ const getData = async () => {
export default async function Home() {
const results = await getData();
return results.events.length === 0 && results.message ? (
return results.message ? (
<div className="min-h-screen hero bg-base-200">
<div className="text-center hero-content">
<div className="max-w-md">
@@ -27,14 +27,14 @@ export default async function Home() {
<tr>
<th>When</th>
<th>Who</th>
<th />
<th/>
</tr>
</thead>
<tbody>
{results.events.map((r: any) => (
{results.map((r: any) => (
<tr key={r.id}>
<td>{new Date(r.start.dateTime).toLocaleString("en-IE")}</td>
<td>{r.summary}</td>
<td>{new Date(r.date).toLocaleString("en-IE")}</td>
<td>{r.title}</td>
<td>
<button className="btn">Remind me</button>
</td>

View File

@@ -1,14 +1,33 @@
import NextAuth from "next-auth";
import GoogleProvider from "next-auth/providers/google";
import prisma from "@/lib/prismadb";
import {PrismaAdapter} from "@next-auth/prisma-adapter";
// import {FirebaseAdapter} from "@next-auth/firebase-adapter"
import {FirestoreAdapter} from "@next-auth/firebase-adapter";
import {initializeApp, getApp, getApps} from "firebase/app";
import {
getFirestore
} from "firebase/firestore";
import * as firestoreFunctions from 'firebase/firestore'
import NextAuth from "next-auth";
const firebaseConfig = {
apiKey: "AIzaSyDtQVcCocVj-baMyBNxhV3Fbi7YXeyTXXE",
authDomain: "radio-otherway.firebaseapp.com",
projectId: "radio-otherway",
storageBucket: "radio-otherway.appspot.com",
messagingSenderId: "47147490249",
appId: "1:47147490249:web:a84515b3ce1c481826e618",
measurementId: "G-12YB78EZM4"
};
const app = !getApps().length ? initializeApp(firebaseConfig) : getApp();
const db = getFirestore();
export const authOptions = {
adapter: PrismaAdapter(prisma),
// adapter: PrismaAdapter(prisma),
// adapter: FirebaseAdapter({db, ...firestoreFunctions}),
adapter: FirestoreAdapter(firebaseConfig),
providers: [
GoogleProvider({
clientId: process.env.GOOGLE_CLIENT_ID,
clientSecret: process.env.GOOGLE_CLIENT_SECRET,
clientId: process.env.GOOGLE_CLIENT_ID, clientSecret: process.env.GOOGLE_CLIENT_SECRET,
}),
],
};

View File

@@ -0,0 +1,6 @@
import {NextApiRequest, NextApiResponse} from "next";
const handler = async (req: NextApiRequest, res: NextApiResponse) => {
res.status(200).json({hello: process.env});
};
export default handler;

View File

@@ -33,19 +33,26 @@ export default function handler(req: NextApiRequest, res: NextApiResponse) {
},
(error: any, result: any) => {
if (error) {
res.send(JSON.stringify({ error: error }));
res.status(200).json({ error: error });
} else {
if (result.data.items.length) {
res.send(JSON.stringify({ events: result.data.items }));
} else {
res.send(
JSON.stringify({
events: [],
message: "No upcoming events.",
res.status(200).json(
result.data.items.map((r) => {
return {
id: r.id,
title: r.summary,
date: r.start.dateTime,
};
})
);
} else {
res.status(200).json({
events: [],
message: "No upcoming events.",
});
}
}
res.end();
}
);
}

1399
yarn.lock

File diff suppressed because it is too large Load Diff