Skip to content

How to set custom values for the session

When using the DB authenticator, you can retrieve additional user data at login time and make it available throughout the application as session macros.

Setup

Add a ReadUserCommandText to the Auth node in your Config.yaml. Any columns beyond the required USER_NAME, PASSWORD_HASH, and IS_ACTIVE become custom session values:

yaml
Auth: DB
  IsClearPassword: True
  ReadUserCommandText: |
    select
      WEB_USER_NAME as USER_NAME,
      WEB_PASSWORD as PASSWORD_HASH,
      WEB_ENABLED as IS_ACTIVE,
      LAST_NAME + ' ' + NAME as FULL_NAME,
      ID as PERSON_ID,
      coalesce((select top 1 1 from ADMIN_OPERATOR
                where PERSON.ID = ADMIN_OPERATOR.PERSON_ID), 0) as IS_ADMIN_OPERATOR
    from PERSON
    where (WEB_USER_NAME = :P1) and (WEB_ENABLED = 1)

See Custom User Table for more details on customizing the authentication query.

Using session macros

Each custom column is available as a macro in the form %Auth:ColumnName%. You can use these macros in YAML metadata anywhere macro expansion is supported.

Filter data by user — show only records belonging to the logged-in user:

yaml
MainTable:
  Model: MY_MODEL
  DefaultFilter: PERSON_ID = '%Auth:PERSON_ID%'

Conditional filter — show all records for admin users, filtered records for others:

yaml
MainTable:
  Model: MY_MODEL
  DefaultFilter: |
    ('%Auth:IS_ADMIN_OPERATOR%' = 1
     or PERSON_ID = '%Auth:PERSON_ID%')

Display user info — use in display labels or templates:

yaml
DisplayLabel: Activities for %Auth:FULL_NAME%

See also: How to filter data by connected user, Macros.

Released under Apache License, Version 2.0.