Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- bcrypt = require('bcryptjs');
- sqlite3 = require('sqlite3');
- db = new sqlite3.Database('7.sqlitedb');
- db.serialize();
- db.run(`CREATE TABLE IF NOT EXISTS guestbook(
- id INTEGER PRIMARY KEY,
- user TEXT NOT NULL,
- msg TEXT,
- date_created TEXT,
- date_modified TEXT)`
- );
- db.parallelize();
- express = require('express');
- bodyParser = require('body-parser');
- cookieParser = require('cookie-parser');
- session = require('express-session');
- pug = require('pug');
- app = express();
- app.use(bodyParser.urlencoded({ extended: true }));
- app.set('view engine', 'pug');
- app.set('views','./');
- app.use(cookieParser());
- app.use(session({
- secret: 'random string',
- resave: true,
- saveUninitialized: true,
- }));
- app.listen(8080);
- //users = {ivan: '123', radka: '888', nasko:'777'};
- //bcrypt.hash('123', 5, (err, hash) => {console.log(hash);});
- users = {
- ivan: '$2a$05$FIsj86AKAr5JnYg6DujY4.96JBPQCBT/POVh5LJH3hea6I3UvG5D6',
- radka: '$2a$05$zcGdceWWgx8zoAeznnRC2.j5HsZH4Z2W1AOIv/aYCWsDIs4QU6iMa',
- nasko:'$2a$05$6OBgnb6tpI4GmlrTvaxPB.fR0QhOieMyvN4EDmhSacU4bP0TsqzGW'
- };
- app.get('/login', function(req, res) {
- //pug.render(login);
- res.send(pug.render(login, {info: 'PLEASE LOGIN'}));
- });
- app.post('/login', function(req, res){
- bcrypt.compare(req.body.password, users[req.body.username] || "", function(err, is_match) {
- if(err) throw err;
- if(is_match === true) {
- req.session.username = req.body.username;
- req.session.count = 0;
- res.redirect("/guestbook");
- } else {
- res.send(pug.render(login, {warn: 'TRY AGAIN'}));
- }
- });
- });
- app.get('/logout', (req, res) => {
- req.session.destroy();
- res.redirect("/");
- });
- app.all('*', function(req, res, next) {
- if(req.session.username) return next();
- else res.redirect("/login");
- });
- //CRUD
- //cREADud
- app.get('/guestbook', (req, res) => {
- req.session.count++;
- s = "User: " + req.session.username + " Count: " + req.session.count;
- s += " :: <a href=''>reload</a> :: <a href='logout'>LOGOUT</a> :: ";
- s += new Date();
- let rows = [];
- db.all('SELECT * FROM guestbook;', function(err, rows) {
- if(err) throw err;
- res.send(pug.render(secret, {'info': s, rows: rows}));
- });
- });
- //CREATErud
- app.post('/save',(req, res) => {
- db.run(`
- INSERT INTO guestbook(
- user,
- msg,
- date_created,
- date_modified
- ) VALUES (
- ?,
- ?,
- DATETIME('now','localtime'),
- DATETIME('now','localtime'));
- `,
- [req.session.username, req.body.msg || ""],
- (err) => {
- if(err) throw err;
- res.redirect('/guestbook');
- });
- });
- //cruDELETE
- app.post('/delete',(req, res) => {
- db.run('DELETE FROM guestbook WHERE id = ?', req.body.id, (err) => {
- if(err) throw err;
- res.redirect('/guestbook');
- });
- });
- //crUPDATEd GET
- app.get('/update',(req, res) => {
- db.get('SELECT * FROM guestbook WHERE id = ?;', req.query.id, (err, row) => {
- if(err) throw err;
- res.send(pug.render(secret, {edit: true, id: row.id, msg: row.msg}));
- });
- });
- //crUPDATEd POST
- app.post('/update',(req, res) => {
- db.run(`UPDATE guestbook
- SET user = ?,
- msg = ?,
- date_modified = DATETIME('now','localtime')
- WHERE id = ?;`,
- req.session.username,
- req.body.msg,
- req.body.id,
- (err) => {
- if(err) throw err;
- res.redirect('/guestbook');
- });
- });
- app.all('*', function(req, res) {
- res.send("No such page! Go to: <a href='/guestbook'>main page</a>");
- });
- login = `
- html
- head
- link(rel="stylesheet", href="https://stackpath.bootstrapcdn.com/bootstrap/4.3.1/css/bootstrap.min.css")
- body
- if info
- h1.alert.alert-info=info
- if warn
- h1.alert.alert-warning #{warn}
- form.mx-auto.border.border-primary.w-25.p-3(method="post")
- div.form-group
- label Username:
- input.form-control(type="text" name="username" placeholder=" Enter user name ")
- div.form-group
- label Password:
- input.form-control(type="password" name="password")
- div.form-group
- input.btn.btn-primary(type="submit" value="Login")
- `;
- secret = `
- html
- head
- link(rel="stylesheet", href="https://stackpath.bootstrapcdn.com/bootstrap/4.3.1/css/bootstrap.min.css")
- body
- if info
- h1.alert.alert-info!= info
- unless edit
- form.mx-auto.border.border-primary.w-25.p-3(method="post" action="/save")
- div.form-group
- label New message:
- textarea.form-control(name="msg" placeholder=" Your message ")
- div.form-group
- button.btn.btn-primary(type="submit") SAVE
- else
- form.mx-auto.border.border-primary.w-25.p-3(method="post" action="/update")
- input(type="hidden" name="id" value=id)
- div.form-group
- label Edit message:
- textarea.form-control(name="msg")=msg
- div.form-group
- button.btn.btn-success(type="submit") UPDATE
- button.btn.btn-dark(type="reset") RESET
- a.btn.btn-danger(href="/guestbook") CANCEL
- if rows
- table.table.table-striped.table-hover
- thead.bg-warning.text-uppercase.font-weight-bold
- tr
- td id
- td user
- td msg
- td date_created
- td date_modified
- td action
- tbody
- each row in rows
- tr
- td= row.id
- td= row.user
- td
- pre= row.msg
- td= row.date_created
- td= row.date_modified
- td
- div.row
- form(method="get" action="/update")
- input(type="hidden" name="id" value=row.id)
- button.btn.btn-info(type="submit") EDIT
- span
- form(method="post" action="/delete")
- input(type="hidden" name="id" value=row.id)
- button.btn.btn-danger(type="submit") X
- `;
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement