USER_CONTEXT
Enable setting user claims into PostgreSQL session context variables for the endpoint.
Keywords
user_context
Syntax
user_contextExamples
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
trueprevents 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 Key | Claim | Description |
|---|---|---|
request.user_id | user_id | User identifier |
request.user_name | user_name | Username |
request.user_roles | user_roles | User roles (array) |
request.ip_address | - | Client IP address |
Additional Context Keys (when configured)
| Context Key | Config Option | Description |
|---|---|---|
| (configurable) | ClaimsJsonContextKey | All claims serialized as JSON |
Related
- Authentication Options configuration - Configure user context mapping
- Comment Annotations Guide - How annotations work
- Configuration Guide - How configuration works
Related Annotations
- USER_PARAMETERS - Pass user claims as function parameters instead of context
- AUTHORIZE - Require authentication
- REQUEST_HEADERS - Access HTTP request headers in context