46 lines
1.3 KiB
TypeScript
46 lines
1.3 KiB
TypeScript
import { getToken } from "next-auth/jwt";
|
|
import { readFileSync, existsSync } from "node:fs";
|
|
import { join, resolve } from "node:path";
|
|
|
|
let findGitRoot = (path = __dirname): string | false => {
|
|
if (existsSync(join(path, ".git/HEAD"))) {
|
|
return path;
|
|
} else {
|
|
let parent = resolve(path, "..");
|
|
if (path === parent) {
|
|
return false;
|
|
} else {
|
|
return findGitRoot(parent);
|
|
}
|
|
}
|
|
};
|
|
|
|
let getGitVersion = async () => {
|
|
let root = findGitRoot();
|
|
|
|
if (!root) {
|
|
throw new Error("Cannot call getGitVersion from non git project.");
|
|
}
|
|
|
|
let rev = readFileSync(join(root, ".git/HEAD")).toString().trim();
|
|
|
|
if (rev.indexOf(":") === -1) {
|
|
return rev;
|
|
} else {
|
|
return readFileSync(join(root, ".git", rev.substring(5)))
|
|
.toString()
|
|
.trim();
|
|
}
|
|
};
|
|
export default async function handler(req, res) {
|
|
const token = await getToken({ req: req });
|
|
if (!token) {
|
|
// If no token or invalid token, return unauthorized status
|
|
return res.status(401).json({ message: "Unauthorized to call this API endpoint" });
|
|
}
|
|
else {
|
|
// If token is valid, log the user
|
|
//console.log("JWT | User: " + token.email);
|
|
}
|
|
res.status(200).json({ v: getGitVersion() })
|
|
} |