Advertisement
Guest User

Untitled

a guest
Nov 21st, 2019
180
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 5.48 KB | None | 0 0
  1. const express = require('express');
  2. const app = express();
  3. const Joi = require('joi');
  4. const ejs = require('ejs');
  5. const path = require('path');
  6. const cookieParser = require('cookie-parser');
  7. const session = require('express-session');
  8. const Logger = require('./logger')
  9. var logger = new Logger();
  10. function log(mes) {
  11. const element ={
  12. id: logi.length + 1,
  13. message: mes
  14. };
  15. logi.push(element);
  16. }
  17. const logi = [
  18. {id:0, message:'init'},
  19. ];
  20. app.set('view engine', 'ejs');
  21. app.set('views', './views');
  22.  
  23. app.use(cookieParser('tajnykluczssi'));
  24. app.use(express.urlencoded ({ extended: true}));
  25.  
  26. app.use(session({resave: true, saveUninitialized: true, secret: 'tajnykluczssi'}));
  27.  
  28. app.use(express.static(path.join( __dirname, 'static')));
  29.  
  30. app.use(express.json());
  31.  
  32. const lista = [
  33. { id: 1, nazwa: 'ALFA ROMEO'},
  34. { id: 2, nazwa: 'AUDI'},
  35. { id: 3, nazwa: 'BMW'},
  36. { id: 4, nazwa: 'CITROEN'},
  37. { id: 5, nazwa: 'DACIA'}
  38. ];
  39.  
  40.  
  41. app.get('/', (req, res) => {
  42. //res.send("Witaj świecie!");
  43. uzytkownikCiastko = req.signedCookies.uzytkownik;
  44. res.render('index', {username: 'testowy', uzytkownik: uzytkownikCiastko});
  45. });
  46.  
  47. app.get('/zaloguj' , (req, res) => {
  48. res.render('zaloguj');
  49. });
  50.  
  51. app.post('/zaloguj', (req, res) => {
  52. let username = req.body.txtUser;
  53. let password = req.body.txtPwd;
  54.  
  55. if (username == password) {
  56. // wydanie ciastka
  57. res.cookie('uzytkownik', username, {signed: true});
  58. let returnUrl = req.query.returnUrl;
  59. if (returnUrl)
  60. res.redirect(returnUrl);
  61. else
  62. res.redirect('/');
  63. }
  64. else {
  65. res.render ('zaloguj', {message: "Niepoprawna nazwa użytkownika lub hasło"});
  66. }
  67. });
  68.  
  69. app.get('/wyloguj', authorize, (req, res ) => {
  70. //res.cookie('uzytkownik', '', {signed: true});
  71. res.cookie('uzytkownik', '', {maxAge: -1});
  72. res.redirect('/');
  73. });
  74.  
  75. app.get('/lista', authorize, (req, res) => {
  76. log("wyswietlono liste");
  77. res.render('lista', {lista: lista})
  78. });
  79. app.get("/api/logi",(require, res)=>{
  80. res.send(logi);
  81. });
  82. app.get('/ciastko', (req, res) => {
  83. var cookieValue;
  84. if (!req.cookies.ciasteczko) {
  85. cookieValue = new Date().toString();
  86. res.cookie('ciasteczko', cookieValue);
  87. }
  88. else{
  89. cookieValue = req.cookies.ciasteczko;
  90. }
  91. res.render('ciastko', {cookieValue: cookieValue});
  92. });
  93.  
  94. app.get('/tajneciastko', (req, res) => {
  95. let cookieValue;
  96. if (!req.signedCookies.tajneciasteczko) {
  97. cookieValue = new Date().toString();
  98. res.cookie('ciasteczko', cookieValue, {signed: trued});
  99. }
  100. else{
  101. cookieValue = req.signedCookies.tajneciasteczko;
  102. }
  103. res.render('ciastko', {cookieValue: cookieValue});
  104. });
  105.  
  106. app.get('/sesja', (req, res) => {
  107. let sessionValue;
  108. if (!req.session.sessionValue) {
  109. sessionValue = `data w sesji: ${new Date()}`;
  110. req.session.sessionValue = sessionValue;
  111. }
  112. else{
  113. sessionValue = req.session.sessionValue;
  114. }
  115. res.render('sesja', { sessionValue: sessionValue });
  116. });
  117.  
  118. /*
  119. app.get('/api/lista', (req, res) => {
  120. res.send([1, 2, 3, 4, 5]);
  121. });
  122. */
  123. app.get('/api/lista/', (req, res) => {
  124. log("wyswietlono liste");
  125. res.send(lista);
  126. //res.send(req.params);
  127. });
  128.  
  129. app.get('/api/lista/:id(\\d+)', (req, res) => {
  130. let element = lista.find(l => l.id === parseInt(req.params.id));
  131. if (!element)
  132. res.status(404).send(`Element o ID: ${req.params.id} nie zostal znaleziony`);
  133. else res.send(element);
  134. });
  135.  
  136. app.post('/api/lista', (req, res) => {
  137. const schemat = {
  138. nazwa: Joi.string().min(2).required()
  139.  
  140. };
  141.  
  142. var wynik = Joi.validate(req.body, schemat);
  143.  
  144. //console.log(wynik);
  145.  
  146. if (wynik.error) {
  147. res.status(400).send(wynik.error.details[0].message);
  148. return;
  149. }
  150. const element ={
  151. id: lista.length + 1,
  152. nazwa: req.body.nazwa
  153. };
  154.  
  155. lista.push(element);
  156. res.send(element);
  157. });
  158.  
  159. app.put('/api/lista/:id(\\d+)', (req, res) => {
  160. let element = lista.find(l => l.id === parseInt(req.params.id));
  161. if (!element){
  162. res.status(404).send(`Element o ID: ${req.params.id} nie zostal znaleziony`);
  163. return;
  164. }
  165. const wynik = sprawdzElement(req.body);
  166. if (wynik.error) {
  167. res.status(400).send(wynik.error.details[0].message);
  168. return;
  169. }
  170. element.nazwa = req.body.nazwa;
  171.  
  172. res.send(element);
  173. });
  174.  
  175. app.delete('/api/lista/:id(\\d+)', (req, res) => {
  176. let element = lista.find(l => l.id === parseInt(req.params.id));
  177. if (!element){
  178. res.status(404).send(`Element o ID: ${req.params.id} nie zostal znaleziony`);
  179. return;
  180. }
  181. const index = lista.indexOf(element);
  182. lista.splice(index, 1);
  183. const wynik = sprawdzElement(req.body);
  184. res.send(element);
  185. });
  186.  
  187.  
  188. function sprawdzElement(element){
  189. const schemat = {
  190. nazwa: Joi.string().min(2).required()
  191.  
  192. };
  193. return Joi.validate(element, schemat);
  194. }
  195.  
  196. function authorize(req, res, next){
  197. if (req.signedCookies.uzytkownik){
  198. req.uzytkownik = req.signedCookies.uzytkownik;
  199. next();
  200. }
  201. else {
  202. res.redirect('/zaloguj?returnUrl='+req.url);
  203. }
  204. }
  205.  
  206. app.use((req, res, next) => {
  207. res.render ('404.ejs', {url: req.url})
  208. });
  209.  
  210. const port = process.env.PORT || 3000;
  211. app.listen(port, () => console.log('Oczekuje na porcie $(port)...'));
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement