Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- const express = require('express');
- const app = express();
- const Joi = require('joi');
- const path = require('path');
- const session = require('express-session');
- const cookieParser = require('cookie-parser');
- // const ejs =require('ejs')
- app.set('view engine', 'ejs');
- app.set('views', './views');
- app.use(express.static(path.join(__dirname, 'static')));
- app.use(session({resave: true, saveUninitialized: true, secret: 'tajnyklucz'}));
- app.use(cookieParser('tajnyklucz'));
- app.use(express.urlencoded({extended : true}));
- app.use(express.json());
- let uzytkownicy = [
- {id: 1, login: 'aaaaa', password: 'aaaaa', role: 'admin'},
- {id: 2, login: 'bbbbb', password: 'bbbbb', role: 'uzytkownik'},
- {id: 3, login: 'ccccc', password: 'ccccc', role: 'uzytkownik'},
- {id: 4, login: 'ddddd', password: 'dddd', role: 'uzytkownik'},
- {id: 5, login: 'eeeee', password: 'eeeee', role: 'uzytkownik'},
- {id: 6, login: 'fffff', password: 'fffff', role: 'uzytkownik'},
- {id: 7, login: 'ggggg', password: 'ggggg', role: 'uzytkownik'},
- ];
- let logs = [];
- function addLog(req, event) {
- let log = {
- id: logs.length + 1,
- login: req.signedCookies.uzytkownik ? req.signedCookies.uzytkownik.login : req.body.login,
- date: new Date(),
- event: event
- };
- logs.push(log);
- }
- app.get('/api/uzytkownicy', authorize, (req, res) => {
- addLog(req, "Wyswietlenie listy użytkowników");
- res.render('index', {uzytkownicy: uzytkownicy});
- });
- app.get('/api/uzytkownicy/:id(\\d+)', (req, res) => {
- addLog(req, "Wyswietlenie uzytkownika o konkretnym ID ");
- let user = uzytkownicy.find(u => u.id === parseInt(req.params.id));
- if (!user) {
- res.status(404).send(`Użytkownik o tym id nie istnieje: ${req.params.id}`);
- } else {
- res.render('index', {uzytkownicy: [user]});
- }
- });
- app.post('/api/uzytkownicy', (req, res) => {
- addLog(req, 'Dodawanie uzytkownika');
- const element = {
- id: uzytkownicy.length + 1,
- login: req.body.login,
- password: req.body.password,
- role: req.body.role
- };
- uzytkownicy.push(element);
- res.send(element);
- });
- app.delete('/api/uzytkownicy/:id', (req, res) => {
- addLog(req, "Usuwanie uzytkownika");
- let deletedUser = uzytkownicy.find(user => user.id === parseInt(req.params.id));
- uzytkownicy = uzytkownicy.filter(user => user.id !== parseInt(req.params.id));
- res.send(deletedUser);
- });
- app.put('/api/uzytkownicy/:id', (req, res) => {
- addLog(req, "Update uzytkownika");
- let userToUpdate = uzytkownicy.find(user => user.id === parseInt(req.params.id));
- userToUpdate.login = req.body.login == null ? userToUpdate.login : req.body.login;
- userToUpdate.password = req.body.password == null ? userToUpdate.password : req.body.password;
- userToUpdate.role = req.body.role == null ? userToUpdate.role : req.body.role;
- res.send(userToUpdate);
- });
- app.get('/zaloguj', (req, res) => {
- res.render('zaloguj');
- });
- app.post('/zaloguj', (req, res) => {
- addLog(req, "Logowanie");
- let login = uzytkownicy.find(user => user.login = req.body.login);
- if (login) {
- let password = uzytkownicy.find(user => user.password === req.body.password);
- if (password) {
- res.cookie('uzytkownik', login, {signed: true});
- let returnUrl = req.query.returnUrl;
- if (returnUrl)
- res.redirect(returnUrl);
- else
- res.redirect('/api/uzytkownicy');
- } else {
- res.render('zaloguj', {message: 'Złe haslo'})
- }
- } else {
- res.render('zaloguj', { message: 'Nie ma uzytkwonika o takim loginie'});
- }
- });
- app.get('/wyloguj', authorize, (req, res) => {
- res.cookie('uzytkownik', '', {maxAge: -1});
- res.redirect('/zaloguj');
- });
- app.get('/dodaj', authorizeAdmin, (req, res) => {
- res.render('dodaj');
- });
- app.post('/dodaj', (req, res) => {
- let isUserExist = uzytkownicy.find(user => user.login === req.body.login);
- if (isUserExist) {
- res.render('dodaj', {message: "Uzytkownik o podanym loginie istnieje"});
- } else {
- let maxId = 1;
- uzytkownicy.forEach(user => {
- maxId = user.id > maxId ? user.id : maxId;
- });
- let newUser = {
- id: maxId + 1,
- login: req.body.login,
- password: req.body.password,
- role: req.body.role
- };
- uzytkownicy.push(newUser);
- res.redirect('/api/uzytkownicy');
- }
- });
- app.get('/logi', (req, res) => {
- res.render('logi', {logs: logs});
- });
- function authorize(req, res, next) {
- if (req.signedCookies.uzytkownik) {
- req.uzytkownik = req.signedCookies.uzytkownik;
- next();
- } else {
- res.redirect('/zaloguj?returnUrl='+ req.url);
- }
- }
- function authorizeAdmin(req, res, next) {
- if (req.signedCookies.uzytkownik && req.signedCookies.uzytkownik.role === 'admin') {
- req.uzytkownik = req.signedCookies.uzytkownik;
- next();
- } else {
- res.redirect('/zaloguj?returnUrl=' + req.url);
- }
- }
- app.use((req, res, next) => {
- res.render('404.ejs', {url: req.url});
- });
- const port = process.env.PORT || 3000;
- app.listen(port, () => console.log(`Oczekuje na porcie ${port}`));
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement