AM 7.4.0

Reuse scripts

To use an existing script in a Scripted Decision node, create a library script containing the functionality you want to reuse and reference it from a decision node script.

A library script can take the format of any JavaScript code. You can also import functionality from another library script.

For example:

  • Create a library script using a minified third-party JavaScript utility library, such as lodash.js.

    Only import scripts from trusted third parties that you know take security seriously. It is your responsibility to ensure that third-party code is secure and to maintain it.

  • Write your own reusable snippet that enhances AM debugging functionality.

Modules that use file systems, such as node:fs or XMLHTTPRequest, are not supported. Only modules that are self-contained and don’t use a file system explicitly or indirectly are supported.

Create a library script

  1. In the AM admin UI, create a script of type Library.

    The Evaluator Version is automatically set to Next Generation.

  2. In the Script field, paste the contents of a third-party JavaScript or write your own JavaScript code.

    Expose the reusable functions of your library script by defining properties on the exports object.

    For similar functionality, refer to the CommonJS modules.

    For this example, myExampleLibrary defines and exports three functions:

    var i = 0;
    
    function add(j) {i += j};
    function logTotal(log) { log.info("Total: " + i) };
    
    // export constant
    exports.MSG = 'Final sum';
    
    // export functions
    exports.add = add;
    exports.logTotal = logTotal;
    
    //direct export using an inline declaration
    exports.logTotalWithMessage = (log, message) => log.info(message + ": " + i);

    A library script doesn’t have access to bindings, but you can pass in parameters. In the example, the log object is passed in from the scripted decision node that calls the logTotal and logTotalWithMessage functions.

    You can’t create or export classes in library scripts, only functions and constants.

  3. Save your changes.

Import a library script

  1. In the AM admin UI, create or edit a script of type Decision node script for authentication trees or Library.

  2. In the Script field, load the library using the require(LIBRARY_SCRIPT) notation; for example:

    var mylib = require('myExampleLibrary');

  3. Access the exported functions using the library variable; in this case, mylib:

    mylib.add(1);
    mylib.logTotal(logger);
    mylib.add(3);
    mylib.logTotalWithMessage(logger, mylib.MSG);
Copyright © 2010-2024 ForgeRock, all rights reserved.