mirror of
				https://github.com/NodeBB/NodeBB.git
				synced 2025-11-03 20:45:58 +01:00 
			
		
		
		
	closes #4261
This commit is contained in:
		@@ -87,8 +87,7 @@ function registerAndLoginUser(req, res, userData, callback) {
 | 
				
			|||||||
		function(_uid, next) {
 | 
							function(_uid, next) {
 | 
				
			||||||
			uid = _uid;
 | 
								uid = _uid;
 | 
				
			||||||
			if (res.locals.processLogin === true) {
 | 
								if (res.locals.processLogin === true) {
 | 
				
			||||||
				user.logIP(uid, req.ip);
 | 
									doLogin(req, uid, next);
 | 
				
			||||||
				req.login({uid: uid}, next);
 | 
					 | 
				
			||||||
			} else {
 | 
								} else {
 | 
				
			||||||
				next();
 | 
									next();
 | 
				
			||||||
			}
 | 
								}
 | 
				
			||||||
@@ -172,37 +171,11 @@ function continueLogin(req, res, next) {
 | 
				
			|||||||
				res.status(200).send(nconf.get('relative_path') + '/reset/' + code);
 | 
									res.status(200).send(nconf.get('relative_path') + '/reset/' + code);
 | 
				
			||||||
			});
 | 
								});
 | 
				
			||||||
		} else {
 | 
							} else {
 | 
				
			||||||
			req.login({
 | 
								doLogin(req, userData.uid, function(err) {
 | 
				
			||||||
				uid: userData.uid
 | 
					 | 
				
			||||||
			}, function(err) {
 | 
					 | 
				
			||||||
				if (err) {
 | 
									if (err) {
 | 
				
			||||||
					return res.status(403).send(err.message);
 | 
										return res.status(403).send(err.message);
 | 
				
			||||||
				}
 | 
									}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
				if (userData.uid) {
 | 
					 | 
				
			||||||
					var uuid = utils.generateUUID();
 | 
					 | 
				
			||||||
					req.session.meta = {};
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
					// Associate IP used during login with user account
 | 
					 | 
				
			||||||
					user.logIP(userData.uid, req.ip);
 | 
					 | 
				
			||||||
					req.session.meta.ip = req.ip;
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
					// Associate metadata retrieved via user-agent
 | 
					 | 
				
			||||||
					req.session.meta = _.extend(req.session.meta, {
 | 
					 | 
				
			||||||
						uuid: uuid,
 | 
					 | 
				
			||||||
						datetime: Date.now(),
 | 
					 | 
				
			||||||
						platform: req.useragent.platform,
 | 
					 | 
				
			||||||
						browser: req.useragent.browser,
 | 
					 | 
				
			||||||
						version: req.useragent.version
 | 
					 | 
				
			||||||
					});
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
					// Associate login session with user
 | 
					 | 
				
			||||||
					user.auth.addSession(userData.uid, req.sessionID);
 | 
					 | 
				
			||||||
					db.setObjectField('uid:' + userData.uid + 'sessionUUID:sessionId', uuid, req.sessionID);
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
					plugins.fireHook('action:user.loggedIn', userData.uid);
 | 
					 | 
				
			||||||
				}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
				if (!req.session.returnTo) {
 | 
									if (!req.session.returnTo) {
 | 
				
			||||||
					res.status(200).send(nconf.get('relative_path') + '/');
 | 
										res.status(200).send(nconf.get('relative_path') + '/');
 | 
				
			||||||
				} else {
 | 
									} else {
 | 
				
			||||||
@@ -216,6 +189,40 @@ function continueLogin(req, res, next) {
 | 
				
			|||||||
	})(req, res, next);
 | 
						})(req, res, next);
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					function doLogin(req, uid, callback) {
 | 
				
			||||||
 | 
						req.login({uid: uid}, function(err) {
 | 
				
			||||||
 | 
							if (err) {
 | 
				
			||||||
 | 
								return callback(err);
 | 
				
			||||||
 | 
							}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
							if (uid) {
 | 
				
			||||||
 | 
								var uuid = utils.generateUUID();
 | 
				
			||||||
 | 
								req.session.meta = {};
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
								// Associate IP used during login with user account
 | 
				
			||||||
 | 
								user.logIP(uid, req.ip);
 | 
				
			||||||
 | 
								req.session.meta.ip = req.ip;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
								// Associate metadata retrieved via user-agent
 | 
				
			||||||
 | 
								req.session.meta = _.extend(req.session.meta, {
 | 
				
			||||||
 | 
									uuid: uuid,
 | 
				
			||||||
 | 
									datetime: Date.now(),
 | 
				
			||||||
 | 
									platform: req.useragent.platform,
 | 
				
			||||||
 | 
									browser: req.useragent.browser,
 | 
				
			||||||
 | 
									version: req.useragent.version
 | 
				
			||||||
 | 
								});
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
								// Associate login session with user
 | 
				
			||||||
 | 
								user.auth.addSession(uid, req.sessionID);
 | 
				
			||||||
 | 
								db.setObjectField('uid:' + uid + 'sessionUUID:sessionId', uuid, req.sessionID);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
								plugins.fireHook('action:user.loggedIn', uid);
 | 
				
			||||||
 | 
							}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
							callback();
 | 
				
			||||||
 | 
						});
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
authenticationController.localLogin = function(req, username, password, next) {
 | 
					authenticationController.localLogin = function(req, username, password, next) {
 | 
				
			||||||
	if (!username) {
 | 
						if (!username) {
 | 
				
			||||||
		return next(new Error('[[error:invalid-username]]'));
 | 
							return next(new Error('[[error:invalid-username]]'));
 | 
				
			||||||
 
 | 
				
			|||||||
		Reference in New Issue
	
	Block a user