mirror of
https://github.com/ajnart/homarr.git
synced 2026-02-27 17:00:54 +01:00
* chore: add initial db migration * test: add unit tests for packages auth, common, widgets * fix: deep source issues * fix: format issues * wip: add unit tests for api routers * fix: deep source issues * test: add missing unit tests for integration router * wip: board tests * test: add unit tests for board router * fix: remove unnecessary null assertions * fix: deepsource issues * fix: formatting * fix: pnpm lock * fix: lint and typecheck issues * chore: address pull request feedback * fix: non-null assertions * fix: lockfile broken
57 lines
1.4 KiB
TypeScript
57 lines
1.4 KiB
TypeScript
import type Credentials from "@auth/core/providers/credentials";
|
|
import bcrypt from "bcrypt";
|
|
|
|
import type { Database } from "@homarr/db";
|
|
import { eq } from "@homarr/db";
|
|
import { users } from "@homarr/db/schema/sqlite";
|
|
import { validation } from "@homarr/validation";
|
|
|
|
type CredentialsConfiguration = Parameters<typeof Credentials>[0];
|
|
|
|
export const createCredentialsConfiguration = (db: Database) =>
|
|
({
|
|
type: "credentials",
|
|
name: "Credentials",
|
|
credentials: {
|
|
name: {
|
|
label: "Username",
|
|
type: "text",
|
|
},
|
|
password: {
|
|
label: "Password",
|
|
type: "password",
|
|
},
|
|
},
|
|
async authorize(credentials) {
|
|
const data = await validation.user.signIn.parseAsync(credentials);
|
|
|
|
const user = await db.query.users.findFirst({
|
|
where: eq(users.name, data.name),
|
|
});
|
|
|
|
if (!user?.password) {
|
|
return null;
|
|
}
|
|
|
|
console.log(
|
|
`user ${user.name} is trying to log in. checking password...`,
|
|
);
|
|
const isValidPassword = await bcrypt.compare(
|
|
data.password,
|
|
user.password,
|
|
);
|
|
|
|
if (!isValidPassword) {
|
|
console.log(`password for user ${user.name} was incorrect`);
|
|
return null;
|
|
}
|
|
|
|
console.log(`user ${user.name} successfully authorized`);
|
|
|
|
return {
|
|
id: user.id,
|
|
name: user.name,
|
|
};
|
|
},
|
|
}) satisfies CredentialsConfiguration;
|