Skip to main content

numeric

Vasyl MartyniukLess than 1 minute

Syntax

(*numeric)${...}
(*numeric)<string>

Examples

  • (*numeric)${CALLBACK.random_number} - converts a value returned by the random_number function to either float or integer.
  • (*numeric)3.4 - converts a string "3.4" to float number 3.4.
  • (*numeric)5 - converts a string "5" to integer 5

Definition

Treat provided value as a numeric value. The value is checked if it is either an integer or float and cast accordingly. If the provided value is not numeric, it converts to the 0 (zero) integer value.

The numeric typecast is good when you do not know up-front if you'll get a float or an integer value. AAM checks if the value is a float with the PHP core function is_floatopen in new window, and if it is not, the integer value is assumed.

The following policy allows browsing few categories if the callback function random_number returns whitelisted numeric value.

{
    "Statement": [
        {
            "Effect": "deny",
            "Resource": "${POLICY_PARAM.ProtectedCategories}",
            "Action": [
                "List",
                "Read"
            ]
        },
        {
            "Effect": "allow",
            "Resource": "${POLICY_PARAM.ProtectedCategories}",
            "Action": [
                "List",
                "Read"
            ],
            "Condition": {
                "In": {
                    "(*numeric)${CALLBACK.random_number}": [
                        5,
                        3.4,
                        15,
                        2.9
                    ]
                }
            }
        }
    ],
    "Param": {
        "Key": "ProtectedCategories",
        "Value": [
            "Term:category:category-a",
            "Term:category:category-b",
            "Term:category:category-c"
        ]
    }
}