[HOTFIX] Auth Credential Failure check

This commit is contained in:
Dunemask 2024-03-29 12:39:44 -06:00
parent 40f020d27b
commit 626ebf9d1d
2 changed files with 23 additions and 5 deletions

View file

@ -16,7 +16,10 @@ const getMclName = (host, id) =>
`${host.toLowerCase().replaceAll(".", "-")}-${id}`;
export async function checkAuthorization(serverId, cairoId) {
if(!cairoId) return false;
console.log(
`Checking Authorization for user ${cairoId} for serverId ${serverId}`,
);
if (!cairoId) return false;
const q = selectWhereAllQuery(table, {
id: serverId,
owner_cairo_id: cairoId,

View file

@ -9,16 +9,31 @@ const cairoAuthMiddleware = Router();
const cairoAuthenticate = async (token) => {
const config = { headers: { Authorization: `Bearer ${token}` } };
return fetch(`${MCL_CAIRO_URL}/api/user/info`, config).then((res) =>
res.json(),
);
return fetch(`${MCL_CAIRO_URL}/api/user/info`, config).then(async (res) => {
if (res.status >= 300) {
const errorMessage = await res
.json()
.then((data) => JSON.stringify(data))
.catch(() => res.statusText);
throw Error(
`Could not authenticate with user, receieved message: ${errorMessage}`,
);
}
return res.json();
});
};
// Middleware
const cairoAuthHandler = (req, res, next) => {
if (!req.token) return res.status(401).send("Cairo auth required!");
cairoAuthenticate(req.token)
.then((authData) => (req.cairoId = authData.id))
.then((authData) => {
console.log(authData);
if (!authData.id)
throw Error(`Cairo didn't return the expected data! ${authData.id}`);
req.id = authData.id;
})
.then(() => next())
.catch((err) => {
ERR("AUTH", err.response ? err.response.data : err.message);