Skip to content

Commit

Permalink
settings: Fix updating realm join restrictions setting.
Browse files Browse the repository at this point in the history
This commit fixes the bug when updating
"Restrict email domains of new users?" setting by
adding data-setting-widget-type attribute to the select
element as get_input_element_value now expects every
element to have that attribute after 64c8262.

Due to this change, we also need to update the code in
populate_data_for_request function to not send invalid
parameter in the request. This change resulted in some
refactoring which now helps in not passing in the
"disallow_disposable_email_addresses" and
"email_restricted_to_domains" when these fields are
not changed.
  • Loading branch information
sahil839 authored and timabbott committed May 22, 2024
1 parent ed8d7ed commit 39c6a01
Show file tree
Hide file tree
Showing 3 changed files with 35 additions and 19 deletions.
34 changes: 34 additions & 0 deletions web/src/settings_components.ts
Original file line number Diff line number Diff line change
Expand Up @@ -901,6 +901,32 @@ export function check_property_changed(
return current_val !== proposed_val;
}

function get_request_data_for_org_join_restrictions(selected_val: string): {
disallow_disposable_email_addresses: boolean;
emails_restricted_to_domains: boolean;
} {
switch (selected_val) {
case "only_selected_domain": {
return {
emails_restricted_to_domains: true,
disallow_disposable_email_addresses: false,
};
}
case "no_disposable_email": {
return {
emails_restricted_to_domains: false,
disallow_disposable_email_addresses: true,
};
}
default: {
return {
disallow_disposable_email_addresses: false,
emails_restricted_to_domains: false,
};
}
}
}

export function populate_data_for_request(
$subsection_elem: JQuery,
for_realm_default_settings: boolean,
Expand Down Expand Up @@ -966,6 +992,14 @@ export function populate_data_for_request(
});
continue;
}

if (property_name === "org_join_restrictions") {
data = {
...data,
...get_request_data_for_org_join_restrictions(input_value.toString()),
};
continue;
}
data[property_name] = input_value;
}
}
Expand Down
18 changes: 0 additions & 18 deletions web/src/settings_org.js
Original file line number Diff line number Diff line change
Expand Up @@ -880,24 +880,6 @@ export function register_save_discard_widget_handlers(
let data = {};

switch (subsection) {
case "join_settings": {
const org_join_restrictions = $("#id_realm_org_join_restrictions").val();
switch (org_join_restrictions) {
case "only_selected_domain":
data.emails_restricted_to_domains = true;
data.disallow_disposable_email_addresses = false;
break;
case "no_disposable_email":
data.emails_restricted_to_domains = false;
data.disallow_disposable_email_addresses = true;
break;
case "no_restriction":
data.disallow_disposable_email_addresses = false;
data.emails_restricted_to_domains = false;
break;
}
break;
}
case "auth_settings":
data = {};
data.authentication_methods = JSON.stringify(
Expand Down
2 changes: 1 addition & 1 deletion web/templates/settings/organization_permissions_admin.hbs
Original file line number Diff line number Diff line change
Expand Up @@ -30,7 +30,7 @@

<div class="input-group">
<label for="realm_org_join_restrictions" class="settings-field-label">{{t "Restrict email domains of new users?" }}</label>
<select name="realm_org_join_restrictions" id="id_realm_org_join_restrictions" class="prop-element settings_select bootstrap-focus-style">
<select name="realm_org_join_restrictions" id="id_realm_org_join_restrictions" class="prop-element settings_select bootstrap-focus-style" data-setting-widget-type="string">
<option value="no_restriction">{{t "No restrictions" }}</option>
<option value="no_disposable_email">{{t "Don’t allow disposable email addresses" }}</option>
<option value="only_selected_domain">{{t "Restrict to a list of domains" }}</option>
Expand Down

0 comments on commit 39c6a01

Please sign in to comment.