Compare commits
3 Commits
a12b82f470
...
a9e9c5b080
Author | SHA1 | Date |
---|---|---|
Aelita4 | a9e9c5b080 | |
Aelita4 | 1bbc55563d | |
Aelita4 | 91cafb2bf3 |
|
@ -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);
|
||||||
|
|
||||||
|
|
|
@ -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)
|
||||||
}
|
}
|
||||||
}
|
}
|
|
@ -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));
|
||||||
|
|
|
@ -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));
|
||||||
|
|
|
@ -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');
|
||||||
|
|
|
@ -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") {
|
||||||
|
|
|
@ -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');
|
||||||
|
|
|
@ -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',
|
||||||
|
|
|
@ -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 res = await fetch(`https://localhost:4321/api/auth/generateAccessToken`, {
|
const token = (await res.json()).accessToken;
|
||||||
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);
|
||||||
|
|
||||||
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");
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
---
|
---
|
||||||
|
|
Loading…
Reference in New Issue