Compare commits

..

3 Commits

9 changed files with 62 additions and 70 deletions

View File

@ -9,7 +9,7 @@ const resourceTypes = await getAllResources();
const lang = await getLocales(Astro.cookies.get('language')?.value ?? await getHighestWeightedLanguage(Astro.request.headers.get('accept-language'))); const lang = await getLocales(Astro.cookies.get('language')?.value ?? await getHighestWeightedLanguage(Astro.request.headers.get('accept-language')));
const planetId = new ObjectId(Astro.cookies.get('planetid')?.value ?? ''); const planetId = new ObjectId(Astro.cookies.get('currentPlanet')?.value ?? '');
const planet = locationManager.getPlanet(planetId); const planet = locationManager.getPlanet(planetId);

View File

@ -3,11 +3,11 @@ import { Lang } from "./mongodb";
export const getLang = async (language = "en") => { export const getLang = async (language = "en") => {
const lang = await Lang(language); const lang = await Lang(language);
return { return {
general: await lang[0].find({}).toArray(), general: (await lang[0].find({}).toArray()).map(({ _id, ...rest }) => rest),
buildings: await lang[1].find({}).toArray(), buildings: (await lang[1].find({}).toArray()).map(({ _id, ...rest }) => rest),
ships: await lang[2].find({}).toArray(), ships: (await lang[2].find({}).toArray()).map(({ _id, ...rest }) => rest),
resources: await lang[3].find({}).toArray(), resources: (await lang[3].find({}).toArray()).map(({ _id, ...rest }) => rest),
research: await lang[4].find({}).toArray(), research: (await lang[4].find({}).toArray()).map(({ _id, ...rest }) => rest),
structures: await lang[5].find({}).toArray() structures: (await lang[5].find({}).toArray()).map(({ _id, ...rest }) => rest)
} }
} }

View File

@ -23,7 +23,7 @@ const locale = Astro.cookies.get('language')?.value ?? await getHighestWeightedL
const lang = await getLocales(locale); const lang = await getLocales(locale);
const planetId = Astro.cookies.get('planetid')?.value ?? ""; const planetId = Astro.cookies.get('currentPlanet')?.value ?? "";
if(planetId === "") return "No planet selected"; if(planetId === "") return "No planet selected";
const planet = locationManager.getPlanet(new ObjectId(planetId)); const planet = locationManager.getPlanet(new ObjectId(planetId));

View File

