diff options
Diffstat (limited to 'server/models')
-rw-r--r-- | server/models/Session.js | 23 | ||||
-rw-r--r-- | server/models/User.js | 33 |
2 files changed, 23 insertions, 33 deletions
diff --git a/server/models/Session.js b/server/models/Session.js index c410bb9..06a4369 100644 --- a/server/models/Session.js +++ b/server/models/Session.js @@ -1,20 +1,31 @@ const mongoose = require("mongoose"); +const jwt = require('jsonwebtoken'); const sessionSchema = new mongoose.Schema({ - user: { + userId: { type : mongoose.Schema.Types.ObjectId, ref : 'User' }, - refreshToken: { - type: String, - required: true - }, lastAccess: { type: Date, default: Date.now(), - index: { expires: 90 } + index: { expires: parseInt(process.env.DB_SESSION_MAX_AGE) } } }); +sessionSchema.methods.setAccessDate = function (user) { + this.lastAccess = Date.now(); + console.log('refreshing time in db') + this.save(); +} + +sessionSchema.methods.generateJwtToken = function (user) { + return jwt.sign( + { sessionId: this._id.toString(), user: JSON.stringify(user) }, + process.env.JWT_SECRET, + { expiresIn: parseInt(process.env.JWT_TOKEN_MAX_AGE) } + ); +}; + module.exports = mongoose.model('Session', sessionSchema); diff --git a/server/models/User.js b/server/models/User.js index ef3d94e..02cfe25 100644 --- a/server/models/User.js +++ b/server/models/User.js @@ -1,8 +1,5 @@ const mongoose = require("mongoose"); const bcrypt = require('bcryptjs'); -const randtoken = require('rand-token'); -const jwt = require('jsonwebtoken'); -const Session = require('./Session'); const userSchema = new mongoose.Schema({ email: { @@ -25,31 +22,13 @@ const userSchema = new mongoose.Schema({ min: 4, max: 1024, }, -}); - -userSchema.methods.generateJwtToken = async function (currentRefToken) { - const refreshToken = currentRefToken ? currentRefToken : randtoken.uid(256); - - if (!currentRefToken) { - const session = new Session({ user: this, refreshToken }); - await session.save(); + language: { + type: String, + required: true, + min: 2, + max: 2, } - - return jwt.sign( - { _id: this._id.toString(), refreshToken }, - process.env.JWT_SECRET, - { expiresIn: parseInt(process.env.JWT_TOKEN_MAX_AGE) } - ); -} - -userSchema.methods.endSession = async function (ref) { - this.sessions = this.sessions.filter((session) => { - return session.ref !== ref; - }); - - await this.save(); - return null; -} +}); userSchema.statics.findByCredentials = async (email, password) => { const user = await User.findOne({ email }); |