mirror of
https://github.com/fergalmoran/radio-otherway.git
synced 2025-12-22 09:50:29 +00:00
Firestore auth working (ish)
This commit is contained in:
4
.env
4
.env
@@ -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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
|
||||
|
||||
2
.github/workflows/scheduler-cache-events.yml
vendored
2
.github/workflows/scheduler-cache-events.yml
vendored
@@ -1,7 +1,7 @@
|
||||
name:
|
||||
Cache Jobs
|
||||
on:
|
||||
# Triggers the workflow every 5 minutes
|
||||
# Every 5 minutes
|
||||
schedule:
|
||||
- cron: "*/5 * * * *"
|
||||
jobs:
|
||||
|
||||
1
.gitignore
vendored
1
.gitignore
vendored
@@ -36,3 +36,4 @@ yarn-error.log*
|
||||
next-env.d.ts
|
||||
|
||||
.private/
|
||||
radio-otherway-service-account.json
|
||||
|
||||
@@ -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",
|
||||
|
||||
@@ -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">
|
||||
@@ -24,22 +24,22 @@ export default async function Home() {
|
||||
<div className="px-4 mt-4 overflow-x-auto">
|
||||
<table className="table w-full">
|
||||
<thead>
|
||||
<tr>
|
||||
<th>When</th>
|
||||
<th>Who</th>
|
||||
<th />
|
||||
</tr>
|
||||
<tr>
|
||||
<th>When</th>
|
||||
<th>Who</th>
|
||||
<th/>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
{results.events.map((r: any) => (
|
||||
<tr key={r.id}>
|
||||
<td>{new Date(r.start.dateTime).toLocaleString("en-IE")}</td>
|
||||
<td>{r.summary}</td>
|
||||
<td>
|
||||
<button className="btn">Remind me</button>
|
||||
</td>
|
||||
</tr>
|
||||
))}
|
||||
{results.map((r: any) => (
|
||||
<tr key={r.id}>
|
||||
<td>{new Date(r.date).toLocaleString("en-IE")}</td>
|
||||
<td>{r.title}</td>
|
||||
<td>
|
||||
<button className="btn">Remind me</button>
|
||||
</td>
|
||||
</tr>
|
||||
))}
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
|
||||
@@ -1,16 +1,35 @@
|
||||
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),
|
||||
providers: [
|
||||
GoogleProvider({
|
||||
clientId: process.env.GOOGLE_CLIENT_ID,
|
||||
clientSecret: process.env.GOOGLE_CLIENT_SECRET,
|
||||
}),
|
||||
],
|
||||
// adapter: PrismaAdapter(prisma),
|
||||
// adapter: FirebaseAdapter({db, ...firestoreFunctions}),
|
||||
adapter: FirestoreAdapter(firebaseConfig),
|
||||
providers: [
|
||||
GoogleProvider({
|
||||
clientId: process.env.GOOGLE_CLIENT_ID, clientSecret: process.env.GOOGLE_CLIENT_SECRET,
|
||||
}),
|
||||
],
|
||||
};
|
||||
|
||||
export default NextAuth(authOptions);
|
||||
|
||||
6
src/pages/api/debug/index.ts
Normal file
6
src/pages/api/debug/index.ts
Normal 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;
|
||||
@@ -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();
|
||||
}
|
||||
);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user