Advertisement
Guest User

Untitled

a guest
Nov 22nd, 2019
210
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 5.33 KB | None | 0 0
  1. const express = require('express');
  2. const app = express();
  3. const Joi = require('joi');
  4. const path = require('path');
  5. const session = require('express-session');
  6. const cookieParser = require('cookie-parser');
  7. // const ejs =require('ejs')
  8. app.set('view engine', 'ejs');
  9. app.set('views', './views');
  10.  
  11. app.use(express.static(path.join(__dirname, 'static')));
  12. app.use(session({resave: true, saveUninitialized: true, secret: 'tajnyklucz'}));
  13. app.use(cookieParser('tajnyklucz'));
  14. app.use(express.urlencoded({extended : true}));
  15. app.use(express.json());
  16.  
  17. let uzytkownicy = [
  18. {id: 1, login: 'aaaaa', password: 'aaaaa', role: 'admin'},
  19. {id: 2, login: 'bbbbb', password: 'bbbbb', role: 'uzytkownik'},
  20. {id: 3, login: 'ccccc', password: 'ccccc', role: 'uzytkownik'},
  21. {id: 4, login: 'ddddd', password: 'dddd', role: 'uzytkownik'},
  22. {id: 5, login: 'eeeee', password: 'eeeee', role: 'uzytkownik'},
  23. {id: 6, login: 'fffff', password: 'fffff', role: 'uzytkownik'},
  24. {id: 7, login: 'ggggg', password: 'ggggg', role: 'uzytkownik'},
  25. ];
  26.  
  27. let logs = [];
  28.  
  29. function addLog(req, event) {
  30. let log = {
  31. id: logs.length + 1,
  32. login: req.signedCookies.uzytkownik ? req.signedCookies.uzytkownik.login : req.body.login,
  33. date: new Date(),
  34. event: event
  35. };
  36. logs.push(log);
  37. }
  38.  
  39. app.get('/api/uzytkownicy', authorize, (req, res) => {
  40. addLog(req, "Wyswietlenie listy użytkowników");
  41. res.render('index', {uzytkownicy: uzytkownicy});
  42. });
  43.  
  44. app.get('/api/uzytkownicy/:id(\\d+)', (req, res) => {
  45. addLog(req, "Wyswietlenie uzytkownika o konkretnym ID ");
  46. let user = uzytkownicy.find(u => u.id === parseInt(req.params.id));
  47. if (!user) {
  48. res.status(404).send(`Użytkownik o tym id nie istnieje: ${req.params.id}`);
  49.  
  50. } else {
  51. res.render('index', {uzytkownicy: [user]});
  52. }
  53. });
  54.  
  55. app.post('/api/uzytkownicy', (req, res) => {
  56. addLog(req, 'Dodawanie uzytkownika');
  57. const element = {
  58. id: uzytkownicy.length + 1,
  59. login: req.body.login,
  60. password: req.body.password,
  61. role: req.body.role
  62. };
  63.  
  64. uzytkownicy.push(element);
  65. res.send(element);
  66. });
  67.  
  68. app.delete('/api/uzytkownicy/:id', (req, res) => {
  69. addLog(req, "Usuwanie uzytkownika");
  70. let deletedUser = uzytkownicy.find(user => user.id === parseInt(req.params.id));
  71. uzytkownicy = uzytkownicy.filter(user => user.id !== parseInt(req.params.id));
  72.  
  73. res.send(deletedUser);
  74. });
  75.  
  76. app.put('/api/uzytkownicy/:id', (req, res) => {
  77. addLog(req, "Update uzytkownika");
  78. let userToUpdate = uzytkownicy.find(user => user.id === parseInt(req.params.id));
  79.  
  80. userToUpdate.login = req.body.login == null ? userToUpdate.login : req.body.login;
  81. userToUpdate.password = req.body.password == null ? userToUpdate.password : req.body.password;
  82. userToUpdate.role = req.body.role == null ? userToUpdate.role : req.body.role;
  83.  
  84. res.send(userToUpdate);
  85. });
  86.  
  87. app.get('/zaloguj', (req, res) => {
  88. res.render('zaloguj');
  89. });
  90.  
  91. app.post('/zaloguj', (req, res) => {
  92. addLog(req, "Logowanie");
  93. let login = uzytkownicy.find(user => user.login = req.body.login);
  94.  
  95. if (login) {
  96. let password = uzytkownicy.find(user => user.password === req.body.password);
  97. if (password) {
  98. res.cookie('uzytkownik', login, {signed: true});
  99. let returnUrl = req.query.returnUrl;
  100. if (returnUrl)
  101. res.redirect(returnUrl);
  102. else
  103. res.redirect('/api/uzytkownicy');
  104. } else {
  105. res.render('zaloguj', {message: 'Złe haslo'})
  106. }
  107. } else {
  108. res.render('zaloguj', { message: 'Nie ma uzytkwonika o takim loginie'});
  109. }
  110. });
  111.  
  112. app.get('/wyloguj', authorize, (req, res) => {
  113. res.cookie('uzytkownik', '', {maxAge: -1});
  114. res.redirect('/zaloguj');
  115. });
  116.  
  117.  
  118. app.get('/dodaj', authorizeAdmin, (req, res) => {
  119. res.render('dodaj');
  120. });
  121.  
  122. app.post('/dodaj', (req, res) => {
  123. let isUserExist = uzytkownicy.find(user => user.login === req.body.login);
  124. if (isUserExist) {
  125. res.render('dodaj', {message: "Uzytkownik o podanym loginie istnieje"});
  126. } else {
  127. let maxId = 1;
  128. uzytkownicy.forEach(user => {
  129. maxId = user.id > maxId ? user.id : maxId;
  130. });
  131.  
  132. let newUser = {
  133. id: maxId + 1,
  134. login: req.body.login,
  135. password: req.body.password,
  136. role: req.body.role
  137. };
  138.  
  139. uzytkownicy.push(newUser);
  140. res.redirect('/api/uzytkownicy');
  141. }
  142. });
  143.  
  144. app.get('/logi', (req, res) => {
  145. res.render('logi', {logs: logs});
  146. });
  147.  
  148. function authorize(req, res, next) {
  149. if (req.signedCookies.uzytkownik) {
  150. req.uzytkownik = req.signedCookies.uzytkownik;
  151. next();
  152. } else {
  153. res.redirect('/zaloguj?returnUrl='+ req.url);
  154. }
  155. }
  156.  
  157. function authorizeAdmin(req, res, next) {
  158. if (req.signedCookies.uzytkownik && req.signedCookies.uzytkownik.role === 'admin') {
  159. req.uzytkownik = req.signedCookies.uzytkownik;
  160. next();
  161. } else {
  162. res.redirect('/zaloguj?returnUrl=' + req.url);
  163. }
  164. }
  165.  
  166. app.use((req, res, next) => {
  167. res.render('404.ejs', {url: req.url});
  168. });
  169.  
  170. const port = process.env.PORT || 3000;
  171. app.listen(port, () => console.log(`Oczekuje na porcie ${port}`));
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement