59 lines
1.2 KiB
TypeScript
59 lines
1.2 KiB
TypeScript
import { getUserNameFromApiKey } from "./functions.api.js";
|
|
import * as configFunctions from "./functions.config.js";
|
|
|
|
import type { User } from "../types/recordTypes";
|
|
|
|
export interface UserRequest {
|
|
session?: {
|
|
user?: User;
|
|
}
|
|
}
|
|
|
|
export interface APIRequest {
|
|
params?: {
|
|
apiKey?: string;
|
|
}
|
|
}
|
|
|
|
export const userIsAdmin = (request: UserRequest): boolean => {
|
|
const user = request.session?.user;
|
|
|
|
if (!user) {
|
|
return false;
|
|
}
|
|
|
|
return user.userProperties.isAdmin;
|
|
};
|
|
|
|
export const userCanUpdate = (request: UserRequest): boolean => {
|
|
const user = request.session?.user;
|
|
|
|
if (!user) {
|
|
return false;
|
|
}
|
|
|
|
return user.userProperties.canUpdate;
|
|
};
|
|
|
|
export const apiKeyIsValid = async (request: APIRequest): Promise<boolean> => {
|
|
const apiKey = request.params?.apiKey;
|
|
|
|
if (!apiKey) {
|
|
return false;
|
|
}
|
|
|
|
const userName = await getUserNameFromApiKey(apiKey);
|
|
|
|
if (!userName) {
|
|
return false;
|
|
}
|
|
|
|
const canLogin = configFunctions
|
|
.getProperty("users.canLogin")
|
|
.some((currentUserName) => {
|
|
return userName === currentUserName.toLowerCase();
|
|
});
|
|
|
|
return canLogin;
|
|
};
|