@ -19,7 +19,7 @@ if(checkUser === null || checkUser.username !== username) return Astro.redirect(
const user = locationManager.getUser(checkUser._id); const user = locationManager.getUser(checkUser._id);
if(!user) return Astro.redirect('/logout'); if(!user) return Astro.redirect('/logout');
const planetId = Astro.cookies.get('planetid')?.value ?? ""; const planetId = Astro.cookies.get('currentPlanet')?.value ?? "";
if(planetId === "") return "No planet selected"; if(planetId === "") return "No planet selected";
const planet = locationManager.getPlanet(new ObjectId(planetId)); const planet = locationManager.getPlanet(new ObjectId(planetId));

View File

@ -13,8 +13,8 @@ if(loggedToken === null || username === "") return Astro.redirect('/logout');
const checkUser = await getUserByAccessToken(loggedToken); const checkUser = await getUserByAccessToken(loggedToken);
if(checkUser === null || checkUser.username !== username) return Astro.redirect('/logout'); if(checkUser === null || checkUser.username !== username) return Astro.redirect('/logout');
const currentPlanetId = Astro.cookies.get('planetid')?.value ?? null;
if(currentPlanetId === null) return Astro.redirect('/game/logout'); if(currentPlanetId === null) return Astro.redirect('/game/logout');
const currentPlanetId = Astro.cookies.get('currentPlanet')?.value ?? null;
const currentPlanet = locationManager.getPlanet(new ObjectId(currentPlanetId)); const currentPlanet = locationManager.getPlanet(new ObjectId(currentPlanetId));
if(currentPlanet === undefined) { if(currentPlanet === undefined) {
Astro.cookies.delete('planetid'); Astro.cookies.delete('planetid');

View File

@ -16,7 +16,7 @@ if(loggedToken === null || username === "") return Astro.redirect('/logout');
const checkUser = await getUserByAccessToken(loggedToken); const checkUser = await getUserByAccessToken(loggedToken);
if(checkUser === null || checkUser.username !== username) return Astro.redirect('/logout'); if(checkUser === null || checkUser.username !== username) return Astro.redirect('/logout');
const planetId = Astro.cookies.get('planetid')?.value ?? ""; const planetId = Astro.cookies.get('currentPlanet')?.value ?? "";
if(planetId === "") return Astro.redirect('/logout'); if(planetId === "") return Astro.redirect('/logout');
if(Astro.request.method === "POST") { if(Astro.request.method === "POST") {

View File

@ -18,7 +18,7 @@ if(checkUser === null || checkUser.username !== username) return Astro.redirect(
const ships = await getAllShips(); const ships = await getAllShips();
const planetId = Astro.cookies.get('planetid')?.value ?? ""; const planetId = Astro.cookies.get('currentPlanet')?.value ?? "";
if(planetId === "") { if(planetId === "") {
console.error("No planet selected"); console.error("No planet selected");
return Astro.redirect('/logout'); return Astro.redirect('/logout');

View File

@ -28,7 +28,7 @@ if(Astro.request.method === "POST") {
const selectedPlanetId = (await Astro.request.formData()).get('planetId') as string | null; const selectedPlanetId = (await Astro.request.formData()).get('planetId') as string | null;
if(selectedPlanetId !== null) { if(selectedPlanetId !== null) {
Astro.cookies.set('planetid', selectedPlanetId, { Astro.cookies.set('currentPlanet', selectedPlanetId, {
path: '/', path: '/',
expires: new Date(Date.now() + 1000 * 60 * 60 * 24 * 7), expires: new Date(Date.now() + 1000 * 60 * 60 * 24 * 7),
sameSite: 'lax', sameSite: 'lax',

View File

@ -16,72 +16,64 @@ if(Astro.request.method === "POST") {
const username = data.get("username") as string | ""; const username = data.get("username") as string | "";
const password = data.get("password") as string | ""; const password = data.get("password") as string | "";
if(username === "") { if(username === "") error = "username is required";
error = "username is required"; if(password === "") error = "password is required";
Astro.redirect("/login");
}
if(password === "") { if(error === "") {
error = "password is required"; const userDB = await getUserByNickOrEmail(username as string);
Astro.redirect("/login");
}
const userDB = await getUserByNickOrEmail(username as string); if(userDB !== null && await verify(userDB.password, password as string)) {
const user = locationManager.getUser(userDB._id);
if(!user) throw new Error("User not found");
const sessionTime = config.SESSION_TIME_MINUTES * 60;
if(userDB !== null && await verify(userDB.password, password as string)) { const res = await fetch(`https://localhost:4321/api/auth/generateAccessToken`, {
const user = locationManager.getUser(userDB._id); method: 'POST',
if(!user) throw new Error("User not found"); body: JSON.stringify({
const sessionTime = config.SESSION_TIME_MINUTES * 60; username,
createdFrom: 'loginForm',
duration: sessionTime
}),
headers: {
'Content-Type': 'application/json',
'Authorization': 'Bearer ' + config.MASTER_ACCESSTOKEN
}
});
const token = (await res.json()).accessToken;
const res = await fetch(`https://localhost:4321/api/auth/generateAccessToken`, { await updateLastLogin(user);
method: 'POST',
body: JSON.stringify({
username,
createdFrom: 'loginForm',
duration: sessionTime
}),
headers: {
'Content-Type': 'application/json',
'Authorization': 'Bearer ' + config.MASTER_ACCESSTOKEN
}
});
const token = (await res.json()).accessToken;
await updateLastLogin(user); Astro.cookies.set("sessionToken", token, {
path: "/",
maxAge: sessionTime,
sameSite: "lax",
secure: true
});
Astro.cookies.set("sessionToken", token, { Astro.cookies.set("username", username, {
path: "/", path: "/",
maxAge: sessionTime, maxAge: sessionTime,
sameSite: "lax", sameSite: "lax",
secure: true secure: true
}); });
Astro.cookies.set("username", username, { Astro.cookies.set("userid", user.id?.toString() as string, {
path: "/", path: "/",
maxAge: sessionTime, maxAge: sessionTime,
sameSite: "lax", sameSite: "lax",
secure: true secure: true
}); });
Astro.cookies.set("userid", user.id?.toString() as string, { Astro.cookies.set("currentPlanet", user.mainPlanet._id, {
path: "/", path: "/",
maxAge: sessionTime, maxAge: sessionTime,
sameSite: "lax", sameSite: "lax",
secure: true secure: true
}); });
Astro.cookies.set("planetid", user.mainPlanet._id, { return Astro.redirect("/game");
path: "/", } else error = "invalid username or password";
maxAge: sessionTime,
sameSite: "lax",
secure: true
});
return Astro.redirect("/game");
} else {
error = "invalid username or password";
return Astro.redirect("/login");
} }
} }
--- ---