92 lines
2.7 KiB
TypeScript
92 lines
2.7 KiB
TypeScript
import type { NextAuthConfig } from "next-auth";
|
|
import Credentials from "next-auth/providers/credentials";
|
|
import Github from "next-auth/providers/github";
|
|
import Google from "next-auth/providers/google";
|
|
|
|
// import Resend from "next-auth/providers/resend";
|
|
|
|
import { env } from "@/env.mjs";
|
|
|
|
const linuxDoProvider: any = {
|
|
id: "linuxdo",
|
|
name: "Linux Do",
|
|
version: "2.0",
|
|
type: "oauth",
|
|
authorization: "https://connect.linux.do/oauth2/authorize",
|
|
token: "https://connect.linux.do/oauth2/token",
|
|
userinfo: "https://connect.linux.do/api/user",
|
|
clientId: env.LinuxDo_CLIENT_ID,
|
|
clientSecret: env.LinuxDo_CLIENT_SECRET,
|
|
checks: ["state"],
|
|
profile: (profile: any) => {
|
|
console.log("profile", profile);
|
|
return {
|
|
id: profile.id.toString(),
|
|
name: profile.username,
|
|
image: profile.avatar_url,
|
|
email: profile.email,
|
|
active: profile.active ? 1 : 0,
|
|
// username: profile.username,
|
|
// trust_level: profile.trust_level,
|
|
// silenced: profile.user.silenced,
|
|
// email: profile.user.email,
|
|
};
|
|
},
|
|
};
|
|
|
|
export default {
|
|
providers: [
|
|
Google({
|
|
clientId: env.GOOGLE_CLIENT_ID,
|
|
clientSecret: env.GOOGLE_CLIENT_SECRET,
|
|
}),
|
|
Github({
|
|
clientId: env.GITHUB_ID,
|
|
clientSecret: env.GITHUB_SECRET,
|
|
}),
|
|
// Resend({
|
|
// apiKey: env.RESEND_API_KEY,
|
|
// from: env.EMAIL_FROM || "wrdo <support@wr.do>",
|
|
// async sendVerificationRequest({ identifier: email, url, provider }) {
|
|
// try {
|
|
// const { error } = await resend.emails.send({
|
|
// from: provider.from || "no-reply@wr.do",
|
|
// to: [email],
|
|
// subject: "Verify your email address",
|
|
// html: getVerificationEmailHtml({ url, appName: siteConfig.name }),
|
|
// });
|
|
|
|
// if (error) {
|
|
// throw new Error(`Resend error: ${JSON.stringify(error)}`);
|
|
// }
|
|
// } catch (error) {
|
|
// console.error("Error sending verification email", error);
|
|
// throw new Error("Error sending verification email");
|
|
// }
|
|
// },
|
|
// }),
|
|
linuxDoProvider,
|
|
Credentials({
|
|
name: "Credentials",
|
|
credentials: {
|
|
name: { label: "name", type: "text" },
|
|
email: { label: "Email", type: "email" },
|
|
password: { label: "Password", type: "password" },
|
|
},
|
|
async authorize(credentials) {
|
|
const res = await fetch(
|
|
process.env.AUTH_URL + "/api/auth/credentials",
|
|
{
|
|
method: "POST",
|
|
body: JSON.stringify(credentials),
|
|
},
|
|
);
|
|
if (res.ok) {
|
|
return res.json();
|
|
}
|
|
return null;
|
|
},
|
|
}),
|
|
],
|
|
} satisfies NextAuthConfig;
|