Skip to content

USER_CONTEXT

Enable setting user claims into PostgreSQL session context variables for the endpoint.

Keywords

user_context

Syntax

user_context

Examples

Enable User Context

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

Access User Claims in Function

sql
create function get_user_context()
returns table (
    user_id int,
    user_name text,
    user_roles text[]
)
language sql as $$
select
    current_setting('request.user_id', true)::int,
    current_setting('request.user_name', true)::text,
    (current_setting('request.user_roles', true))::text[]
$$;

comment on function get_user_context() is '
authorize
user_context
';

Access All Claims as JSON

When ClaimsJsonContextKey is configured (e.g., "request.user_claims"):

sql
create function get_full_claims()
returns table (claims text)
language sql as $$
select current_setting('request.user_claims', true)::text
$$;

comment on function get_full_claims() is '
authorize
user_context
';

Access Client IP Address

sql
create function get_client_info()
returns table (ip_address text)
language sql as $$
select current_setting('request.ip_address', true)::text
$$;

comment on function get_client_info() is '
authorize
user_context
';

Combined with Request Headers

sql
create function get_user_context_and_headers()
returns table (
    user_id int,
    user_name text,
    headers jsonb
)
language sql as $$
select
    current_setting('request.user_id', true)::int,
    current_setting('request.user_name', true)::text,
    current_setting('request.headers', true)::jsonb
$$;

comment on function get_user_context_and_headers() is '
authorize
user_context
request_headers context
';

Behavior

  • Sets authenticated user claims into PostgreSQL session context variables before executing the function
  • Claims are accessible via current_setting('context_key', true) in PostgreSQL
  • The second parameter true prevents errors when the setting doesn't exist
  • Default behavior for all endpoints can be configured via UseUserContext
  • Claim-to-context key mapping is configured via ContextKeyClaimsMapping

Default Context Keys

Context KeyClaimDescription
request.user_iduser_idUser identifier
request.user_nameuser_nameUsername
request.user_rolesuser_rolesUser roles (array)
request.ip_address-Client IP address

Additional Context Keys (when configured)

Context KeyConfig OptionDescription
(configurable)ClaimsJsonContextKeyAll claims serialized as JSON

Released under the MIT License.