mirror of
https://github.com/NodeBB/NodeBB.git
synced 2025-11-02 20:16:04 +01:00
logout/login changes, updateHeader changes
This commit is contained in:
3
app.js
3
app.js
@@ -82,9 +82,12 @@
|
|||||||
|
|
||||||
var templates = require('./public/src/templates.js'),
|
var templates = require('./public/src/templates.js'),
|
||||||
webserver = require('./src/webserver.js'),
|
webserver = require('./src/webserver.js'),
|
||||||
|
SocketIO = require('socket.io').listen(global.server, { log: false, transports: ['websocket', 'xhr-polling', 'jsonp-polling', 'flashsocket']}),
|
||||||
websockets = require('./src/websockets.js'),
|
websockets = require('./src/websockets.js'),
|
||||||
plugins = require('./src/plugins'); // Don't remove this - plugins initializes itself
|
plugins = require('./src/plugins'); // Don't remove this - plugins initializes itself
|
||||||
|
|
||||||
|
websockets.init(SocketIO);
|
||||||
|
|
||||||
global.templates = {};
|
global.templates = {};
|
||||||
templates.init([
|
templates.init([
|
||||||
'header', 'footer', 'logout', 'outgoing', 'admin/header', 'admin/footer', 'admin/index',
|
'header', 'footer', 'logout', 'outgoing', 'admin/header', 'admin/footer', 'admin/index',
|
||||||
|
|||||||
@@ -17,7 +17,9 @@ var socket,
|
|||||||
config = data;
|
config = data;
|
||||||
if(socket) {
|
if(socket) {
|
||||||
socket.disconnect();
|
socket.disconnect();
|
||||||
socket.socket.connect();
|
setTimeout(function() {
|
||||||
|
socket.socket.connect();
|
||||||
|
}, 200);
|
||||||
} else {
|
} else {
|
||||||
socket = io.connect(config.socket.address);
|
socket = io.connect(config.socket.address);
|
||||||
|
|
||||||
@@ -28,8 +30,8 @@ var socket,
|
|||||||
app.username = data.username;
|
app.username = data.username;
|
||||||
app.showLoginMessage();
|
app.showLoginMessage();
|
||||||
socket.emit('api:updateHeader', {
|
socket.emit('api:updateHeader', {
|
||||||
fields: ['username', 'picture', 'userslug']
|
fields: ['username', 'picture', 'userslug']
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
|
||||||
socket.on('event:alert', function (data) {
|
socket.on('event:alert', function (data) {
|
||||||
@@ -49,10 +51,15 @@ var socket,
|
|||||||
}, 1000);
|
}, 1000);
|
||||||
reconnecting = false;
|
reconnecting = false;
|
||||||
reconnectTries = 0;
|
reconnectTries = 0;
|
||||||
socket.emit('api:updateHeader', {
|
|
||||||
fields: ['username', 'picture', 'userslug']
|
|
||||||
});
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
socket.emit('api:updateHeader', {
|
||||||
|
fields: ['username', 'picture', 'userslug']
|
||||||
|
});
|
||||||
|
});
|
||||||
|
|
||||||
|
socket.on('event:disconnect', function() {
|
||||||
|
socket.socket.connect();
|
||||||
});
|
});
|
||||||
|
|
||||||
socket.on('reconnecting', function (data) {
|
socket.on('reconnecting', function (data) {
|
||||||
|
|||||||
@@ -3,8 +3,7 @@
|
|||||||
stats_topics = document.getElementById('stats_topics'),
|
stats_topics = document.getElementById('stats_topics'),
|
||||||
stats_posts = document.getElementById('stats_posts'),
|
stats_posts = document.getElementById('stats_posts'),
|
||||||
stats_online = document.getElementById('stats_online'),
|
stats_online = document.getElementById('stats_online'),
|
||||||
user_label = document.getElementById('user_label'),
|
user_label = document.getElementById('user_label');
|
||||||
right_menu = document.getElementById('right-menu');
|
|
||||||
|
|
||||||
socket.emit('user.count', {});
|
socket.emit('user.count', {});
|
||||||
socket.on('user.count', function(data) {
|
socket.on('user.count', function(data) {
|
||||||
@@ -25,6 +24,7 @@
|
|||||||
socket.emit('api:updateHeader', {
|
socket.emit('api:updateHeader', {
|
||||||
fields: ['username', 'picture', 'userslug']
|
fields: ['username', 'picture', 'userslug']
|
||||||
});
|
});
|
||||||
|
|
||||||
socket.on('api:updateHeader', function(data) {
|
socket.on('api:updateHeader', function(data) {
|
||||||
jQuery('#search-button').on('click', function() {
|
jQuery('#search-button').on('click', function() {
|
||||||
jQuery('#search-fields').removeClass('hide').show();
|
jQuery('#search-fields').removeClass('hide').show();
|
||||||
@@ -42,14 +42,19 @@
|
|||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
|
||||||
var rightMenu = $('#right-menu'),
|
var loggedInMenu = $('#logged-in-menu'),
|
||||||
isLoggedIn = data.uid > 0;
|
isLoggedIn = data.uid > 0;
|
||||||
|
|
||||||
if (isLoggedIn) {
|
if (isLoggedIn) {
|
||||||
jQuery('.nodebb-loggedin').show();
|
jQuery('.nodebb-loggedin').show();
|
||||||
jQuery('.nodebb-loggedout').hide();
|
jQuery('.nodebb-loggedout').hide();
|
||||||
|
|
||||||
var userLabel = rightMenu.find('#user_label');
|
$('#logged-out-menu').addClass('hide');
|
||||||
|
$('#logged-in-menu').removeClass('hide');
|
||||||
|
|
||||||
|
$('#search-button').show();
|
||||||
|
|
||||||
|
var userLabel = loggedInMenu.find('#user_label');
|
||||||
if (userLabel.length) {
|
if (userLabel.length) {
|
||||||
if (data['userslug'])
|
if (data['userslug'])
|
||||||
userLabel.attr('href', '/user/' + data['userslug']);
|
userLabel.attr('href', '/user/' + data['userslug']);
|
||||||
@@ -57,18 +62,8 @@
|
|||||||
userLabel.find('img').attr('src', data['picture']);
|
userLabel.find('img').attr('src', data['picture']);
|
||||||
if (data['username'])
|
if (data['username'])
|
||||||
userLabel.find('span').html(data['username']);
|
userLabel.find('span').html(data['username']);
|
||||||
} else {
|
|
||||||
rightMenu.empty();
|
|
||||||
var userli = $('<li> \
|
|
||||||
<a id="user_label" href="/user/' + data['userslug'] + '"> \
|
|
||||||
<img src="' + data['picture'] + '"/> \
|
|
||||||
<span>' + data['username'] + '</span> \
|
|
||||||
</a> \
|
|
||||||
</li>');
|
|
||||||
rightMenu.append(userli);
|
|
||||||
|
|
||||||
var logoutli = $('<li><a href="#">Log out</a></li>');
|
$('#logout-link').on('click', function() {
|
||||||
logoutli.on('click', function() {
|
|
||||||
var csrf_token = $('#csrf_token').val();
|
var csrf_token = $('#csrf_token').val();
|
||||||
|
|
||||||
$.post(RELATIVE_PATH + '/logout', {
|
$.post(RELATIVE_PATH + '/logout', {
|
||||||
@@ -77,23 +72,16 @@
|
|||||||
window.location = RELATIVE_PATH + '/';
|
window.location = RELATIVE_PATH + '/';
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
rightMenu.append(logoutli);
|
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
$('#search-button').hide();
|
$('#search-button').hide();
|
||||||
|
|
||||||
jQuery('.nodebb-loggedin').hide();
|
jQuery('.nodebb-loggedin').hide();
|
||||||
jQuery('.nodebb-loggedout').show();
|
jQuery('.nodebb-loggedout').show();
|
||||||
|
|
||||||
rightMenu.html('');
|
$('#logged-out-menu').removeClass('hide');
|
||||||
|
$('#logged-in-menu').addClass('hide');
|
||||||
|
|
||||||
var registerEl = document.createElement('li'),
|
|
||||||
loginEl = document.createElement('li');
|
|
||||||
|
|
||||||
registerEl.innerHTML = '<a href="/register">Register</a>';
|
|
||||||
loginEl.innerHTML = '<a href="/login">Login</a>';
|
|
||||||
|
|
||||||
right_menu.appendChild(registerEl);
|
|
||||||
right_menu.appendChild(loginEl);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
$('#main-nav a,#right-menu a').off('click').on('click', function() {
|
$('#main-nav a,#right-menu a').off('click').on('click', function() {
|
||||||
|
|||||||
@@ -65,8 +65,8 @@
|
|||||||
<button id="search-button" type="button" class="btn btn-link"><i class="icon-search"></i></button>
|
<button id="search-button" type="button" class="btn btn-link"><i class="icon-search"></i></button>
|
||||||
</form>
|
</form>
|
||||||
|
|
||||||
<ul id="right-menu" class="nav navbar-nav navbar-right">
|
<ul id="logged-in-menu" class="nav navbar-nav navbar-right hide">
|
||||||
<li class="notifications dropdown text-center hidden-xs">
|
<li id="notifications-list" class="notifications dropdown text-center hidden-xs">
|
||||||
<a class="dropdown-toggle" data-toggle="dropdown" href="#" id="notif_dropdown"><i class="icon-circle-blank"></i></a>
|
<a class="dropdown-toggle" data-toggle="dropdown" href="#" id="notif_dropdown"><i class="icon-circle-blank"></i></a>
|
||||||
<ul id="notif-list" class="dropdown-menu" aria-labelledby="notif_dropdown">
|
<ul id="notif-list" class="dropdown-menu" aria-labelledby="notif_dropdown">
|
||||||
<li>
|
<li>
|
||||||
@@ -74,6 +74,26 @@
|
|||||||
</li>
|
</li>
|
||||||
</ul>
|
</ul>
|
||||||
</li>
|
</li>
|
||||||
|
|
||||||
|
<li>
|
||||||
|
<a id="user_label" href="">
|
||||||
|
<img src=""/>
|
||||||
|
<span></span>
|
||||||
|
</a>
|
||||||
|
</li>
|
||||||
|
|
||||||
|
<li id="logout-link">
|
||||||
|
<a href="#">Log out</a>
|
||||||
|
</li>
|
||||||
|
</ul>
|
||||||
|
|
||||||
|
<ul id="logged-out-menu" class="nav navbar-nav navbar-right">
|
||||||
|
<li id="register-link">
|
||||||
|
<a href="/register">Register</a>
|
||||||
|
</li>
|
||||||
|
<li id="login-link">
|
||||||
|
<a href="/login">Login</a>
|
||||||
|
</li>
|
||||||
</ul>
|
</ul>
|
||||||
|
|
||||||
<div class="pagination-block">
|
<div class="pagination-block">
|
||||||
|
|||||||
@@ -94,6 +94,9 @@
|
|||||||
if (req.user && req.user.uid > 0) {
|
if (req.user && req.user.uid > 0) {
|
||||||
winston.info('[Auth] Session ' + req.sessionID + ' logout (uid: ' + req.user.uid + ')');
|
winston.info('[Auth] Session ' + req.sessionID + ' logout (uid: ' + req.user.uid + ')');
|
||||||
|
|
||||||
|
var ws = require('./../websockets');
|
||||||
|
ws.logoutUser(req.user.uid);
|
||||||
|
|
||||||
req.logout();
|
req.logout();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -1,8 +1,5 @@
|
|||||||
var SocketIO = require('socket.io').listen(global.server, {
|
|
||||||
log: false,
|
var cookie = require('cookie'),
|
||||||
transports: ['websocket', 'xhr-polling', 'jsonp-polling', 'flashsocket']
|
|
||||||
}),
|
|
||||||
cookie = require('cookie'),
|
|
||||||
express = require('express'),
|
express = require('express'),
|
||||||
user = require('./user.js'),
|
user = require('./user.js'),
|
||||||
Groups = require('./groups'),
|
Groups = require('./groups'),
|
||||||
@@ -32,11 +29,26 @@ var SocketIO = require('socket.io').listen(global.server, {
|
|||||||
plugins = require('./plugins'),
|
plugins = require('./plugins'),
|
||||||
winston = require('winston');
|
winston = require('winston');
|
||||||
|
|
||||||
(function(io) {
|
//(function(io) {
|
||||||
|
|
||||||
var users = {},
|
var users = {},
|
||||||
userSockets = {},
|
userSockets = {},
|
||||||
rooms = {};
|
rooms = {};
|
||||||
|
|
||||||
|
module.exports.logoutUser = function(uid) {
|
||||||
|
if(userSockets[uid] && userSockets[uid].length) {
|
||||||
|
for(var i=0; i< userSockets[uid].length; ++i) {
|
||||||
|
userSockets[uid][i].emit('event:disconnect');
|
||||||
|
userSockets[uid][i].disconnect();
|
||||||
|
|
||||||
|
if(!userSockets[uid])
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
module.exports.init = function(io) {
|
||||||
|
|
||||||
global.io = io;
|
global.io = io;
|
||||||
|
|
||||||
io.sockets.on('connection', function(socket) {
|
io.sockets.on('connection', function(socket) {
|
||||||
@@ -886,4 +898,4 @@ var SocketIO = require('socket.io').listen(global.server, {
|
|||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
|
||||||
}(SocketIO));
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user