'hub_global_user_id', 'type' => 'text', 'searchable' => true, 'label' => 'Hub global user UUID (2mso_user_mapping.global_user_id bridge key)', ), array( 'key' => 'picture_url', 'type' => 'text', 'label' => 'Social / SSO profile picture URL', ), array( 'key' => 'last_id_token_hash', 'type' => 'text', 'label' => 'SHA-256(last_id_token) for SLO comparison — no plaintext stored', ), array( 'key' => 'refresh_token_enc', 'type' => 'textarea', 'label' => 'Encrypted refresh token (TMSO_Crypto — key-versioned enc_vN:ciphertext)', ), array( 'key' => 'token_expires_at', 'type' => 'datetime', 'searchable' => true, 'label' => 'SSO token expiry (set to past to force re-auth on next request)', ), array( 'key' => 'sso_last_login_at', 'type' => 'datetime', 'label' => 'Last SSO-initiated login datetime', ), array( 'key' => 'sso_login_count', 'type' => 'integer', 'default' => 0, 'label' => 'SSO login count', ), ) ); self::$registered = true; } }