This repository has been archived on 2023-10-27. You can view files and clone it, but cannot push or open issues or pull requests.
Files
imageify/src/pages/api/auth/[...nextauth].js

57 lines
1.4 KiB
JavaScript

import NextAuth from "next-auth";
import CredentialsProvider from "next-auth/providers/credentials";
import { connectMongo } from "../../../utils/helpers/mongoHelpers";
import {
generateRandomPassword,
isValidPassword,
} from "../../../utils/helpers/passwordHelpers";
import { createUser, getUser } from "../../../utils/helpers/userHelpers";
// Create admin account if one doesn't exist yet
const pass = generateRandomPassword();
createUser("admin", pass).then((returned) => {
if (returned === true) {
console.log(
`Created admin account. Username: admin, Password: ${pass}, uploadKey: ${returned.uploadKey}`
);
}
});
export const authOptions = {
providers: [
CredentialsProvider({
name: "Credentials",
credentials: {
username: {
label: "Username",
type: "text",
placeholder: "admin",
},
password: { label: "Password", type: "password" },
},
async authorize(credentials, req) {
await connectMongo();
const { username, password } = credentials;
const user = await getUser(username);
if (user == null) {
return null;
}
if (user) {
const validPassword = isValidPassword(password, user.password);
if (validPassword === false) {
return null;
}
user.lastLoginDate = new Date();
await user.save();
return user;
} else {
return null;
}
},
}),
],
};
export default NextAuth(authOptions);