From a429c9262b513d21fa4d0118a3d818d6c1e83299 Mon Sep 17 00:00:00 2001 From: Matjaz Date: Wed, 9 Feb 2022 22:51:27 +0100 Subject: [PATCH] Registracijski sistem. --- app.js | 2 + database/socialbot.db | Bin 32768 -> 45056 bytes migrations/20220209204150-create-session.js | 30 ++++++++++++++ models/index.js | 2 + models/session.js | 24 +++++++++++ routes/login.js | 17 +++++++- routes/register.js | 27 +++++++++++++ views/login.ejs | 2 +- views/register.ejs | 42 ++++++++++++++++++++ 9 files changed, 144 insertions(+), 2 deletions(-) create mode 100644 migrations/20220209204150-create-session.js create mode 100644 models/session.js create mode 100644 routes/register.js create mode 100644 views/register.ejs diff --git a/app.js b/app.js index 8a1f64e..e1b424a 100644 --- a/app.js +++ b/app.js @@ -9,6 +9,7 @@ var indexRouter = require('./routes/index'); var usersRouter = require('./routes/user'); var messagesRouter = require('./routes/message'); var loginRouter = require('./routes/login'); +var registerRouter = require('./routes/register'); var app = express(); @@ -31,6 +32,7 @@ app.use('/', indexRouter); app.use('/user', usersRouter); app.use('/message', messagesRouter); app.use('/login', loginRouter); +app.use('/register', registerRouter); // catch 404 and forward to error handler app.use(function(req, res, next) { diff --git a/database/socialbot.db b/database/socialbot.db index eb7e24552ae657737f864eeb0114eb47369840e3..dc7bafae70c5a6ca45b2e96d3c8d1b0c0fffc05b 100644 GIT binary patch literal 45056 zcmeI*&u`OK00(e8Hu=%gdOJlELp&iW8i9lD*iIZSq{Va*O(nI1nQJu zJEiP4Y1##GnWp_6oA?uU9M_#TaoJ(gG$HM>=QIv+n$S)I!RXhDYx}+D_v7>O(m1i5 z^{cDRu0tA~txc;-Qp^Vo%Q6=TVHoyXhGAyu>`!0O72e;VOLk;^$|}txdHI_;;RQ1j zeZ~lvgs1bz<~Qf!N5eDi*`K1%X0$0gA{YV?fB*y_0D<>UKzPA_A3uJa-6?dfTFY5? zT({Y2yZ$n^TrzWIlazByt0t-X!Bw(YZQ50mFP6;}vqaWP`9iLAom@7rlU${IC10fb z70hCJ=f+GVzOcZ4`9(kbitB9od5o^l1dADs@`|c&Iab%PbKNSrNNZEh7fe#TQYOX9 z>grii-M($VD%#5}KT=tLPf{{3nI*HhY_5~4m&hG7D?zRl$whP3qzzxrtuN;;nqEj{ z%`4mwq2&%*vTxpgi~n8rqo#}f`q6>{r6v;T*>L>w0?RbpwsYUT)1vPnH>~Y$r@y^1 z%D5qqZq4r8h>rJ5fp)$1x#N22{PpPGe(|H;;eHuZao>I!ZA#Ow9leT5-G1@6VmtGZh&LP`btVqSNU%S~o>==2NBZ<}cSksFFDaX!m1zj=^mcb-`}K~t zgAB5Db9XH79c76fHoOZ`>4W%C{xTc{@q-5=?LZ*4j{TrYuH{P0pX5r5il!x~$vb7R z#)so)&al_}0)tWRI(N36cHJ4-Fuxa`ivV>b~deMYftEZuup8Wk@)G;Y%ehwJ`}0deCQOMuC?xo z`5U2NI|FgvlV@)`hW~I#rI^23F-QOBC5%uwUN}ANbvTgwh8)=B=v#`Y_qJk=&YbXs z5q=SV6rKooy)aA=fB*y_009U<00Izz00bZa0SLS%fm4d4(1(v&1_BU(00bZa0SG_<0uX=z1RwwbW?^_tKIz~;d5SBr`yKsr zBZ;OS{)Y&+5*wB^>GUGw$)5lm6Ez@OgyQ3JhrEEe#INGE({tS6ot)sgydc;(^$n9`Y-$r)^c&Y*kbh)e%)KEs3>^ zUKdr_Rx`3~XmzLYMk}smB{``YnaLF&i|y&GUvWvNRZCfQu~DPWs$)B%q10=l(nzNo zcEh$)viv41p3<|bmQ2%&0VbXQKOT$k{}15{8=4FO2tWV=5P$##AOHafKmY=VPQbhW zKhFO@blr{yLjVF0fB*y_009U<00Izzz#$XppZ`Dq2O~Tc9tav;!2|&aKmY;|fB*y_ z009U<00Izr9|V^8Bl&!+|MPk;@0mZifI?4CJZFA9mS5r~=iyz;pi9&82*h$rp-Fl4 zFDuZLDfJkO4dqxbkNyw*y==?i41YZ}u^!{G-uM5!@EariE&M6`PFENvO6Lfj!(J4f sF+l(V5P$##AOHafKmY;|fB*y_@V^iU^D&m?`Tm0A`ioGA=VP(hKPTDD2mk;8 literal 32768 zcmeI4O^@3|7{~26>+Eh`W_K%;1FAYyUA1AmmOY8{VhPcZx^0w~ZSzu839(5VgAB>0 zU1v)R5>;D106icfz5txy-U=Zh@d4-oiAxa&R8``_0jb;=C+n>3*kMarsMNeJ-gD zq4a4KJ!V4T8w@&yzKy*c>qXf00e*l5cr=7pvUa@&!`Hw z-U@}{tE=oM9}U_UyIRxGwkw)pwBOYX`*o;LQ}YcKH}Y?kRot>mEqttXXP7=so8|Ix+}gR^nI@aoik%iNRvYSRwKl#J*VI#LO|2Hx`pBhW`qDeC z1m39PlWJL|H7exmh5Sj?%xRuAom)B7?`})}(YDp%Co_MxR;=V}7jQ|vK&!Re2#421 zA~Vm&ORFrSZ*{b5#+5D&bvD~OgZ?nRX~(!J*;DhkSUwa#c#yr_9QKPY0~2S1 ze0*(}Xq;G*@!Y!NVmU+iLf;Hkm zpsUa5cMi+~0U!VbfB+Bx0zd!=00AHX1b_e#crghaAtIq4F(YN< zJ%eI-#a4#Ml2vAhPT0``hXaAixIk9Sk+fA{&&VM*aN1r*8kgBMvPj(o&|NeBzl%Oc zrdK$C01yBIKmZ5;0U!VbfB+Bx0zd!=0D-4MV09dm`vm{yKKsMALX*)ycZ933;}SmM ze*kl*7wm;5;(v4fe=&TYL7$;lW8cLZ(MQpbqX!~iMP8$sZ~y@y00e*l5C8%|00;m9 zAn=?M&=*6@OLC%ERL`r#==Zes?e;eR7(rFU;tQ2t>^Ky0WYK{A{kotRRaiKUWS_5B)n=8B8Qa7L}wV znE?8YS$4PokRu}!;106ZYbsV2ST4?*@4GM-&G>&ldWS*Zpf)-X z`yqBMwibO5y%XgkUpp*70tf&BAOHk_01yBIKmZ5;0U+?75~wfo%zClNR<7ey`nEB^ zyCKbZn}W5Rnj%8Re+k*4a`lD%8%-rMe#@%V=$^{e=l5?^BDN*`(hAQUDi)bH`~5Th zK2{Rrwv9Gu^IBi0 z)?6xAj!d;ia`YAf00e*l5C8%|00;nqCniwf=V-t>{Hwa{ zetRHq^9flYo%WvVaI0L{eE%Pheq_*J=nwP= z{fd632{?cN5C8%|00;m9AOHk_01yBIKmZ5;f#;h*D9EyGaD^Y8m*+<3rQq<)A#QYz L1bA9*feZf)^KbC6 diff --git a/migrations/20220209204150-create-session.js b/migrations/20220209204150-create-session.js new file mode 100644 index 0000000..2695cf5 --- /dev/null +++ b/migrations/20220209204150-create-session.js @@ -0,0 +1,30 @@ +'use strict'; +module.exports = { + async up(queryInterface, Sequelize) { + await queryInterface.createTable('Sessions', { + id: { + allowNull: false, + autoIncrement: true, + primaryKey: true, + type: Sequelize.INTEGER + }, + sessionid: { + type: Sequelize.TEXT + }, + agentid: { + type: Sequelize.TEXT + }, + createdAt: { + allowNull: false, + type: Sequelize.DATE + }, + updatedAt: { + allowNull: false, + type: Sequelize.DATE + } + }); + }, + async down(queryInterface, Sequelize) { + await queryInterface.dropTable('Sessions'); + } +}; \ No newline at end of file diff --git a/models/index.js b/models/index.js index a4a0395..c475401 100644 --- a/models/index.js +++ b/models/index.js @@ -26,6 +26,8 @@ fs db.User.belongsToMany(db.Message, {foreignKey: 'UserId', through: 'UserMessages'}); db.Message.belongsTo(db.User, {through: 'UserMessages'}); + db.User.belongsToMany(db.Session, {foreignKey: 'UserId', through: 'UserSessions'}); + db.Session.belongsTo(db.User, {through: 'UserSessions'}); Object.keys(db).forEach(modelName => { if (db[modelName].associate) { diff --git a/models/session.js b/models/session.js new file mode 100644 index 0000000..caa0817 --- /dev/null +++ b/models/session.js @@ -0,0 +1,24 @@ +'use strict'; +const { + Model +} = require('sequelize'); +module.exports = (sequelize, DataTypes) => { + class Session extends Model { + /** + * Helper method for defining associations. + * This method is not a part of Sequelize lifecycle. + * The `models/index` file will call this method automatically. + */ + static associate(models) { + // define association here + } + } + Session.init({ + sessionid: DataTypes.TEXT, + agentid: DataTypes.TEXT + }, { + sequelize, + modelName: 'Session', + }); + return Session; +}; \ No newline at end of file diff --git a/routes/login.js b/routes/login.js index 6475875..6ef9f5b 100644 --- a/routes/login.js +++ b/routes/login.js @@ -1,7 +1,9 @@ var express = require('express'); +const { UniqueConstraintError } = require('sequelize/dist/index.js'); var router = express.Router(); const db = require('../models'); var User = db.User; +const crypto = require('crypto'); /* GET home page. */ router.get('/', function(req, res, next) { @@ -17,7 +19,20 @@ router.post('/', async function(req, res, next) { } }); console.log(user); - res.render('login'); + if(user) { + var uuid = crypto.randomUUID(); + var agentid = req.rawHeaders[3]; + var session = await user.createSession({ + sessionid: uuid, + agentid: agentid + }); + console.log(session); + var maxage = 60 * 60 * 24; + res.cookie('sessionid', session.sessionid, {maxAge: maxage, httpOnly: true}); + res.redirect('/'); + } else { + res.render('login'); + } }); module.exports = router; diff --git a/routes/register.js b/routes/register.js new file mode 100644 index 0000000..93e88d7 --- /dev/null +++ b/routes/register.js @@ -0,0 +1,27 @@ +var express = require('express'); +var router = express.Router(); +const db = require('../models'); +var User = db.User; +var Session = db.Session; + +/* GET home page. */ +router.get('/', function(req, res, next) { + res.render('register'); +}); + +router.post('/', async function(req, res, next) { + console.log(req.body); + if((req.body.username === '') || (req.body.email === '') || (req.body.password === '')) { + res.redirect('/register'); + } else { + var user = await User.create({ + name: req.body.username, + email: req.body.email, + password: req.body.password, + }); + console.log(user); + res.redirect('/login'); + } +}); + +module.exports = router; diff --git a/views/login.ejs b/views/login.ejs index f3bf712..2c4154f 100644 --- a/views/login.ejs +++ b/views/login.ejs @@ -27,7 +27,7 @@ diff --git a/views/register.ejs b/views/register.ejs new file mode 100644 index 0000000..31f2612 --- /dev/null +++ b/views/register.ejs @@ -0,0 +1,42 @@ + + + + + Social Robot + + + + + + +
+
+

Register new account

+
+
+
+
+
+
+
+
+
+ + Already have account? +
+
+
+
+
+ + \ No newline at end of file