ccashfrontend/routes/settings.js

147 lines
3.7 KiB
JavaScript

const root = process.env.PWD;
const path = require("path");
var pug = require("pug");
function validate(req, res, next) {
if (!req.session.get("user")) {
res.redirect("/login");
} else {
next();
}
}
const api = process.env.BANKAPIURL;
module.exports = function (fastify, opts, done) {
fastify.get(
"/",
{
preValidation: [validate],
},
async function (req, res) {
let checkalive = await fetch(`${api}/api/properties`, {
headers: {
Accept: "application/json",
},
});
if (checkalive) {
alive = true;
} else {
alive = false;
}
let successes = req.session.successes;
req.session.successes = "";
let errors = req.session.errors;
req.session.errors = "";
return res.view("settings", {
errors: errors,
successes: successes,
user: req.session.user,
admin: req.session.admin,
alive: true,
});
}
);
fastify.post(
"/pass",
{
preValidation: [validate],
},
async function (req, res) {
let { attempt, new_pass, password2 } = req.body;
let patch;
if (attempt == undefined) {
attempt = "";
} else if (!new_pass || !password2) {
req.session.errors = "please fill in all fields";
res.redirect("/settings");
} else if (new_pass != password2) {
req.session.errors = "Passwords don't match";
res.redirect("/settings");
} else if (new_pass.length < 6) {
req.session.errors = "Password must be at least 6 characters";
res.redirect("/settings");
} else {
try {
let name = req.session.user;
let auth = btoa(`${name}:${attempt}`);
auth = `Basic ${auth}`;
patch = await fetch(`${api}/api/v1/user/change_password`, {
method: 'PATCH',
headers: {
Authorization: auth,
Accept: "application/json",
"Content-Type": "application/json"
},
body: JSON.stringify({
"pass": new_pass,
}),
});
} catch (e) {
//req.session.set("errors", `${e.response.body}`);
console.log(e);
}
if (patch == -2) {
req.session.errors = "Password Wrong";
return res.redirect("/settings");
} else {
req.session.destroy();
//req.session.successes = "Change Password Successful, Please Login Again";
return res.redirect("/login");
}
}
}
);
fastify.post(
"/delete",
{
preValidation: [validate],
},
async function (req, res) {
let { password, password2 } = req.body;
let del;
if (!password || !password2) {
req.session.errors = "please fill in all fields";
res.redirect("/settings");
} else if (
password != password2 &&
password != req.session.password
) {
req.session.errors = "Passwords don't match";
res.redirect("/settings");
} else {
let name = req.session.user;
let auth = btoa(`${name}:${password}`);
auth = `Basic ${auth}`;
try {
del = await fetch(`${api}/api/v1/user/delete`, {
method: 'DELETE',
headers: {
Authorization: auth,
Accept: "application/json",
"Content-Type": "application/json"
},
});
} catch (e) {
//req.session.set("errors", `${e}`);
console.log(e);
}
console.log(del);
if (del) {
req.session.destroy();
}
res.redirect("/");
}
}
);
done();
};