From 7b699105a52d4d8c26a73044ba182d752b4a9833 Mon Sep 17 00:00:00 2001 From: Pavel Vomacka Date: Mar 08 2017 13:54:56 +0000 Subject: Add javascript integer validator Javascript integer validator checks whether value entered into field is number and is not higher than Number.MAX_SAFE_INTEGER constant. Part of: https://fedorahosted.org/freeipa/ticket/5742 Reviewed-By: Petr Vobornik --- diff --git a/install/ui/src/freeipa/field.js b/install/ui/src/freeipa/field.js index 9f287dd..f410557 100644 --- a/install/ui/src/freeipa/field.js +++ b/install/ui/src/freeipa/field.js @@ -971,6 +971,39 @@ field.validator = IPA.validator = function(spec) { }; /** + * Javascript integer validator + * + * It allows to insert only integer numbers which can be safely represented by + * Javascript. + * + * @class + * @alternateClassName IPA.integer_validator + * @extends IPA.validator + */ + field.integer_validator = IPA.integer_validator = function(spec) { + + var that = IPA.validator(spec); + + /** + * @inheritDoc + */ + that.validate = function(value) { + + if (!value.match(/^-?\d+$/)) { + return that.false_result(text.get('@i18n:widget.validation.integer')); + } + + if (!Number.isSafeInteger(parseInt(value, 10))) { + return that.false_result(text.get('@i18n:widget.validation.unsupported')); + } + + return that.true_result(); + }; + + return that; + }; + +/** * Metadata validator * * Validates value according to supplied metadata @@ -1710,6 +1743,7 @@ field.register = function() { v.register('metadata', field.metadata_validator); v.register('unsupported', field.unsupported_validator); v.register('same_password', field.same_password_validator); + v.register('integer', field.integer_validator); l.register('adapter', field.Adapter); l.register('object_adapter', field.ObjectAdapter);