deepsite / lib /auth.ts
enzostvs's picture
enzostvs HF Staff
remove /deepsite
8815af0
import type { NextAuthOptions } from "next-auth";
import { getServerSession } from "next-auth/next";
export const authOptions: NextAuthOptions = {
providers: [
{
id: "huggingface",
name: "Hugging Face",
type: "oauth",
clientId: process.env.AUTH_HUGGINGFACE_ID,
clientSecret: process.env.AUTH_HUGGINGFACE_SECRET,
wellKnown: "https://huggingface.co/.well-known/openid-configuration",
authorization: {
url: "https://huggingface.co/oauth/authorize",
params: {
scope: "openid profile read-repos manage-repos inference-api",
},
},
userinfo: {
url: "https://huggingface.co/oauth/userinfo",
async request(context) {
const { tokens } = context;
const response = await fetch("https://huggingface.co/oauth/userinfo", {
headers: {
Authorization: `Bearer ${tokens.access_token}`,
},
});
const data = await response.json();
return data;
}
},
checks: ["state"],
async profile(profile) {
return {
id: profile.sub,
name: profile.name || profile.preferred_username,
username: profile.preferred_username,
image: profile.picture,
isPro: profile.isPro
};
},
},
],
callbacks: {
async jwt({ token, account, user }) {
if (account) {
token.accessToken = account.access_token;
}
if (user) {
token.username = user.username;
token.isPro = user.isPro;
}
return token;
},
async session({ session, token }) {
session.accessToken = token.accessToken;
if (session.user) {
session.user.username = token.username;
session.user.isPro = token.isPro;
}
return session;
},
},
pages: {
signIn: "/signin",
},
secret: process.env.NEXTAUTH_SECRET,
};
export const auth = () => getServerSession(authOptions);