feat(psi): more psi work
This commit is contained in:
@@ -1,22 +1,27 @@
|
||||
import jwt from "jsonwebtoken";
|
||||
import {db} from "../../../../database/dbclient.js";
|
||||
import {users} from "../../../../database/schema/users.js";
|
||||
import {eq, sql} from "drizzle-orm";
|
||||
import {checkPassword} from "../utils/checkPassword.js";
|
||||
import {roleCheck} from "./userRoles/getUserAccess.js";
|
||||
import {createLog} from "../../logger/logger.js";
|
||||
import {differenceInDays} from "date-fns";
|
||||
import { db } from "../../../../database/dbclient.js";
|
||||
import { users } from "../../../../database/schema/users.js";
|
||||
import { eq, sql } from "drizzle-orm";
|
||||
import { checkPassword } from "../utils/checkPassword.js";
|
||||
import { roleCheck } from "./userRoles/getUserAccess.js";
|
||||
import { createLog } from "../../logger/logger.js";
|
||||
import { differenceInDays } from "date-fns";
|
||||
import { tryCatch } from "../../../globalUtils/tryCatch.js";
|
||||
import { settings } from "../../../../database/schema/settings.js";
|
||||
|
||||
/**
|
||||
* Authenticate a user and return a JWT.
|
||||
*/
|
||||
const {sign} = jwt;
|
||||
const { sign } = jwt;
|
||||
|
||||
export async function login(
|
||||
username: string,
|
||||
password: string
|
||||
): Promise<{token: string; user: {user_id: string; username: string}}> {
|
||||
const user = await db.select().from(users).where(eq(users.username, username));
|
||||
): Promise<{ token: string; user: { user_id: string; username: string } }> {
|
||||
const user = await db
|
||||
.select()
|
||||
.from(users)
|
||||
.where(eq(users.username, username));
|
||||
|
||||
//console.log(user);
|
||||
if (user.length === 0) {
|
||||
@@ -47,24 +52,46 @@ export async function login(
|
||||
// update the user last login
|
||||
try {
|
||||
const lastLog = await db
|
||||
.update(users)
|
||||
.set({lastLogin: sql`NOW()`})
|
||||
.where(eq(users.user_id, user[0].user_id))
|
||||
.returning({lastLogin: users.lastLogin});
|
||||
.update(users)
|
||||
.set({ lastLogin: sql`NOW()` })
|
||||
.where(eq(users.user_id, user[0].user_id))
|
||||
.returning({ lastLogin: users.lastLogin });
|
||||
createLog(
|
||||
"info",
|
||||
"lst",
|
||||
"auth",
|
||||
`Its been ${differenceInDays(lastLog[0]?.lastLogin ?? "", new Date(Date.now()))} days since ${
|
||||
user[0].username
|
||||
} has logged in`
|
||||
`Its been ${differenceInDays(
|
||||
lastLog[0]?.lastLogin ?? "",
|
||||
new Date(Date.now())
|
||||
)} days since ${user[0].username} has logged in`
|
||||
);
|
||||
//]);
|
||||
} catch (error) {
|
||||
createLog("error", "lst", "auth", "There was an error updating the user last login");
|
||||
createLog(
|
||||
"error",
|
||||
"lst",
|
||||
"auth",
|
||||
"There was an error updating the user last login"
|
||||
);
|
||||
}
|
||||
|
||||
const token = sign({user: userData}, secret, {expiresIn: expiresIn * 60});
|
||||
const token = sign({ user: userData }, secret, {
|
||||
expiresIn: expiresIn * 60,
|
||||
});
|
||||
|
||||
return {token, user: userData};
|
||||
return { token, user: userData };
|
||||
}
|
||||
|
||||
// export const login = async (username: string, password: string) => {
|
||||
// // get the settings so we know what server to call.
|
||||
// const { data, error } = (await tryCatch(db.select().from(settings))) as any;
|
||||
|
||||
// if (error) {
|
||||
// return {
|
||||
// success: false,
|
||||
// message: "Failed to get settings",
|
||||
// data: error,
|
||||
// };
|
||||
// }
|
||||
|
||||
// };
|
||||
|
||||
Reference in New Issue
Block a user