Просмотр исходного кода

[WIP] Imprv/128 add last logged in date

Takahiro Tsuchiya 8 лет назад
Родитель
Сommit
45cfb64637
2 измененных файлов с 18 добавлено и 0 удалено
  1. 8 0
      lib/models/user.js
  2. 10 0
      lib/routes/login.js

+ 8 - 0
lib/models/user.js

@@ -42,6 +42,7 @@ module.exports = function(crowi) {
     },
     status: { type: Number, required: true, default: STATUS_ACTIVE, index: true  },
     createdAt: { type: Date, default: Date.now },
+    lastLoginAt: { type: Date, default: Date.now },
     admin: { type: Boolean, default: 0, index: true  }
   });
   userSchema.plugin(mongoosePaginate);
@@ -138,6 +139,13 @@ module.exports = function(crowi) {
     });
   };
 
+  userSchema.methods.updateLastLoginAt = function(lastLoginAt, callback) {
+    this.lastLoginAt = lastLoginAt;
+    this.save(function(err, userData) {
+      return callback(err, userData);
+    });
+  };
+
   userSchema.methods.updateIsGravatarEnabled = function(isGravatarEnabled, callback) {
     this.isGravatarEnabled = isGravatarEnabled;
     this.save(function(err, userData) {

+ 10 - 0
lib/routes/login.js

@@ -81,6 +81,16 @@ module.exports = function(crowi, app) {
       User.findUserByEmailAndPassword(email, password, function(err, userData) {
         debug('on login findUserByEmailAndPassword', err, userData);
         if (userData) {
+          userData.updateLastLoginAt(Date.now, function(err, userData) {
+            if (err) {
+              for (var e in err.errors) {
+                if (err.errors.hasOwnProperty(e)) {
+                  req.form.errors.push(err.errors[e].message);
+                }
+              }
+              return res.render('login', {});
+            }
+          });
           loginSuccess(req, res, userData);
         } else {
           loginFailure(req, res);