TokenUserInfo

pydantic model gafaelfawr.models.token.TokenUserInfo

The information about a user stored with their token.

If information is stored with the token, it overrides information from other sources such as LDAP. Fields that should be dynamically retrieved from LDAP should be omitted or set to None.

Parameters:

data (Any)

Show JSON schema
{
   "title": "TokenUserInfo",
   "description": "The information about a user stored with their token.\n\nIf information is stored with the token, it overrides information from\nother sources such as LDAP.  Fields that should be dynamically retrieved\nfrom LDAP should be omitted or set to `None`.",
   "type": "object",
   "properties": {
      "username": {
         "description": "User to whom the token was issued",
         "examples": [
            "someuser"
         ],
         "maxLength": 64,
         "minLength": 1,
         "title": "Username",
         "type": "string"
      },
      "name": {
         "anyOf": [
            {
               "minLength": 1,
               "type": "string"
            },
            {
               "type": "null"
            }
         ],
         "default": null,
         "examples": [
            "Alice Example"
         ],
         "title": "Preferred full name"
      },
      "email": {
         "anyOf": [
            {
               "minLength": 1,
               "type": "string"
            },
            {
               "type": "null"
            }
         ],
         "default": null,
         "examples": [
            "alice@example.com"
         ],
         "title": "Email address"
      },
      "uid": {
         "anyOf": [
            {
               "minimum": 1,
               "type": "integer"
            },
            {
               "type": "null"
            }
         ],
         "default": null,
         "examples": [
            4123
         ],
         "title": "UID number"
      },
      "gid": {
         "anyOf": [
            {
               "minimum": 1,
               "type": "integer"
            },
            {
               "type": "null"
            }
         ],
         "default": null,
         "description": "GID of primary group. If set, this will also be the GID of one of the groups of which the user is a member.",
         "examples": [
            4123
         ],
         "title": "Primary GID"
      },
      "groups": {
         "anyOf": [
            {
               "items": {
                  "$ref": "#/$defs/TokenGroup"
               },
               "type": "array"
            },
            {
               "type": "null"
            }
         ],
         "default": null,
         "description": "Groups of which the user is a member",
         "title": "Groups"
      },
      "quota": {
         "anyOf": [
            {
               "$ref": "#/$defs/Quota"
            },
            {
               "type": "null"
            }
         ],
         "default": null,
         "title": "Quota"
      }
   },
   "$defs": {
      "NotebookQuota": {
         "description": "Notebook Aspect quota information for a user.",
         "properties": {
            "cpu": {
               "examples": [
                  4.0
               ],
               "title": "CPU equivalents",
               "type": "number"
            },
            "memory": {
               "examples": [
                  16.0
               ],
               "title": "Maximum memory use (GiB)",
               "type": "number"
            }
         },
         "required": [
            "cpu",
            "memory"
         ],
         "title": "NotebookQuota",
         "type": "object"
      },
      "Quota": {
         "description": "Quota information for a user.",
         "properties": {
            "api": {
               "additionalProperties": {
                  "type": "integer"
               },
               "default": {},
               "description": "Mapping of service names to allowed requests per 15 minutes.",
               "examples": [
                  {
                     "datalinker": 500,
                     "hips": 2000,
                     "tap": 500,
                     "vo-cutouts": 100
                  }
               ],
               "title": "API quotas",
               "type": "object"
            },
            "notebook": {
               "anyOf": [
                  {
                     "$ref": "#/$defs/NotebookQuota"
                  },
                  {
                     "type": "null"
                  }
               ],
               "default": null,
               "title": "Notebook Aspect quotas"
            }
         },
         "title": "Quota",
         "type": "object"
      },
      "TokenGroup": {
         "description": "Information about a single group.",
         "properties": {
            "name": {
               "examples": [
                  "g_special_users"
               ],
               "minLength": 1,
               "pattern": "^[a-zA-Z][a-zA-Z0-9._-]*$",
               "title": "Name of the group",
               "type": "string"
            },
            "id": {
               "anyOf": [
                  {
                     "type": "integer"
                  },
                  {
                     "type": "null"
                  }
               ],
               "default": null,
               "description": "Numeric GID may be unset, in which case the group still contributes to determining scopes, but may be ignored by services that require a GID. If Firestore is configured, a numeric GID will be allocated by Firestore if left unset when creating a token.",
               "examples": [
                  123181
               ],
               "title": "Numeric GID of the group"
            }
         },
         "required": [
            "name"
         ],
         "title": "TokenGroup",
         "type": "object"
      }
   },
   "required": [
      "username"
   ]
}

Fields:
field email: str | None = None
Constraints:
  • min_length = 1

field gid: int | None = None

GID of primary group. If set, this will also be the GID of one of the groups of which the user is a member.

Constraints:
  • ge = 1

field groups: list[TokenGroup] | None = None

Groups of which the user is a member

field name: str | None = None
Constraints:
  • min_length = 1

field quota: Quota | None = None
field uid: int | None = None
Constraints:
  • ge = 1

field username: str [Required]

User to whom the token was issued

Constraints:
  • min_length = 1

  • max_length = 64

to_userinfo_dict()

Convert to a dictionary for logging purposes.

This method converts only the TokenUserInfo portion of a token to a dictionary for logging purposes, excluding the username field (which is logged separately). It’s used when logging creation of new tokens to make a record of the user identity information included in the token (as opposed to retrieved dynamically from other sources such as LDAP or Firestore).

Returns:

Dictionary of information, roughly equivalent to calling dict(exclude_none=True) on the TokenUserInfo object, but ensuring that only its data is included even if called on a subclass such as TokenData.

Return type:

dict