diff --git a/scripts/backend-development/docker-compose.yaml b/scripts/backend-development/docker-compose.yaml index 65a65e73..0445cf34 100644 --- a/scripts/backend-development/docker-compose.yaml +++ b/scripts/backend-development/docker-compose.yaml @@ -9,6 +9,7 @@ services: environment: POSTGRES_USER: postgres POSTGRES_PASSWORD: postgres + POSTGRES_DB: postgres healthcheck: test: ["CMD", "pg_isready", "-U", "postgres"] interval: 2s diff --git a/scripts/frontend-development/docker-compose.yaml b/scripts/frontend-development/docker-compose.yaml index ef0f3489..e34c2d8f 100644 --- a/scripts/frontend-development/docker-compose.yaml +++ b/scripts/frontend-development/docker-compose.yaml @@ -16,6 +16,7 @@ services: environment: POSTGRES_USER: postgres POSTGRES_PASSWORD: postgres + POSTGRES_DB: ocgpt_website healthcheck: test: ["CMD", "pg_isready", "-U", "postgres"] interval: 2s diff --git a/website/README.md b/website/README.md index 7d57ceaa..2b84679c 100644 --- a/website/README.md +++ b/website/README.md @@ -63,6 +63,14 @@ If you're doing active development we suggest the following workflow: navigate to `http://localhost:1080`. Check the email listed and click the log in link. You're now logged in and authenticated. +### Using debug user credentials + +If you want to quickly test the website, you can use the debug user credentials workflow: + +1. Run `DEBUG_FAKE_USERS=true npm run dev` to start the website. +1. Use the `Login` button in the top right to go to the login page. +1. You should see a section for debug credentials. Enter any username you wish, you will be logged in as that user. + ## Code Layout ### React Code diff --git a/website/package-lock.json b/website/package-lock.json index 45063104..7ad30068 100644 --- a/website/package-lock.json +++ b/website/package-lock.json @@ -19,6 +19,7 @@ "@tailwindcss/forms": "^0.5.3", "autoprefixer": "^10.4.13", "axios": "^1.2.1", + "boolean": "^3.2.0", "clsx": "^1.2.1", "eslint": "8.29.0", "eslint-config-next": "13.0.6", @@ -2747,6 +2748,11 @@ "node": ">=8" } }, + "node_modules/boolean": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/boolean/-/boolean-3.2.0.tgz", + "integrity": "sha512-d0II/GO9uf9lfUHH2BQsjxzRJZBdsjgsBiW4BvhWk/3qoKwQFjIDVN19PfX8F2D/r9PCMTtLWjYVCFrpeYUzsw==" + }, "node_modules/brace-expansion": { "version": "1.1.11", "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", @@ -8261,6 +8267,11 @@ "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.2.0.tgz", "integrity": "sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==" }, + "boolean": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/boolean/-/boolean-3.2.0.tgz", + "integrity": "sha512-d0II/GO9uf9lfUHH2BQsjxzRJZBdsjgsBiW4BvhWk/3qoKwQFjIDVN19PfX8F2D/r9PCMTtLWjYVCFrpeYUzsw==" + }, "brace-expansion": { "version": "1.1.11", "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", diff --git a/website/package.json b/website/package.json index bfec87c7..2c2e6d29 100644 --- a/website/package.json +++ b/website/package.json @@ -21,6 +21,7 @@ "@tailwindcss/forms": "^0.5.3", "autoprefixer": "^10.4.13", "axios": "^1.2.1", + "boolean": "^3.2.0", "clsx": "^1.2.1", "eslint": "8.29.0", "eslint-config-next": "13.0.6", diff --git a/website/src/components/Avatar.tsx b/website/src/components/Avatar.tsx index 26bdec0b..ca3b307b 100644 --- a/website/src/components/Avatar.tsx +++ b/website/src/components/Avatar.tsx @@ -12,7 +12,8 @@ export function Avatar() { return <>>; } if (session && session.user) { - const email = session.user.email; + console.log(session.user); + const displayName = session.user.name || session.user.email; const accountOptions = [ { name: "Account Settings", @@ -35,7 +36,7 @@ export function Avatar() { height="40" className="rounded-full" > -
{email}
+{displayName}
{/* Will be changed to username once it is implemented */} diff --git a/website/src/pages/api/auth/[...nextauth].ts b/website/src/pages/api/auth/[...nextauth].ts index f823ed41..0ed0f1a1 100644 --- a/website/src/pages/api/auth/[...nextauth].ts +++ b/website/src/pages/api/auth/[...nextauth].ts @@ -2,8 +2,10 @@ import type { AuthOptions } from "next-auth"; import NextAuth from "next-auth"; import DiscordProvider from "next-auth/providers/discord"; import EmailProvider from "next-auth/providers/email"; +import CredentialsProvider from "next-auth/providers/credentials"; import { PrismaAdapter } from "@next-auth/prisma-adapter"; +import { boolean } from "boolean"; import prisma from "src/lib/prismadb"; const providers = []; @@ -32,6 +34,23 @@ if (process.env.DISCORD_CLIENT_ID) { ); } +if (boolean(process.env.DEBUG_FAKE_USERS)) { + providers.push( + CredentialsProvider({ + name: "Debug Credentials", + credentials: { + username: { label: "Username", type: "text" }, + }, + async authorize(credentials) { + return { + id: credentials.username, + name: credentials.username, + }; + }, + }) + ); +} + export const authOptions: AuthOptions = { // Ensure we can store user data in a database. adapter: PrismaAdapter(prisma), diff --git a/website/src/pages/auth/signup.tsx b/website/src/pages/auth/signup.tsx index 4afc3102..f6b58273 100644 --- a/website/src/pages/auth/signup.tsx +++ b/website/src/pages/auth/signup.tsx @@ -1,6 +1,6 @@ import { Button, Input, Stack } from "@chakra-ui/react"; import Head from "next/head"; -import { FaDiscord, FaEnvelope, FaGithub } from "react-icons/fa"; +import { FaDiscord, FaEnvelope, FaBug, FaGithub } from "react-icons/fa"; import { getCsrfToken, getProviders, signIn } from "next-auth/react"; import { useRef } from "react"; import Link from "next/link"; @@ -8,12 +8,18 @@ import Link from "next/link"; import { AuthLayout } from "src/components/AuthLayout"; export default function Signin({ csrfToken, providers }) { - const { discord, email, github } = providers; + const { discord, email, github, credentials } = providers; const emailEl = useRef(null); const signinWithEmail = () => { signIn(email.id, { callbackUrl: "/", email: emailEl.current.value }); }; + const debugUsernameEl = useRef(null); + function signinWithDebugCredentials(ev: React.FormEvent) { + ev.preventDefault(); + signIn(credentials.id, { callbackUrl: "/", username: debugUsernameEl.current.value }); + } + return ( <> @@ -21,7 +27,18 @@ export default function Signin({ csrfToken, providers }) {