|
|
@@ -11,6 +11,7 @@ UserHandler = require("../User/UserHandler")
|
|
|
UserSessionsManager = require("../User/UserSessionsManager")
|
|
|
Analytics = require "../Analytics/AnalyticsManager"
|
|
|
passport = require 'passport'
|
|
|
+NotificationsBuilder = require("../Notifications/NotificationsBuilder")
|
|
|
|
|
|
module.exports = AuthenticationController =
|
|
|
|
|
|
@@ -112,6 +113,7 @@ module.exports = AuthenticationController =
|
|
|
UserHandler.setupLoginData(user, ()->)
|
|
|
LoginRateLimiter.recordSuccessfulLogin(user.email)
|
|
|
AuthenticationController._recordSuccessfulLogin(user._id)
|
|
|
+ AuthenticationController.ipMatchCheck(req, user)
|
|
|
Analytics.recordEvent(user._id, "user-logged-in", {ip:req.ip})
|
|
|
Analytics.identifyUser(user._id, req.sessionID)
|
|
|
logger.log email: user.email, user_id: user._id.toString(), "successful log in"
|
|
|
@@ -119,6 +121,13 @@ module.exports = AuthenticationController =
|
|
|
# capture the request ip for use when creating the session
|
|
|
user._login_req_ip = req.ip
|
|
|
|
|
|
+ ipMatchCheck: (req, user) ->
|
|
|
+ if req.ip != user.lastLoginIp
|
|
|
+ NotificationsBuilder.ipMatcherAffiliation(user._id, req.ip).create()
|
|
|
+ UserUpdater.updateUser user._id.toString(), {
|
|
|
+ $set: { "lastLoginIp": req.ip }
|
|
|
+ }
|
|
|
+
|
|
|
setInSessionUser: (req, props) ->
|
|
|
for key, value of props
|
|
|
if req?.session?.passport?.user?
|