ragvault
Version:
Securely manage and query your private data using a local vector database. Your private RAG.
36 lines (35 loc) • 1.19 kB
JavaScript
import chalk from "chalk";
import inquirer from "inquirer";
import { createSpinner } from "nanospinner";
import { sleep } from "../../utils/sleep.js";
import bcrypt from "bcryptjs";
export async function login(users) {
const { username, password } = await inquirer.prompt([
{
type: "input",
name: "username",
message: "Enter your username:",
validate: (input) => input.trim() !== "" || "Username cannot be empty",
},
{
type: "password",
name: "password",
message: "Enter your password:",
validate: (input) => input.trim() !== "" || "Password cannot be empty",
},
]);
const spinner = createSpinner("Logging in...").start();
await sleep(1000);
if (!users[username]) {
spinner.error({ text: chalk.red("Username not found.") });
return null;
}
if (await bcrypt.compare(password, users[username].password)) {
spinner.success({ text: chalk.green("Login successful!") });
return users[username];
}
else {
spinner.error({ text: chalk.red("Invalid password.") });
return null;
}
}