Skip to content

USER_PARAMETERS

Enable passing user claims as function parameters for the endpoint.

Keywords

user_parameters, user_params

Syntax

user_parameters
user_params

Examples

Basic User Parameters

sql
create function get_user_params(
    _user_id text,
    _user_name text,
    _user_roles text[]
)
returns table (
    user_id int,
    user_name text,
    user_roles text[]
)
language sql as $$
select
    _user_id::int,
    _user_name,
    _user_roles
$$;

comment on function get_user_params(text, text, text[]) is '
authorize
user_params
';

With Default Values (for unauthenticated access)

sql
create function get_user_params_optional(
    _user_id text = null,
    _user_name text = 'anonymous',
    _user_roles text[] = array[]::text[]
)
returns table (
    user_id int,
    user_name text,
    user_roles text[]
)
language sql as $$
select
    _user_id::int,
    _user_name,
    _user_roles
$$;

comment on function get_user_params_optional(text, text, text[]) is '
user_params
';

Access All Claims as JSON

sql
create function get_user_ip_and_full_claims(
    _ip_address text,
    _user_claims json
)
returns table (
    ip_address text,
    user_claims json
)
language sql as $$
select
    _ip_address,
    _user_claims
$$;

comment on function get_user_ip_and_full_claims(text, json) is '
authorize
user_params
';

Combined with User Context

sql
comment on function user_profile() is
'HTTP GET
authorize
user_context
user_parameters';

Behavior

  • Automatically injects user claim values into matching function parameters before execution
  • Parameters are matched by name according to ParameterNameClaimsMapping configuration
  • Default behavior for all endpoints can be configured via UseUserParameters
  • Parameters with default values work without authentication; claim values override defaults when authenticated
  • Parameters not found in claims use their default values or null

Default Parameter Mapping

Parameter NameClaimDescription
_user_iduser_idUser identifier
_user_nameuser_nameUsername
_user_rolesuser_rolesUser roles (array)
_ip_address-Client IP address
_user_claims-All claims serialized as JSON

Differences from USER_CONTEXT

FeatureUSER_PARAMETERSUSER_CONTEXT
Access methodFunction parameterscurrent_setting()
Works without authYes (with defaults)Yes (returns empty)
Type safetyPostgreSQL enforcedManual casting required
PerformanceSlightly fasterSlightly slower
  • USER_CONTEXT - Access user claims via PostgreSQL session context variables
  • AUTHORIZE - Require authentication

Released under the MIT License.