userLoginsSessionControls:
    kind: panel.form
    name: userLoginsSessionControls
    label: User Logins / Session Controls
    method: POST
    url: /xapi/siteConfig
    contentType: json
    contents:
        sessionTimeout:
            kind: panel.input.text
            name: sessionTimeout
            label: Session Timeout
            validation: interval onblur
            description: >
              Interval for timing out user sessions. Uses
              <a target="_blank" href="http://www.postgresql.org/docs/9.0/static/functions-datetime.html">PostgreSQL interval notation</a>.
        aliasTokenTimeout:
            kind: panel.input.text
            name: aliasTokenTimeout
            label: Alias Token Timeout
            validation: interval onblur
            description: >
              Interval for timing out alias tokens. Uses
              <a target="_blank" href="http://www.postgresql.org/docs/9.0/static/functions-datetime.html">PostgreSQL interval notation</a>.
        aliasTokenTimeoutSchedule:
            kind: panel.input.text
            name: aliasTokenTimeoutSchedule
            label: Alias Token Timeout Schedule
            validation: cron onblur
            description: >
              How often to check alias tokens for timeout (0 0 * * * * means it runs every hour). Uses basic
              <a target="_blank" href="http://docs.spring.io/spring/docs/current/javadoc-api/org/springframework/scheduling/support/CronSequenceGenerator.html">Cron notation</a> (lists and ranges aren't supported).
        sessionTimeoutMessage:
            kind: panel.textarea
            name: sessionTimeoutMessage
            label: Session Timeout Message
            code: html
            description: Alert message provided to users after a session timeout. TIMEOUT_TIME will be replaced by the timeout time.
        maximumConcurrentSessions:
            kind: panel.input.number
            name: concurrentMaxSessions
            label: Maximum Concurrent Sessions
            validation: integer gte:1 onblur
            description: The maximum number of permitted sessions a user can have open simultaneously. You must restart Tomcat for changes to this to take effect.
        loginFailureMessage:
            kind: panel.textarea
            name: uiLoginFailureMessage
            label: Login Failure Message
            code: html
            description: Text to show when a user fails to login
        maximumFailedLogins:
            kind: panel.input.number
            name: maxFailedLogins
            label: Maximum Failed Logins
            validation: integer gte:-1 lte:9999 !eq:0 onblur
            description: Number of failed login attempts before accounts are temporarily locked. (-1 disables feature)
        failedLoginLockoutDuration:
            kind: panel.input.text
            name: maxFailedLoginsLockoutDuration
            label: Failed Logins Lockout Duration
            validation: interval onblur
            description: >
              Interval of time to lock user accounts that have exceeded the max_failed_logins count. Uses
              <a target="_blank" href="http://www.postgresql.org/docs/9.0/static/functions-datetime.html">PostgreSQL interval notation</a>.
        resetFailedLoginsSchedule:
            kind: panel.input.text
            name: resetFailedLoginsSchedule
            label: Reset Failed Logins Schedule
            validation: cron onblur
            description: >
              How often to check if the Failed Logins Lockout Duration time has expired so locked out users can be allowed to log in again (0 0 * * * * means it runs every hour). Uses basic
              <a target="_blank" href="http://docs.spring.io/spring/docs/current/javadoc-api/org/springframework/scheduling/support/CronSequenceGenerator.html">Cron notation</a> (lists and ranges aren't supported).
        canResetFailedLoginsWithForgotPassword:
            kind: panel.input.switchbox
            name: canResetFailedLoginsWithForgotPassword
            label: Reset failed login count on forgot password?
            onText: Enabled
            offText: Disabled
            description: >
                Indicates whether a user should be able to click the link from a forgot password email to reset their
                count of failed logins. If enabled, a locked out user will be able to request a forgot password email
                and click the link from that email to change their password and unlock their account.
        userInactivityLockout:
            kind: panel.input.text
            name: inactivityBeforeLockout
            label: User Inactivity Lockout
            validation: interval onblur
            description: >
              Interval of inactivity before a user account is disabled. Uses
              <a target="_blank" href="http://www.postgresql.org/docs/9.0/static/functions-datetime.html">PostgreSQL interval notation</a>.
        inactivityBeforeLockoutSchedule:
            kind: panel.input.text
            name: inactivityBeforeLockoutSchedule
            label: Inactivity Lockout Schedule
            validation: cron onblur
            description: >
              How often to check user accounts for inactivity (0 0 1 * * * means it runs at 1AM every day). Uses basic
              <a target="_blank" href="http://docs.spring.io/spring/docs/current/javadoc-api/org/springframework/scheduling/support/CronSequenceGenerator.html">Cron notation</a> (lists and ranges aren't supported).
        interactiveAgentIds:
            kind: panel.input.textList
            size: 60
            name: interactiveAgentIds
            delim: ","
            label: Interactive Agent IDs
            placeholder: .*MSIE.*, .*Mozilla.*, .*AppleWebKit.*, .*Opera.*
            description: >
              Regular-expression patterns that define user-agent header values that indicate whether a particular
              request comes from an interactive agent (e.g. a browser) or some other kind of tool, such as curl or other
              scriptable or automatable client. Separate multiple agent IDs with commas.
        dataPaths:
            kind: panel.input.textList
            size: 60
            name: dataPaths
            delim: ","
            label: Data Paths
            placeholder: /xapi/**, /data/**, /REST/**, /fs/**
            description: >
              Ant patterns that define URL patterns that represent data paths (e.g. REST API calls). XNAT uses these
              paths in conjunction with the interactive agent IDs above to determine the response to certain calls. For
              example, instead of simply returning a "404 Not Found" error when an inaccessible resource is indicated,
              a call to a data path by a browser may be redirected to the login page. Separate multiple data paths with
              commas.

