Add feature where only admins can invite new users.

This is controlled through the admin tab and a new field in the Realms table.

(imported from commit e78a6f48160e2a1bbc68d278beb726fe31515266)
This commit is contained in:
David Roe
2015-08-20 12:25:30 -07:00
committed by Tim Abbott
parent 809efc4f2b
commit 5b7f3466ba
8 changed files with 335 additions and 10 deletions

View File

@@ -75,7 +75,8 @@ exports.setup_page = function () {
realm_name: page_params.realm_name,
domain: page_params.domain,
realm_restricted_to_domain: page_params.realm_restricted_to_domain,
realm_invite_required: page_params.realm_invite_required
realm_invite_required: page_params.realm_invite_required,
realm_invite_by_admins_only: page_params.realm_invite_by_admins_only
};
var admin_tab = templates.render('admin_tab', options);
$("#administration").html(admin_tab);
@@ -83,6 +84,7 @@ exports.setup_page = function () {
$("#admin-realm-name-status").hide();
$("#admin-realm-restricted-to-domain-status").hide();
$("#admin-realm-invite-required-status").hide();
$("#admin-realm-invite-by-admins-only").hide();
// create loading indicators
loading.make_indicator($('#admin_page_users_loading_indicator'));
@@ -172,26 +174,40 @@ exports.setup_page = function () {
});
});
$("#id_realm_invite_required").change(function () {
if(this.checked) {
$("#id_realm_invite_by_admins_only").removeAttr("disabled");
$("#id_realm_invite_by_admins_only_label").removeClass("control-label-disabled");
} else {
$("#id_realm_invite_by_admins_only").attr("disabled", true);
$("#id_realm_invite_by_admins_only_label").addClass("control-label-disabled");
}
});
$(".administration").on("submit", "form.admin-realm", function (e) {
var name_status = $("#admin-realm-name-status").expectOne();
var restricted_to_domain_status = $("#admin-realm-restricted-to-domain-status").expectOne();
var invite_required_status = $("#admin-realm-invite-required-status").expectOne();
var invite_by_admins_only_status = $("#admin-realm-invite-by-admins-only-status").expectOne();
name_status.hide();
restricted_to_domain_status.hide();
invite_required_status.hide();
invite_by_admins_only_status.hide();
e.preventDefault();
e.preventDefault();
e.stopPropagation();
var new_name = $("#id_realm_name").val();
var new_restricted = $("#id_realm_restricted_to_domain").prop("checked");
var new_invite = $("#id_realm_invite_required").prop("checked");
var new_invite_by_admins_only = $("#id_realm_invite_by_admins_only").prop("checked");
var url = "/json/realm";
var data = {
name: JSON.stringify(new_name),
restricted_to_domain: JSON.stringify(new_restricted),
invite_required: JSON.stringify(new_invite)
invite_required: JSON.stringify(new_invite),
invite_by_admins_only: JSON.stringify(new_invite_by_admins_only)
};
channel.patch({
@@ -211,12 +227,20 @@ exports.setup_page = function () {
}
if (data.invite_required !== undefined) {
if (data.invite_required) {
ui.report_success("New users must be invited by e-mil!", invite_required_status);
ui.report_success("New users must be invited by e-mail!", invite_required_status);
}
else {
ui.report_success("New users may sign up online!", invite_required_status);
}
}
if (data.invite_by_admins_only !== undefined) {
if (data.invite_by_admins_only) {
ui.report_success("New users must be invited by an admin!", invite_by_admins_only_status);
}
else {
ui.report_success("Any user may now invite new users!", invite_by_admins_only_status);
}
}
},
error: function (xhr, error) {
ui.report_error("Failed!", xhr, name_status);