initial commit
This commit is contained in:
456
index.js
Normal file
456
index.js
Normal file
@@ -0,0 +1,456 @@
|
||||
const handlebars = require("handlebars");
|
||||
const cookieParser = require("cookie-parser");
|
||||
const path = require("path");
|
||||
const fs = require("fs");
|
||||
const axios = require("axios");
|
||||
|
||||
const express = require("express");
|
||||
const app = express();
|
||||
require("dotenv").config();
|
||||
|
||||
require("dotenv").config();
|
||||
app.use(express.static("static"));
|
||||
app.use(cookieParser());
|
||||
|
||||
const twelveHoursInSeconds = 12 * 60 * 60; // 12 часов в секундах
|
||||
|
||||
const checkAuthorization = async (req, res, next) => {
|
||||
const token = req.cookies.token;
|
||||
req.isAuth = false;
|
||||
|
||||
const options = {
|
||||
method: "GET",
|
||||
url: process.env.API_SERVER + "/secure",
|
||||
headers: {
|
||||
Authorization: token,
|
||||
},
|
||||
};
|
||||
|
||||
try {
|
||||
const response = await axios.request(options);
|
||||
const authorizationHeader = response.headers["authorization"];
|
||||
|
||||
const responseBody = response.data;
|
||||
req.apiResponse = responseBody;
|
||||
req.isAuth = responseBody.user;
|
||||
|
||||
res.cookie("token", authorizationHeader, {
|
||||
maxAge: twelveHoursInSeconds * 1000,
|
||||
});
|
||||
|
||||
next();
|
||||
} catch (error) {
|
||||
if (
|
||||
(error.response && error.response.status === 401) ||
|
||||
(error.response && error.response.status === 400)
|
||||
) {
|
||||
req.isAuth = false;
|
||||
next();
|
||||
} else {
|
||||
console.error("Ошибка при отправке GET-запроса:", error);
|
||||
res.status(500).send("Произошла ошибка при выполнении запроса.");
|
||||
}
|
||||
}
|
||||
};
|
||||
|
||||
app.get("/", checkAuthorization, async (req, res) => {
|
||||
var templateData = {
|
||||
API_SERVER: process.env.API_SERVER,
|
||||
SITE_DOMAIN: process.env.SITE_DOMAIN,
|
||||
isAuth: req.isAuth,
|
||||
};
|
||||
|
||||
const source = fs.readFileSync("static/templates/index.html", "utf8");
|
||||
const template = handlebars.compile(source);
|
||||
const resultT = template(templateData);
|
||||
res.send(resultT);
|
||||
});
|
||||
|
||||
app.get("/projects", checkAuthorization, async (req, res) => {
|
||||
const token = req.cookies.token;
|
||||
console.log(token);
|
||||
|
||||
if (!req.isAuth) {
|
||||
res.redirect("/");
|
||||
return;
|
||||
}
|
||||
|
||||
var options = {
|
||||
method: "GET",
|
||||
url: process.env.API_SERVER + "/projects",
|
||||
headers: {
|
||||
Authorization: req.cookies.token,
|
||||
},
|
||||
data: '-----011000010111000001101001\r\nContent-Disposition: form-data; name="searchText"\r\n\r\n\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name="page"\r\n\r\n\r\n-----011000010111000001101001--\r\n',
|
||||
};
|
||||
|
||||
axios
|
||||
.request(options)
|
||||
.then(function (response) {
|
||||
var templateData = {
|
||||
API_SERVER: process.env.API_SERVER,
|
||||
SITE_DOMAIN: process.env.SITE_DOMAIN,
|
||||
IsAdmin: req.apiResponse.isadmin,
|
||||
User: response.data.user,
|
||||
Projects: response.data.data,
|
||||
};
|
||||
|
||||
const source = fs.readFileSync("static/templates/projects.html", "utf8");
|
||||
const template = handlebars.compile(source);
|
||||
const resultT = template(templateData);
|
||||
res.send(resultT);
|
||||
})
|
||||
.catch(function (error) {
|
||||
if (error.response && error.response.status === 401) {
|
||||
res.redirect("/");
|
||||
} else {
|
||||
console.error("Ошибка при отправке GET-запроса:", error);
|
||||
res.status(500).send("Произошла ошибка при выполнении запроса.");
|
||||
}
|
||||
});
|
||||
});
|
||||
|
||||
app.get("/user/settings", checkAuthorization, async (req, res) => {
|
||||
const token = req.cookies.token;
|
||||
const name = req.params.name;
|
||||
console.log(token);
|
||||
|
||||
if (!req.isAuth) {
|
||||
res.redirect("/");
|
||||
return;
|
||||
}
|
||||
|
||||
var options = {
|
||||
method: "GET",
|
||||
url: process.env.API_SERVER + "/usersettings",
|
||||
headers: {
|
||||
Authorization: req.cookies.token,
|
||||
},
|
||||
data: '-----011000010111000001101001\r\nContent-Disposition: form-data; name="searchText"\r\n\r\n\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name="page"\r\n\r\n\r\n-----011000010111000001101001--\r\n',
|
||||
};
|
||||
|
||||
axios
|
||||
.request(options)
|
||||
.then(function (response) {
|
||||
var templateData = {
|
||||
API_SERVER: process.env.API_SERVER,
|
||||
SITE_DOMAIN: process.env.SITE_DOMAIN,
|
||||
IsAdmin: req.apiResponse.isadmin,
|
||||
User: response.data.user,
|
||||
isAuth: req.isAuth,
|
||||
};
|
||||
|
||||
const source = fs.readFileSync(
|
||||
"static/templates/user/settings.html",
|
||||
"utf8"
|
||||
);
|
||||
const template = handlebars.compile(source);
|
||||
const resultT = template(templateData);
|
||||
res.send(resultT);
|
||||
})
|
||||
.catch(function (error) {
|
||||
if (error.response && error.response.status === 401) {
|
||||
res.redirect("/");
|
||||
} else {
|
||||
console.error("Ошибка при отправке GET-запроса:", error);
|
||||
res.status(500).send("Произошла ошибка при выполнении запроса.");
|
||||
}
|
||||
});
|
||||
});
|
||||
|
||||
app.get("/project/:name", checkAuthorization, async (req, res) => {
|
||||
const token = req.cookies.token;
|
||||
const name = req.params.name;
|
||||
console.log(token);
|
||||
|
||||
if (!req.isAuth) {
|
||||
res.redirect("/");
|
||||
return;
|
||||
}
|
||||
|
||||
var options = {
|
||||
method: "GET",
|
||||
url: process.env.API_SERVER + "/project?name=" + name,
|
||||
headers: {
|
||||
Authorization: req.cookies.token,
|
||||
},
|
||||
data: '-----011000010111000001101001\r\nContent-Disposition: form-data; name="searchText"\r\n\r\n\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name="page"\r\n\r\n\r\n-----011000010111000001101001--\r\n',
|
||||
};
|
||||
|
||||
axios
|
||||
.request(options)
|
||||
.then(function (response) {
|
||||
var templateData = {
|
||||
API_SERVER: process.env.API_SERVER,
|
||||
SITE_DOMAIN: process.env.SITE_DOMAIN,
|
||||
IsAdmin: req.apiResponse.isadmin,
|
||||
Name: name,
|
||||
User: response.data.user,
|
||||
Project: response.data.data,
|
||||
Projects: response.data.projects,
|
||||
Documents: response.data.documents,
|
||||
Payments: response.data.payments,
|
||||
isAuth: req.isAuth,
|
||||
Releases: response.data.releases,
|
||||
Repo: response.data.repo,
|
||||
};
|
||||
|
||||
const source = fs.readFileSync(
|
||||
"static/templates/project/project.html",
|
||||
"utf8"
|
||||
);
|
||||
const template = handlebars.compile(source);
|
||||
const resultT = template(templateData);
|
||||
res.send(resultT);
|
||||
})
|
||||
.catch(function (error) {
|
||||
if (error.response && error.response.status === 401) {
|
||||
res.redirect("/");
|
||||
} else {
|
||||
console.error("Ошибка при отправке GET-запроса:", error);
|
||||
res.status(500).send("Произошла ошибка при выполнении запроса.");
|
||||
}
|
||||
});
|
||||
});
|
||||
|
||||
app.get("/project/:name/progress", checkAuthorization, async (req, res) => {
|
||||
const token = req.cookies.token;
|
||||
const name = req.params.name;
|
||||
console.log(token);
|
||||
|
||||
if (!req.isAuth) {
|
||||
res.redirect("/");
|
||||
return;
|
||||
}
|
||||
|
||||
var options = {
|
||||
method: "GET",
|
||||
url: process.env.API_SERVER + "/progress?name=" + name,
|
||||
headers: {
|
||||
Authorization: req.cookies.token,
|
||||
},
|
||||
data: '-----011000010111000001101001\r\nContent-Disposition: form-data; name="searchText"\r\n\r\n\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name="page"\r\n\r\n\r\n-----011000010111000001101001--\r\n',
|
||||
};
|
||||
|
||||
axios
|
||||
.request(options)
|
||||
.then(function (response) {
|
||||
var templateData = {
|
||||
API_SERVER: process.env.API_SERVER,
|
||||
SITE_DOMAIN: process.env.SITE_DOMAIN,
|
||||
IsAdmin: req.apiResponse.isadmin,
|
||||
Name: name,
|
||||
User: response.data.user,
|
||||
Project: response.data.data,
|
||||
Projects: response.data.projects,
|
||||
Modules: response.data.modules,
|
||||
isAuth: req.isAuth,
|
||||
Releases: response.data.releases,
|
||||
Repo: response.data.repo,
|
||||
};
|
||||
|
||||
const source = fs.readFileSync(
|
||||
"static/templates/project/progress.html",
|
||||
"utf8"
|
||||
);
|
||||
const template = handlebars.compile(source);
|
||||
const resultT = template(templateData);
|
||||
res.send(resultT);
|
||||
})
|
||||
.catch(function (error) {
|
||||
if (error.response && error.response.status === 401) {
|
||||
res.redirect("/");
|
||||
} else {
|
||||
console.error("Ошибка при отправке GET-запроса:", error);
|
||||
res.status(500).send("Произошла ошибка при выполнении запроса.");
|
||||
}
|
||||
});
|
||||
});
|
||||
|
||||
app.get("/project/:name/documents", checkAuthorization, async (req, res) => {
|
||||
const token = req.cookies.token;
|
||||
const name = req.params.name;
|
||||
console.log(token);
|
||||
|
||||
if (!req.isAuth) {
|
||||
res.redirect("/");
|
||||
return;
|
||||
}
|
||||
|
||||
var options = {
|
||||
method: "GET",
|
||||
url: process.env.API_SERVER + "/documents?name=" + name,
|
||||
headers: {
|
||||
Authorization: req.cookies.token,
|
||||
},
|
||||
data: '-----011000010111000001101001\r\nContent-Disposition: form-data; name="searchText"\r\n\r\n\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name="page"\r\n\r\n\r\n-----011000010111000001101001--\r\n',
|
||||
};
|
||||
|
||||
axios
|
||||
.request(options)
|
||||
.then(function (response) {
|
||||
var templateData = {
|
||||
API_SERVER: process.env.API_SERVER,
|
||||
SITE_DOMAIN: process.env.SITE_DOMAIN,
|
||||
IsAdmin: req.apiResponse.isadmin,
|
||||
Name: name,
|
||||
User: response.data.user,
|
||||
Project: response.data.data,
|
||||
Projects: response.data.projects,
|
||||
Documents: response.data.documents,
|
||||
isAuth: req.isAuth,
|
||||
};
|
||||
|
||||
const source = fs.readFileSync(
|
||||
"static/templates/project/documents.html",
|
||||
"utf8"
|
||||
);
|
||||
const template = handlebars.compile(source);
|
||||
const resultT = template(templateData);
|
||||
res.send(resultT);
|
||||
})
|
||||
.catch(function (error) {
|
||||
if (error.response && error.response.status === 401) {
|
||||
res.redirect("/");
|
||||
} else {
|
||||
console.error("Ошибка при отправке GET-запроса:", error);
|
||||
res.status(500).send("Произошла ошибка при выполнении запроса.");
|
||||
}
|
||||
});
|
||||
});
|
||||
|
||||
app.get("/project/:name/payments", checkAuthorization, async (req, res) => {
|
||||
const token = req.cookies.token;
|
||||
const name = req.params.name;
|
||||
console.log(token);
|
||||
|
||||
if (!req.isAuth) {
|
||||
res.redirect("/");
|
||||
return;
|
||||
}
|
||||
|
||||
var options = {
|
||||
method: "GET",
|
||||
url: process.env.API_SERVER + "/payments?name=" + name,
|
||||
headers: {
|
||||
Authorization: req.cookies.token,
|
||||
},
|
||||
data: '-----011000010111000001101001\r\nContent-Disposition: form-data; name="searchText"\r\n\r\n\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name="page"\r\n\r\n\r\n-----011000010111000001101001--\r\n',
|
||||
};
|
||||
|
||||
axios
|
||||
.request(options)
|
||||
.then(function (response) {
|
||||
var templateData = {
|
||||
API_SERVER: process.env.API_SERVER,
|
||||
SITE_DOMAIN: process.env.SITE_DOMAIN,
|
||||
IsAdmin: req.apiResponse.isadmin,
|
||||
Name: name,
|
||||
User: response.data.user,
|
||||
Project: response.data.data,
|
||||
Projects: response.data.projects,
|
||||
Paid: response.data.paid,
|
||||
NotPaid: response.data.notpaid,
|
||||
isAuth: req.isAuth,
|
||||
};
|
||||
|
||||
const source = fs.readFileSync(
|
||||
"static/templates/project/payments.html",
|
||||
"utf8"
|
||||
);
|
||||
const template = handlebars.compile(source);
|
||||
const resultT = template(templateData);
|
||||
res.send(resultT);
|
||||
})
|
||||
.catch(function (error) {
|
||||
if (error.response && error.response.status === 401) {
|
||||
res.redirect("/");
|
||||
} else {
|
||||
console.error("Ошибка при отправке GET-запроса:", error);
|
||||
res.status(500).send("Произошла ошибка при выполнении запроса.");
|
||||
}
|
||||
});
|
||||
});
|
||||
|
||||
app.get("/project/:name/tests", checkAuthorization, async (req, res) => {
|
||||
const token = req.cookies.token;
|
||||
const name = req.params.name;
|
||||
console.log(token);
|
||||
|
||||
if (!req.isAuth) {
|
||||
res.redirect("/");
|
||||
return;
|
||||
}
|
||||
|
||||
var options = {
|
||||
method: "GET",
|
||||
url: process.env.API_SERVER + "/tests?name=" + name,
|
||||
headers: {
|
||||
Authorization: req.cookies.token,
|
||||
},
|
||||
data: '-----011000010111000001101001\r\nContent-Disposition: form-data; name="searchText"\r\n\r\n\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name="page"\r\n\r\n\r\n-----011000010111000001101001--\r\n',
|
||||
};
|
||||
|
||||
axios
|
||||
.request(options)
|
||||
.then(function (response) {
|
||||
var templateData = {
|
||||
API_SERVER: process.env.API_SERVER,
|
||||
SITE_DOMAIN: process.env.SITE_DOMAIN,
|
||||
IsAdmin: req.apiResponse.isadmin,
|
||||
Name: name,
|
||||
User: response.data.user,
|
||||
Project: response.data.data,
|
||||
Projects: response.data.projects,
|
||||
Tests: response.data.tests,
|
||||
isAuth: req.isAuth,
|
||||
};
|
||||
|
||||
const source = fs.readFileSync(
|
||||
"static/templates/project/tests.html",
|
||||
"utf8"
|
||||
);
|
||||
const template = handlebars.compile(source);
|
||||
const resultT = template(templateData);
|
||||
res.send(resultT);
|
||||
})
|
||||
.catch(function (error) {
|
||||
if (error.response && error.response.status === 401) {
|
||||
res.redirect("/");
|
||||
} else {
|
||||
console.error("Ошибка при отправке GET-запроса:", error);
|
||||
res.status(500).send("Произошла ошибка при выполнении запроса.");
|
||||
}
|
||||
});
|
||||
});
|
||||
|
||||
app.get("/project/yandexauth", async (req, res) => {
|
||||
const name = req.params.name;
|
||||
var templateData = {
|
||||
API_SERVER: process.env.API_SERVER,
|
||||
SITE_DOMAIN: process.env.SITE_DOMAIN,
|
||||
Name: name,
|
||||
};
|
||||
|
||||
const source = fs.readFileSync(
|
||||
"static/templates/project/yandexauth.html",
|
||||
"utf8"
|
||||
);
|
||||
const template = handlebars.compile(source);
|
||||
const resultT = template(templateData);
|
||||
res.send(resultT);
|
||||
});
|
||||
|
||||
app.get("/logout", async (req, res) => {
|
||||
res.cookie("token", undefined);
|
||||
res.redirect("/");
|
||||
});
|
||||
|
||||
const port = 8081;
|
||||
app.listen(port, () => {
|
||||
console.log(`Server is running on port ${port}`);
|
||||
});
|
||||
|
||||
app.use((req, res, next) => {
|
||||
res.redirect("/");
|
||||
});
|
||||
Reference in New Issue
Block a user