Advertisement
Guest User

Untitled

a guest
Nov 22nd, 2019
224
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. //logger nie jest w innej klasie
  2.  
  3. const express = require('express')
  4. const app = express()
  5. const Joi = require('joi')
  6. const path = require('path')
  7. const cookieParser = require('cookie-parser')
  8. const session = require('express-session')
  9. const EventEitter = require('events')
  10. logger = new EventEitter()
  11.  
  12. app.set('view engine', 'ejs')
  13. app.set('views', path.join(__dirname, 'views'))
  14.  
  15. app.use(express.static(path.join(__dirname, 'static')))
  16. app.use(session({
  17.     resave: true,
  18.     saveUninitialized: true,
  19.     secret: 'tajnykluczsesjissi'
  20. }))
  21.  
  22. app.use(cookieParser('tajnykluczssi'))
  23. app.use(express.urlencoded({extended: true}))
  24.  
  25. app.use(express.json())
  26.  
  27. const listaUzytkownikow = [
  28.     {id: 1, login: "admin", password: "pass", permissions: 2},
  29.     {id: 2, login: "user1", password: "pass", permissions: 1},
  30.     {id: 3, login: "user2", password: "pass", permissions: 1},
  31.     {id: 4, login: "user3", password: "pass", permissions: 1},
  32. ]
  33.  
  34. const logs = []
  35.  
  36. // view engine setup
  37. app.set('views', path.join(__dirname, 'views'));
  38. app.set('view engine', 'ejs');
  39.  
  40. app.get('/', (req, res) => {
  41.     logger.emit("ADD")
  42.  
  43.     res.send(listaUzytkownikow)
  44. })
  45.  
  46. app.get('/uzytkownicy', authorize, (req, res) => {
  47.     logger.emit("VIEW LIST")
  48.  
  49.     res.render('lista', {lista: listaUzytkownikow})
  50.  
  51. })
  52.  
  53.  
  54. app.get('/:id(\\d+)', (req, res) => {
  55.     let element = listaUzytkownikow.find(l => l.id === parseInt(req.params.id))
  56.     if (!element) {
  57.         res.status(404).send("Użytkownik o takim id nie został znaleziony")
  58.     } else {
  59.         logger.emit("VIEW DETAILS")
  60.  
  61.         res.send(element)
  62.     }
  63. })
  64.  
  65. app.post('/', (req, res) => {
  66.     const {error} = validate(req.body)
  67.  
  68.     if (error) {
  69.         res.status(400).send(error.details[0].message)
  70.     } else {
  71.         let element = listaUzytkownikow.find(l => l.login === req.body.login)
  72.         if (!element) {
  73.             const user = {
  74.                 id: listaUzytkownikow.length + 1,
  75.                 login: req.body.login,
  76.                 password: req.body.password,
  77.                 permissions: req.body.permissions
  78.             }
  79.             listaUzytkownikow.push(user)
  80.             logger.emit("ADD")
  81.             var returnUrl = req.query.returnUrl
  82.             res.redirect(returnUrl)
  83.         } else {
  84.             return res.status(404).send("Użytkownik o takim loginie już istnieje")
  85.         }
  86.     }
  87.  
  88. })
  89.  
  90. app.put('/:id', (req, res) => {
  91.     let element = listaUzytkownikow.find(l => l.id === parseInt(req.params.id))
  92.     if (!element) {
  93.         return res.status(404).send("Element o takim id nie został znaleziony")
  94.     }
  95.     const wynik = validate(req.body)
  96.  
  97.     if (wynik.error) {
  98.         return res.status(400).send(wynik.error.details[0].message)
  99.     }
  100.     element.login = req.body.login
  101.     element.password = req.body.password
  102.     element.permissions = req.body.permissions
  103.     logger.emit("EDIT")
  104.  
  105.     res.send(element)
  106. })
  107.  
  108. app.delete("/:id", (req, res) => {
  109.     let element = listaUzytkownikow.find(l => l.id === parseInt(req.params.id))
  110.     if (!element) {
  111.         return res.status(404).send("Element o takim id nie został znaleziony")
  112.     }
  113.     const index = listaUzytkownikow.indexOf(element)
  114.     listaUzytkownikow.splice(index, 1)
  115.     logger.emit("DELETE")
  116.  
  117.     res.send(element)
  118. })
  119.  
  120. app.get('/login', (req, res) => {
  121.     res.render('zaloguj')
  122. })
  123.  
  124. app.get('/logout', authorize, (req, res) => {
  125.     res.cookie("user", "", {maxAge: -1})
  126.     logger.emit("LOGOUT")
  127.  
  128.     res.redirect('/login')
  129. })
  130.  
  131. app.post('/login', (req, res) => {
  132.     var username = req.body.login
  133.     var password = req.body.password
  134.  
  135.     let user = listaUzytkownikow.find(el => el.login === username)
  136.     if (user != null && user.password === password) {
  137.         res.cookie('user', username, {signed: true})
  138.         var returnUrl = req.query.returnUrl
  139.         logger.emit("LOGIN")
  140.  
  141.         res.redirect(returnUrl)
  142.     } else {
  143.         res.render('zaloguj', {wiadomosc: 'Niepoprawne dane logowania'})
  144.     }
  145. })
  146.  
  147. app.get('/dodaj', authorize, (req, res) => {
  148.     res.render('dodaj')
  149. })
  150.  
  151. app.get('/logs', authorize, (req, res) => {
  152.     res.render('logi', {logs: logs})
  153. })
  154.  
  155. function authorize(req, res, next) {
  156.     if (req.signedCookies.user) {
  157.         req.user = req.signedCookies.user
  158.         next()
  159.     } else {
  160.         logger.emit("UNAUTH")
  161.  
  162.         res.redirect('login?returnUrl=' + req.url)
  163.     }
  164. }
  165.  
  166. function validate(element) {
  167.     const schemat = {
  168.         login: Joi.string().min(2).required(),
  169.         password: Joi.string().min(3).required(),
  170.         permissions: Joi.number().required()
  171.     }
  172.  
  173.     return Joi.validate(element, schemat)
  174. }
  175.  
  176.  
  177. logger.on("ADD", () => {
  178.     logs.push({id: logs.length, time: Date.now(), message: "ADDED NEW USER"})
  179. })
  180.  
  181.  
  182. logger.on("EDIT", () => {
  183.     logs.push({id: logs.length, time: Date.now(), message: "EDITED USER"})
  184. })
  185.  
  186. logger.on("DELETE", () => {
  187.     logs.push({id: logs.length, time: Date.now(), message: "DELETED USER"})
  188. })
  189.  
  190.  
  191. logger.on("VIEW LIST", () => {
  192.     logs.push({id: logs.length, time: Date.now(), message: "VIEWED LIST"})
  193. })
  194.  
  195.  
  196. logger.on("VIEW DETAILS", () => {
  197.     logs.push({id: logs.length, time: Date.now(), message: "VIEWED DETAILS OF USER"})
  198. })
  199.  
  200.  
  201. logger.on("LOGIN", () => {
  202.     logs.push({id: logs.length, time: Date.now(), message: "LOGGED IN"})
  203. })
  204.  
  205. logger.on("LOGOUT", () => {
  206.     logs.push({id: logs.length, time: Date.now(), message: "LOGGED OUT"})
  207. })
  208.  
  209.  
  210. logger.on("UNAUTH", () => {
  211.     logs.push({id: logs.length, time: Date.now(), message: "TRY OF UNAUTHORIZED ACCESS"})
  212. })
  213.  
  214. app.listen(3000, () => console.log("Oczekuję na porcie ", 3000))
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement