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

Merge pull request #138 from weseek/imprv/admin-user

Imprv/128 add last logged in date
Yuki Takei 8 лет назад
Родитель
Сommit
68662ad9be
3 измененных файлов с 14 добавлено и 1 удалено
  1. 8 0
      lib/models/user.js
  2. 5 0
      lib/routes/login.js
  3. 1 1
      lib/views/admin/users.html

+ 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) {

+ 5 - 0
lib/routes/login.js

@@ -81,6 +81,11 @@ 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) {
+              debug(err);
+            }
+          });
           loginSuccess(req, res, userData);
         } else {
           loginFailure(req, res);

+ 1 - 1
lib/views/admin/users.html

@@ -166,7 +166,7 @@
             <td>{{ sUser.name }}</td>
             <td>{{ sUser.email }}</td>
             <td>{{ sUser.createdAt|date('Y-m-d') }}</td>
-            <td>{{ sUser.lastLoginAt }}</td>
+            <td>{{ sUser.lastLoginAt|date('Y-m-d') }}</td>
             <td>
               <div class="btn-group admin-user-menu">
                 <button type="button" class="btn btn-default dropdown-toggle" data-toggle="dropdown">