mirror of
https://github.com/discourse/discourse.git
synced 2024-11-25 09:42:07 +08:00
76 lines
2.5 KiB
JavaScript
76 lines
2.5 KiB
JavaScript
/**
|
|
A form to create an IP address that will be blocked or whitelisted.
|
|
Example usage:
|
|
|
|
{{screened-ip-address-form action="recordAdded"}}
|
|
|
|
where action is a callback on the controller or route that will get called after
|
|
the new record is successfully saved. It is called with the new ScreenedIpAddress record
|
|
as an argument.
|
|
**/
|
|
|
|
import ScreenedIpAddress from 'admin/models/screened-ip-address';
|
|
import computed from 'ember-addons/ember-computed-decorators';
|
|
import { on } from 'ember-addons/ember-computed-decorators';
|
|
|
|
export default Ember.Component.extend({
|
|
classNames: ['screened-ip-address-form'],
|
|
formSubmitted: false,
|
|
actionName: 'block',
|
|
|
|
@computed
|
|
adminWhitelistEnabled() {
|
|
return Discourse.SiteSettings.use_admin_ip_whitelist;
|
|
},
|
|
|
|
@computed("adminWhitelistEnabled")
|
|
actionNames(adminWhitelistEnabled) {
|
|
if (adminWhitelistEnabled) {
|
|
return [
|
|
{id: 'block', name: I18n.t('admin.logs.screened_ips.actions.block')},
|
|
{id: 'do_nothing', name: I18n.t('admin.logs.screened_ips.actions.do_nothing')},
|
|
{id: 'allow_admin', name: I18n.t('admin.logs.screened_ips.actions.allow_admin')}
|
|
];
|
|
} else {
|
|
return [
|
|
{id: 'block', name: I18n.t('admin.logs.screened_ips.actions.block')},
|
|
{id: 'do_nothing', name: I18n.t('admin.logs.screened_ips.actions.do_nothing')}
|
|
];
|
|
}
|
|
},
|
|
|
|
actions: {
|
|
submit() {
|
|
if (!this.get('formSubmitted')) {
|
|
this.set('formSubmitted', true);
|
|
const screenedIpAddress = ScreenedIpAddress.create({
|
|
ip_address: this.get('ip_address'),
|
|
action_name: this.get('actionName')
|
|
});
|
|
screenedIpAddress.save().then(result => {
|
|
this.setProperties({ ip_address: '', formSubmitted: false });
|
|
this.sendAction('action', ScreenedIpAddress.create(result.screened_ip_address));
|
|
Ember.run.schedule('afterRender', () => this.$('.ip-address-input').focus());
|
|
}).catch(e => {
|
|
this.set('formSubmitted', false);
|
|
const msg = (e.responseJSON && e.responseJSON.errors) ?
|
|
I18n.t("generic_error_with_reason", {error: e.responseJSON.errors.join('. ')}) :
|
|
I18n.t("generic_error");
|
|
bootbox.alert(msg, () => this.$('.ip-address-input').focus());
|
|
});
|
|
}
|
|
}
|
|
},
|
|
|
|
@on("didInsertElement")
|
|
_init() {
|
|
Ember.run.schedule('afterRender', () => {
|
|
this.$('.ip-address-input').keydown(e => {
|
|
if (e.keyCode === 13) {
|
|
this.send('submit');
|
|
}
|
|
});
|
|
});
|
|
}
|
|
});
|