# -*- Mode: Python -*-
# vim: filetype=python

##
# ******************
# User authorization
# ******************
##

##
# @QAuthZListPolicy:
#
# The authorization policy result
#
# @deny: deny access
#
# @allow: allow access
#
# Since: 4.0
##
{ 'enum': 'QAuthZListPolicy',
  'prefix': 'QAUTHZ_LIST_POLICY',
  'data': ['deny', 'allow']}

##
# @QAuthZListFormat:
#
# The authorization policy match format
#
# @exact: an exact string match
#
# @glob: string with ? and * shell wildcard support
#
# Since: 4.0
##
{ 'enum': 'QAuthZListFormat',
  'prefix': 'QAUTHZ_LIST_FORMAT',
  'data': ['exact', 'glob']}

##
# @QAuthZListRule:
#
# A single authorization rule.
#
# @match: a string or glob to match against a user identity
#
# @policy: the result to return if @match evaluates to true
#
# @format: the format of the @match rule (default 'exact')
#
# Since: 4.0
##
{ 'struct': 'QAuthZListRule',
  'data': {'match': 'str',
           'policy': 'QAuthZListPolicy',
           '*format': 'QAuthZListFormat'}}

##
# @AuthZListProperties:
#
# Properties for authz-list objects.
#
# @policy: Default policy to apply when no rule matches (default:
#     deny)
#
# @rules: Authorization rules based on matching user
#
# Since: 4.0
##
{ 'struct': 'AuthZListProperties',
  'data': { '*policy': 'QAuthZListPolicy',
            '*rules': ['QAuthZListRule'] } }

##
# @AuthZListFileProperties:
#
# Properties for authz-listfile objects.
#
# @filename: File name to load the configuration from.  The file must
#     contain valid JSON for `AuthZListProperties`.
#
# @refresh: If true, inotify is used to monitor the file,
#     automatically reloading changes.  If an error occurs during
#     reloading, all authorizations will fail until the file is next
#     successfully loaded.  (default: true if the binary was built
#     with CONFIG_INOTIFY1, false otherwise)
#
# Since: 4.0
##
{ 'struct': 'AuthZListFileProperties',
  'data': { 'filename': 'str',
            '*refresh': 'bool' } }

##
# @AuthZPAMProperties:
#
# Properties for authz-pam objects.
#
# @service: PAM service name to use for authorization
#
# Since: 4.0
##
{ 'struct': 'AuthZPAMProperties',
  'data': { 'service': 'str' } }

##
# @AuthZSimpleProperties:
#
# Properties for authz-simple objects.
#
# @identity: Identifies the allowed user.  Its format depends on the
#     network service that authorization object is associated with.
#     For authorizing based on TLS x509 certificates, the identity
#     must be the x509 distinguished name.
#
# Since: 4.0
##
{ 'struct': 'AuthZSimpleProperties',
  'data': { 'identity': 'str' } }
