mirror of
https://github.com/NodeBB/NodeBB.git
synced 2025-11-01 03:26:04 +01:00
Added admin-only invites
This commit is contained in:
@@ -108,7 +108,7 @@ Controllers.register = function(req, res, next) {
|
|||||||
|
|
||||||
async.waterfall([
|
async.waterfall([
|
||||||
function(next) {
|
function(next) {
|
||||||
if (registrationType === 'invite-only') {
|
if (registrationType === 'invite-only' || registrationType === 'admin-invite-only') {
|
||||||
user.verifyInvitation(req.query, next);
|
user.verifyInvitation(req.query, next);
|
||||||
} else {
|
} else {
|
||||||
next();
|
next();
|
||||||
|
|||||||
@@ -155,9 +155,11 @@ function render(req, res, data, next) {
|
|||||||
return next(err);
|
return next(err);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!req.uid) {
|
var registrationType = meta.config.registrationType;
|
||||||
return next(new Error('[[error:no-privileges]]'));
|
|
||||||
}
|
data.templateData.maximumInvites = meta.config.maximumInvites;
|
||||||
|
data.templateData.inviteOnly = registrationType === 'invite-only' || registrationType === 'admin-invite-only';
|
||||||
|
data.templateData['reputation:disabled'] = parseInt(meta.config['reputation:disabled'], 10) === 1;
|
||||||
|
|
||||||
user.getInvitesNumber(req.uid, function(err, num) {
|
user.getInvitesNumber(req.uid, function(err, num) {
|
||||||
if (err) {
|
if (err) {
|
||||||
@@ -165,11 +167,9 @@ function render(req, res, data, next) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
data.templateData.invites = num;
|
data.templateData.invites = num;
|
||||||
data.templateData.maximumInvites = meta.config.maximumInvites;
|
|
||||||
data.templateData.inviteOnly = meta.config.registrationType === 'invite-only';
|
|
||||||
data.templateData['reputation:disabled'] = parseInt(meta.config['reputation:disabled'], 10) === 1;
|
|
||||||
res.render('users', data.templateData);
|
res.render('users', data.templateData);
|
||||||
});
|
});
|
||||||
|
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -270,24 +270,27 @@ SocketUser.invite = function(socket, email, callback) {
|
|||||||
return callback(new Error('[[error:invalid-data]]'));
|
return callback(new Error('[[error:invalid-data]]'));
|
||||||
}
|
}
|
||||||
|
|
||||||
if (meta.config.registrationType !== 'invite-only') {
|
var registrationType = meta.config.registrationType
|
||||||
|
|
||||||
|
if (registrationType !== 'invite-only' && registrationType !== 'admin-invite-only') {
|
||||||
return callback(new Error('[[error:forum-not-invite-only]]'));
|
return callback(new Error('[[error:forum-not-invite-only]]'));
|
||||||
}
|
}
|
||||||
|
|
||||||
var max = meta.config.maximumInvites;
|
var max = meta.config.maximumInvites;
|
||||||
|
|
||||||
|
user.isAdministrator(socket.uid, function(err, admin) {
|
||||||
|
if (err) {
|
||||||
|
return callback(err);
|
||||||
|
}
|
||||||
|
if (registrationType === 'admin-invite-only' && !admin) {
|
||||||
|
return callback(new Error('[[error:no-privileges]]'));
|
||||||
|
}
|
||||||
if (max) {
|
if (max) {
|
||||||
async.waterfall([
|
async.waterfall([
|
||||||
function(next) {
|
function(next) {
|
||||||
user.getInvitesNumber(socket.uid, next);
|
user.getInvitesNumber(socket.uid, next);
|
||||||
},
|
},
|
||||||
function(invites, next) {
|
function(invites, next) {
|
||||||
user.isAdministrator(socket.uid, function(err, admin) {
|
|
||||||
next(err, invites, admin);
|
|
||||||
});
|
|
||||||
},
|
|
||||||
function(invites, admin, next) {
|
|
||||||
console.log(admin, invites, max);
|
|
||||||
if (!admin && invites > max) {
|
if (!admin && invites > max) {
|
||||||
return next(new Error('[[error:invite-maximum-met, ' + invites + ', ' + max + ']]'));
|
return next(new Error('[[error:invite-maximum-met, ' + invites + ', ' + max + ']]'));
|
||||||
}
|
}
|
||||||
@@ -300,6 +303,8 @@ SocketUser.invite = function(socket, email, callback) {
|
|||||||
} else {
|
} else {
|
||||||
user.sendInvitationEmail(socket.uid, email, callback);
|
user.sendInvitationEmail(socket.uid, email, callback);
|
||||||
}
|
}
|
||||||
|
});
|
||||||
|
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -33,6 +33,7 @@
|
|||||||
<option value="normal">Normal</option>
|
<option value="normal">Normal</option>
|
||||||
<option value="admin-approval">Admin Approval</option>
|
<option value="admin-approval">Admin Approval</option>
|
||||||
<option value="invite-only">Invite Only</option>
|
<option value="invite-only">Invite Only</option>
|
||||||
|
<option value="admin-invite-only">Admin Invite Only</option>
|
||||||
<option value="disabled">No registration</option>
|
<option value="disabled">No registration</option>
|
||||||
</select>
|
</select>
|
||||||
</div>
|
</div>
|
||||||
|
|||||||
Reference in New Issue
Block a user