Skip to content

Commit 5f52f89

Browse files
committed
chore: track users' last login date (resolve #63)
1 parent 0145fcc commit 5f52f89

File tree

2 files changed

+18
-3
lines changed

2 files changed

+18
-3
lines changed

app/models/user.js

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@ const mongoose = require('mongoose')
66

77
const userSchema = mongoose.Schema({
88
created : Date,
9+
lastLoggedIn: Date,
910
local : {
1011
email : String,
1112
password : String,

config/passport.js

Lines changed: 17 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,12 @@ const LocalStrategy = require('passport-local').Strategy
99
, authConfig = require('./auth')
1010
, log = require('./log')()
1111

12+
function postUserLogin(user) {
13+
user.updateOne({ lastLoggedIn: new Date() })
14+
.then(() => {})
15+
.catch(console.error)
16+
}
17+
1218
module.exports = function (passport) {
1319

1420
passport.serializeUser((user, done) => {
@@ -72,6 +78,7 @@ module.exports = function (passport) {
7278

7379
if (!user.validPassword(password)) return done({ message: 'Wrong password.' })
7480

81+
postUserLogin(user) // async, don't wait
7582
return done(null, user)
7683
})
7784

@@ -91,6 +98,7 @@ module.exports = function (passport) {
9198

9299
User.findOne(query, (err, user) => {
93100
if (err || !user) return done(err || { message: 'Unable to authenticate.' }, false)
101+
postUserLogin(user) // async, don't wait
94102
done(null, user)
95103
})
96104
})))
@@ -109,6 +117,7 @@ module.exports = function (passport) {
109117
password = (password || '').trim()
110118
if (!user.validPassword(password)) return done({ message: 'Wrong password.' })
111119

120+
postUserLogin(user) // async, don't wait
112121
return done(null, user)
113122
})
114123
}))
@@ -131,7 +140,10 @@ module.exports = function (passport) {
131140
process.nextTick(() => {
132141
User.findOne({ 'facebook.id': profile.id }, (err, user) => {
133142
if (err) return done(err)
134-
if (user) return done(null, user)
143+
if (user) {
144+
postUserLogin(user) // async, don't wait
145+
return done(null, user)
146+
}
135147
else {
136148
const newUser = new User({
137149
created: Date.now()
@@ -168,8 +180,10 @@ module.exports = function (passport) {
168180
process.nextTick(() => {
169181
User.findOne({ 'google.id': profile.id }, (err, user) => {
170182
if (err) return done(err)
171-
172-
if (user) return done(null, user)
183+
if (user) {
184+
postUserLogin(user) // async, don't wait
185+
return done(null, user)
186+
}
173187
else {
174188
const newUser = new User({
175189
created: Date.now()

0 commit comments

Comments
 (0)