Advertisement
Guest User

server.js

a guest
Apr 11th, 2022
130
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. const cookieParser = require("cookie-parser");
  2. const csrf = require("csurf");
  3. const bodyParser = require("body-parser");
  4. const admin = require("firebase-admin");
  5.  
  6. const express = require('express');
  7. const path = require('path');
  8. const fileupload = require('express-fileupload');
  9.  
  10. const serviceAccount = require("./public/serviceAccountKey.json"); // загружаем файл ключа
  11. admin.initializeApp({
  12.     credential: admin.credential.cert(serviceAccount),
  13.     databaseURL: "https://paradox-website-cd25b.firebaseapp.com",
  14. });
  15.  
  16. const csrfMiddleware = csrf({ cookie: true });
  17.  
  18. let initial_path = path.join(__dirname, "public");
  19.  
  20. const app = express();
  21. app.use(express.static(initial_path)); // инициализация рабочей директории
  22. app.use(fileupload());
  23.  
  24.  
  25.  
  26. app.engine("html", require("ejs").renderFile);
  27.  
  28. app.use(bodyParser.json());
  29. app.use(express.json());
  30. app.use(bodyParser.urlencoded({ extended: true }));
  31. app.use(cookieParser());
  32. app.use(csrfMiddleware);
  33.  
  34. app.all("*", (req, res, next) => {
  35.     var token = req.csrfToken();
  36.     res.cookie("XSRF-TOKEN", token);
  37.     res.locals.csrfToken = token;
  38.     next();
  39. });
  40.  
  41. app.use(function (req, res, next) {
  42.     var token = req.csrfToken();
  43.     res.cookie('XSRF-TOKEN', token);
  44.     res.locals.csrfToken = token;
  45.     next();
  46. });
  47.  
  48. app.get('/googleapis.js', function (req, res) {
  49.     console.log('Редирект в node_modules');
  50.     res.sendFile(__dirname + '/node_modules/googleapis/build/src/index.js');
  51. });
  52.  
  53. app.get('/login', (req, res) => {
  54.    
  55.  
  56.     const sessionCookie = req.cookies.session || "";
  57.  
  58.     admin
  59.         .auth()
  60.         .verifySessionCookie(sessionCookie, true /** checkRevoked */ )
  61.         .then((userData) => {
  62.             console.log("Logged in:", userData.email)
  63.             res.redirect("/admin-cp");
  64.             console.log("Авторизован");
  65.         })
  66.         .catch((error) => {
  67.             console.log("Не авторизован");
  68.             res.sendFile(path.join(initial_path, "login.html"));
  69.         });
  70. })
  71.  
  72. app.get('/register', (req, res) => {
  73.    
  74.  
  75.     const sessionCookie = req.cookies.session || "";
  76.  
  77.     admin
  78.         .auth()
  79.         .verifySessionCookie(sessionCookie, true /** checkRevoked */ )
  80.         .then((userData) => {
  81.             console.log("Logged in:", userData.email)
  82.             res.redirect("/admin-cp");
  83.         })
  84.         .catch((error) => {
  85.             res.sendFile(path.join(initial_path, "register.html"));
  86.         });
  87. })
  88.  
  89. app.get('/signup', (req, res) => {
  90.     res.sendFile(path.join(initial_path, "signup.html"));
  91. })
  92.  
  93. app.get("/admin-cp", function (req, res) {
  94.     const sessionCookie = req.cookies.session || "";
  95.    
  96.     admin
  97.         .auth()
  98.         .verifySessionCookie(sessionCookie, true  )
  99.         .then((userData) => {
  100.             console.log("Logged in:", userData.email)
  101.             console.log('Авторизован. Доступ в админ панель открыт')
  102.             res.sendFile(path.join(initial_path, "admin-cp/main-admin_cp.html"));
  103.         })
  104.         .catch((error) => {
  105.             console.log('Не авторизован. Ошибка', error, ' отсутвует userData')
  106.             res.redirect("/login");
  107.         });
  108. });
  109.  
  110. app.get('./main-admin_cp.html', function (req, res) {
  111.     console.log('ХАКЕР!!');
  112. });
  113.  
  114.  
  115.  
  116. app.post("/sessionLogin", (req, res) => {
  117.     const idToken = req.body.idToken.toString();
  118.  
  119.     const expiresIn = 60 * 60 * 24 * 5 * 1000; // вычисляем, сколько файл куки будет храниться (5 дней в миллисикундах)
  120.  
  121.     admin
  122.         .auth()
  123.         .createSessionCookie(idToken, {
  124.             expiresIn
  125.         }) // создаем файл куки со сроком хранения
  126.         .then(
  127.             (sessionCookie) => {
  128.                 const options = {
  129.                     maxAge: expiresIn,
  130.                     httpOnly: true
  131.                 }; // параметры (http only)
  132.                 res.cookie("session", sessionCookie, options); // файл с парамертрами
  133.                 res.end(JSON.stringify({
  134.                     status: "success"
  135.                 }));
  136.             },
  137.             (error) => {
  138.                 res.status(401).send("UNAUTHORIZED REQUEST!");
  139.             }
  140.         );
  141. });
  142.  
  143. app.post("/sessionRegister", (req, res) => {
  144.     const idToken = req.body.idToken.toString();
  145.  
  146.     const expiresIn = 60 * 60 * 24 * 5 * 1000; // вычисляем, сколько файл куки будет храниться (5 дней в миллисикундах)
  147.  
  148.     admin
  149.         .auth()
  150.         .createSessionCookie(idToken, {
  151.             expiresIn
  152.         }) // создаем файл куки со сроком хранения
  153.         .then(
  154.             (sessionCookie) => {
  155.                 const options = {
  156.                     maxAge: expiresIn,
  157.                     httpOnly: true
  158.                 }; // параметры (http only)
  159.                 res.cookie("session", sessionCookie, options); // файл с парамертрами
  160.                 res.end(JSON.stringify({
  161.                     status: "success"
  162.                 }));
  163.             },
  164.             (error) => {
  165.                 res.status(401).send("UNAUTHORIZED REQUEST!");
  166.             }
  167.         );
  168. });
  169.  
  170. app.get("/sessionLogout", (req, res) => {
  171.     console.log('Выход');
  172.     res.clearCookie("session");
  173.     res.redirect("/login");
  174. });
  175.  
  176. // старое
  177.  
  178. app.get('/', (req, res) => {
  179.     res.sendFile(path.join(initial_path, "home.html"));
  180. })
  181.  
  182. app.get('/editor', (req, res) => {
  183.     res.sendFile(path.join(initial_path, "editor.html"));
  184. })
  185.  
  186. //upload link
  187. app.post('/upload', (req, res) => {
  188.     console.log(req.files);
  189.    
  190.     let file = req.files.image;
  191.     let date = new Date();
  192.     console.log('test post');
  193.     // image name
  194.     let imagename = date.getDate() + date.getTime() + file.name;
  195.     // image upload path
  196.     let path = 'public/uploads/' + imagename;
  197.  
  198.     // create upload
  199.     file.mv(path, (err, result) => {
  200.         if (err) {
  201.             throw err;
  202.         } else {
  203.             // our image upload path
  204.             res.json(`uploads/${imagename}`)
  205.         }
  206.     })
  207. })
  208.  
  209. app.get('/:blog', (req, res) => {
  210.     res.sendFile(path.join(initial_path, "blog.html"));
  211. })
  212.  
  213. app.use((req, res) => {
  214.     res.json("404");
  215. })
  216.  
  217.  
  218.  
  219. app.listen("3000", () => {
  220.     console.log('listening......');
  221. })
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement