Skip to content

Commit

Permalink
feat: authjs setup
Browse files Browse the repository at this point in the history
  • Loading branch information
pratham-ak2004 committed Aug 14, 2024
1 parent ee408ee commit 4f057aa
Show file tree
Hide file tree
Showing 10 changed files with 69 additions and 14 deletions.
5 changes: 5 additions & 0 deletions .env.example
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
DATABASE_URL=""
AUTH_SECRET=""
HOST_STATUS=""
AUTH_GOOGLE_ID=""
AUTH_GOOGLE_SECRET=""
2 changes: 2 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -9,3 +9,5 @@ node_modules
!.env.example
vite.config.js.timestamp-*
vite.config.ts.timestamp-*
google-credentials.
.vscode
5 changes: 4 additions & 1 deletion package.json
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,10 @@
"check": "svelte-kit sync && svelte-check --tsconfig ./tsconfig.json",
"check:watch": "svelte-kit sync && svelte-check --tsconfig ./tsconfig.json --watch",
"lint": "prettier --plugin-search-dir . --check . && eslint .",
"format": "prettier --plugin-search-dir . --write ."
"format": "prettier --plugin-search-dir . --write .",
"db:studio": "prisma studio",
"db:push": "prisma db push",
"db:generate": "prisma generate"
},
"devDependencies": {
"@sveltejs/adapter-auto": "^2.1.0",
Expand Down
6 changes: 3 additions & 3 deletions prisma/schema.prisma
Original file line number Diff line number Diff line change
Expand Up @@ -10,10 +10,10 @@ generator client {

datasource db {
//Local database
provider = "postgresql"
// provider = "postgresql"
// Prod
// provider = "cockroachdb"
provider = "cockroachdb"
url = env("DATABASE_URL")
}

Expand Down Expand Up @@ -99,4 +99,4 @@ model Faculty {
published Boolean @default(false)
@@index([name], name: "name_index")
}
}
10 changes: 0 additions & 10 deletions src/auth.ts

This file was deleted.

4 changes: 4 additions & 0 deletions src/hooks.server.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
import { sequence } from '@sveltejs/kit/hooks';
import { handle as authHandle } from '$lib/auth/auth';

export const handle = sequence(authHandle);
21 changes: 21 additions & 0 deletions src/lib/auth/auth.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,21 @@
import { DefaultSession, SvelteKitAuth, SvelteKitAuthConfig } from '@auth/sveltekit';
import { PrismaAdapter } from '@auth/prisma-adapter';
import Google from '@auth/sveltekit/providers/google';
import { db } from '$lib/db/db';

const authOptions:SvelteKitAuthConfig = {
adapter: PrismaAdapter(db),
providers: [Google],
callbacks: {
async session({ session, user, token }) {
const sess = {} as DefaultSession;

sess.expires = session.expires;
sess.user = user;

return sess;
}
}
};

export const { handle, signIn, signOut } = SvelteKitAuth(authOptions);
15 changes: 15 additions & 0 deletions src/lib/db/db.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
import { PrismaClient } from '@prisma/client';
import { env } from '$lib/env';

const createPrismaClient = () =>
new PrismaClient({
log: env.HOST_STATUS === 'development' ? ['query', 'error', 'warn'] : ['error']
});

const globalForPrisma = globalThis as unknown as {
prisma: ReturnType<typeof createPrismaClient> | undefined;
};

export const db = globalForPrisma.prisma ?? createPrismaClient();

if (env.HOST_STATUS !== 'production') globalForPrisma.prisma = db;
8 changes: 8 additions & 0 deletions src/lib/env.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
import { dev } from "$app/environment"

export const env = {
DATABASE_URL: process.env.DATABASE_URL,
HOST_STATUS: process.env.HOST_STATUS || dev ? "development" : "production",
AUTH_GOOGLE_ID: process.env.AUTH_GOOGLE_ID,
AUTH_GOOGLE_SECRET: process.env.AUTH_GOOGLE_SECRET
};
7 changes: 7 additions & 0 deletions src/routes/+layout.server.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
export const load = async (event:any) => {
const session = await event.locals.auth();

return {
session
};
};

0 comments on commit 4f057aa

Please sign in to comment.