sunrise-cms/helpers/functions.user.ts

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;
};