class PlaceOS::Model::OAuthToken

Overview

Persistence backing for the auth.cr AuthlyAdapter::TokenStore. Each row records the metadata of a single OAuth2 access or refresh token; the #revoked_at column lets the auth service mark a token invalid without rotating signing keys.

See migration 20260519100000000_add_oauth_tokens.sql for the column rationale (notably: most columns are nullable so a revoke for a never-stored refresh token can still leave a marker).

Included Modules

Defined in:

placeos-models/oauth_token.cr

Constant Summary

CALLBACKS = {before_save: [] of Nil, after_save: [] of Nil, before_create: [do self.created_at = self.updated_at = Time.utc end] of Nil, after_create: [] of Nil, before_update: [do self.updated_at = Time.utc end] of Nil, after_update: [] of Nil, before_destroy: [] of Nil, after_destroy: [] of Nil}

Persistence backing for the auth.cr AuthlyAdapter::TokenStore. Each row records the metadata of a single OAuth2 access or refresh token; the #revoked_at column lets the auth service mark a token invalid without rotating signing keys.

See migration 20260519100000000_add_oauth_tokens.sql for the column rationale (notably: most columns are nullable so a revoke for a never-stored refresh token can still leave a marker).

Log = ::Log.for(self)

Persistence backing for the auth.cr AuthlyAdapter::TokenStore. Each row records the metadata of a single OAuth2 access or refresh token; the #revoked_at column lets the auth service mark a token invalid without rotating signing keys.

See migration 20260519100000000_add_oauth_tokens.sql for the column rationale (notably: most columns are nullable so a revoke for a never-stored refresh token can still leave a marker).

PRIMARY_KEY_TYPES = {:id => (Int64 | Nil)} of Nil => Nil

macro level key => type

PRIMARY_KEYS = [{:id}]

Persistence backing for the auth.cr AuthlyAdapter::TokenStore. Each row records the metadata of a single OAuth2 access or refresh token; the #revoked_at column lets the auth service mark a token invalid without rotating signing keys.

See migration 20260519100000000_add_oauth_tokens.sql for the column rationale (notably: most columns are nullable so a revoke for a never-stored refresh token can still leave a marker).

Constructors

Class Method Summary

Macro Summary

Instance Method Summary

Instance methods inherited from module PlaceOS::Model::Associations

format_list_for_postgres(list : Enumerable(String)) : String format_list_for_postgres, reset_associations reset_associations

Class methods inherited from module PlaceOS::Model::Associations

format_list_for_postgres(list : Enumerable(String)) : String format_list_for_postgres

Macros inherited from module PlaceOS::Model::Associations

belongs_to(parent_class, dependent = :none, association_name = nil, foreign_key = nil, presence = false, pk_type = nil, serialize = true) belongs_to, has_many(child_class, collection_name = nil, dependent = :none, foreign_key = nil, serialize = false) has_many, has_one(child_class, dependent = :none, association_name = nil, presence = false) has_one

Instance methods inherited from class PlaceOS::Model::ModelWithAutoKey

after_create after_create, after_destroy after_destroy, after_save after_save, after_update after_update, apply_defaults apply_defaults, assign_attributes(params : HTTP::Params | Hash(String, String) | Tuple(String, String))
assign_attributes(model : PlaceOS::Model::ModelWithAutoKey)
assign_attributes
assign_attributes
, attributes attributes, attributes_tuple attributes_tuple, before_create before_create, before_destroy before_destroy, before_save before_save, before_update before_update, invoke_props invoke_props, persistent_attributes persistent_attributes, primary_key primary_key, run_create_callbacks(&) run_create_callbacks, run_destroy_callbacks(&) run_destroy_callbacks, run_save_callbacks(&) run_save_callbacks, run_update_callbacks(&) run_update_callbacks

Constructor methods inherited from class PlaceOS::Model::ModelWithAutoKey

new(ctx : YAML::ParseContext, node : YAML::Nodes::Node)
new(pull : JSON::PullParser)
new(rs : DB::ResultSet)
new

Class methods inherited from class PlaceOS::Model::ModelWithAutoKey

attributes : Array(Symbol) attributes, from_rs(rs : DB::ResultSet) from_rs, primary_key primary_key

Constructor Detail

def self.from_json(string_or_io : String | IO, trusted : Bool = false) : self #

Persistence backing for the auth.cr AuthlyAdapter::TokenStore. Each row records the metadata of a single OAuth2 access or refresh token; the #revoked_at column lets the auth service mark a token invalid without rotating signing keys.

See migration 20260519100000000_add_oauth_tokens.sql for the column rationale (notably: most columns are nullable so a revoke for a never-stored refresh token can still leave a marker).


def self.from_json(string_or_io : String | IO, root : String, trusted : Bool = false) : self #

Deserializes the given JSON in string_or_io into an instance of self, assuming the JSON consists of an JSON object with key root, and whose value is the value to deserialize. Will not deserialise from fields with mass_assign: false

class User < ActiveModel::Model
  attribute name : String
  attribute google_id : UUID, mass_assign: false
end

User.from_json(%({"main": {"name": "Jason", "google_id": "f6f70bfb-c882-446d-8758-7ce47db39620"}}), root: "main") # => #<User:0x103131b20 @name="Jason">

def self.from_trusted_json(string_or_io : String | IO, root : String) : self #

Persistence backing for the auth.cr AuthlyAdapter::TokenStore. Each row records the metadata of a single OAuth2 access or refresh token; the #revoked_at column lets the auth service mark a token invalid without rotating signing keys.

See migration 20260519100000000_add_oauth_tokens.sql for the column rationale (notably: most columns are nullable so a revoke for a never-stored refresh token can still leave a marker).


def self.from_trusted_json(string_or_io : String | IO) : self #

Serialize from a trusted JSON source


def self.from_trusted_yaml(string_or_io : String | IO) : self #

Serialize from a trusted YAML source


def self.from_yaml(string_or_io : String | IO, trusted : Bool = false) : self #

Persistence backing for the auth.cr AuthlyAdapter::TokenStore. Each row records the metadata of a single OAuth2 access or refresh token; the #revoked_at column lets the auth service mark a token invalid without rotating signing keys.

See migration 20260519100000000_add_oauth_tokens.sql for the column rationale (notably: most columns are nullable so a revoke for a never-stored refresh token can still leave a marker).


def self.new(ctx : YAML::ParseContext, node : YAML::Nodes::Node) #

Persistence backing for the auth.cr AuthlyAdapter::TokenStore. Each row records the metadata of a single OAuth2 access or refresh token; the #revoked_at column lets the auth service mark a token invalid without rotating signing keys.

See migration 20260519100000000_add_oauth_tokens.sql for the column rationale (notably: most columns are nullable so a revoke for a never-stored refresh token can still leave a marker).


[View source]
def self.new(pull : JSON::PullParser) #

Persistence backing for the auth.cr AuthlyAdapter::TokenStore. Each row records the metadata of a single OAuth2 access or refresh token; the #revoked_at column lets the auth service mark a token invalid without rotating signing keys.

See migration 20260519100000000_add_oauth_tokens.sql for the column rationale (notably: most columns are nullable so a revoke for a never-stored refresh token can still leave a marker).


[View source]
def self.new(rs : DB::ResultSet) #

Persistence backing for the auth.cr AuthlyAdapter::TokenStore. Each row records the metadata of a single OAuth2 access or refresh token; the #revoked_at column lets the auth service mark a token invalid without rotating signing keys.

See migration 20260519100000000_add_oauth_tokens.sql for the column rationale (notably: most columns are nullable so a revoke for a never-stored refresh token can still leave a marker).


def self.new(jti : String | ActiveModel::Model::None = ::ActiveModel::Model::None.new, token_type : String | Nil | ActiveModel::Model::None = ::ActiveModel::Model::None.new, client_id : String | Nil | ActiveModel::Model::None = ::ActiveModel::Model::None.new, sub : String | Nil | ActiveModel::Model::None = ::ActiveModel::Model::None.new, scope : String | Nil | ActiveModel::Model::None = ::ActiveModel::Model::None.new, issued_at : Int64 | Nil | ActiveModel::Model::None = ::ActiveModel::Model::None.new, expires_at : Int64 | Nil | ActiveModel::Model::None = ::ActiveModel::Model::None.new, cert_thumbprint : String | Nil | ActiveModel::Model::None = ::ActiveModel::Model::None.new, revoked_at : Int64 | Nil | ActiveModel::Model::None = ::ActiveModel::Model::None.new, id : Int64 | Nil | ActiveModel::Model::None = ::ActiveModel::Model::None.new, created_at : Time | ActiveModel::Model::None = ::ActiveModel::Model::None.new, updated_at : Time | ActiveModel::Model::None = ::ActiveModel::Model::None.new) #

Persistence backing for the auth.cr AuthlyAdapter::TokenStore. Each row records the metadata of a single OAuth2 access or refresh token; the #revoked_at column lets the auth service mark a token invalid without rotating signing keys.

See migration 20260519100000000_add_oauth_tokens.sql for the column rationale (notably: most columns are nullable so a revoke for a never-stored refresh token can still leave a marker).


def self.new(params : HTTP::Params | Hash(String, String) | Tuple(String, String)) #

Initialize PlaceOS::Model::OAuthToken from HTTP::Params.


Class Method Detail

def self.attributes : Array(Symbol) #

Returns all attribute keys.


def self.changes(id : Int64 | Nil | Nil = nil) : ChangeFeed #

Changefeed at row (if #id passed) or whole table level. Returns a ChangeFeed instance which can be used to invoke async callbacks via on or use blocking Iterator via each method.


def self.elastic #

Persistence backing for the auth.cr AuthlyAdapter::TokenStore. Each row records the metadata of a single OAuth2 access or refresh token; the #revoked_at column lets the auth service mark a token invalid without rotating signing keys.

See migration 20260519100000000_add_oauth_tokens.sql for the column rationale (notably: most columns are nullable so a revoke for a never-stored refresh token can still leave a marker).


def self.from_rs(__temp_2046 : DB::ResultSet) #

Persistence backing for the auth.cr AuthlyAdapter::TokenStore. Each row records the metadata of a single OAuth2 access or refresh token; the #revoked_at column lets the auth service mark a token invalid without rotating signing keys.

See migration 20260519100000000_add_oauth_tokens.sql for the column rationale (notably: most columns are nullable so a revoke for a never-stored refresh token can still leave a marker).


def self.on_error(err : Exception | IO::Error) #

Persistence backing for the auth.cr AuthlyAdapter::TokenStore. Each row records the metadata of a single OAuth2 access or refresh token; the #revoked_at column lets the auth service mark a token invalid without rotating signing keys.

See migration 20260519100000000_add_oauth_tokens.sql for the column rationale (notably: most columns are nullable so a revoke for a never-stored refresh token can still leave a marker).


def self.primary_key #

Persistence backing for the auth.cr AuthlyAdapter::TokenStore. Each row records the metadata of a single OAuth2 access or refresh token; the #revoked_at column lets the auth service mark a token invalid without rotating signing keys.

See migration 20260519100000000_add_oauth_tokens.sql for the column rationale (notably: most columns are nullable so a revoke for a never-stored refresh token can still leave a marker).


[View source]
def self.table_name #

Persistence backing for the auth.cr AuthlyAdapter::TokenStore. Each row records the metadata of a single OAuth2 access or refresh token; the #revoked_at column lets the auth service mark a token invalid without rotating signing keys.

See migration 20260519100000000_add_oauth_tokens.sql for the column rationale (notably: most columns are nullable so a revoke for a never-stored refresh token can still leave a marker).


Macro Detail

macro scope(name, &block) #

Instance Method Detail

def after_create #

Persistence backing for the auth.cr AuthlyAdapter::TokenStore. Each row records the metadata of a single OAuth2 access or refresh token; the #revoked_at column lets the auth service mark a token invalid without rotating signing keys.

See migration 20260519100000000_add_oauth_tokens.sql for the column rationale (notably: most columns are nullable so a revoke for a never-stored refresh token can still leave a marker).


[View source]
def after_destroy #

Persistence backing for the auth.cr AuthlyAdapter::TokenStore. Each row records the metadata of a single OAuth2 access or refresh token; the #revoked_at column lets the auth service mark a token invalid without rotating signing keys.

See migration 20260519100000000_add_oauth_tokens.sql for the column rationale (notably: most columns are nullable so a revoke for a never-stored refresh token can still leave a marker).


[View source]
def after_initialize(trusted : Bool) #

Persistence backing for the auth.cr AuthlyAdapter::TokenStore. Each row records the metadata of a single OAuth2 access or refresh token; the #revoked_at column lets the auth service mark a token invalid without rotating signing keys.

See migration 20260519100000000_add_oauth_tokens.sql for the column rationale (notably: most columns are nullable so a revoke for a never-stored refresh token can still leave a marker).


def after_save #

Persistence backing for the auth.cr AuthlyAdapter::TokenStore. Each row records the metadata of a single OAuth2 access or refresh token; the #revoked_at column lets the auth service mark a token invalid without rotating signing keys.

See migration 20260519100000000_add_oauth_tokens.sql for the column rationale (notably: most columns are nullable so a revoke for a never-stored refresh token can still leave a marker).


[View source]
def after_update #

Persistence backing for the auth.cr AuthlyAdapter::TokenStore. Each row records the metadata of a single OAuth2 access or refresh token; the #revoked_at column lets the auth service mark a token invalid without rotating signing keys.

See migration 20260519100000000_add_oauth_tokens.sql for the column rationale (notably: most columns are nullable so a revoke for a never-stored refresh token can still leave a marker).


[View source]
def apply_defaults #

Generate code to apply default values


def assign_attributes(jti : String | Missing = Missing, token_type : String | Nil | Missing = Missing, client_id : String | Nil | Missing = Missing, sub : String | Nil | Missing = Missing, scope : String | Nil | Missing = Missing, issued_at : Int64 | Nil | Missing = Missing, expires_at : Int64 | Nil | Missing = Missing, cert_thumbprint : String | Nil | Missing = Missing, revoked_at : Int64 | Nil | Missing = Missing, id : Int64 | Nil | Missing = Missing, created_at : Time | Missing = Missing, updated_at : Time | Missing = Missing) #

Assign to multiple attributes.


def assign_attributes(params : HTTP::Params | Hash(String, String) | Tuple(String, String)) #

Assign to multiple attributes via HTTP::Params.


def assign_attributes(model : PlaceOS::Model::OAuthToken) #

Assign to multiple attributes from a model object


def assign_attributes_from_json(json, root : String) #

Persistence backing for the auth.cr AuthlyAdapter::TokenStore. Each row records the metadata of a single OAuth2 access or refresh token; the #revoked_at column lets the auth service mark a token invalid without rotating signing keys.

See migration 20260519100000000_add_oauth_tokens.sql for the column rationale (notably: most columns are nullable so a revoke for a never-stored refresh token can still leave a marker).


def assign_attributes_from_json(json) #

Persistence backing for the auth.cr AuthlyAdapter::TokenStore. Each row records the metadata of a single OAuth2 access or refresh token; the #revoked_at column lets the auth service mark a token invalid without rotating signing keys.

See migration 20260519100000000_add_oauth_tokens.sql for the column rationale (notably: most columns are nullable so a revoke for a never-stored refresh token can still leave a marker).


def assign_attributes_from_trusted_json(json, root : String) #

Persistence backing for the auth.cr AuthlyAdapter::TokenStore. Each row records the metadata of a single OAuth2 access or refresh token; the #revoked_at column lets the auth service mark a token invalid without rotating signing keys.

See migration 20260519100000000_add_oauth_tokens.sql for the column rationale (notably: most columns are nullable so a revoke for a never-stored refresh token can still leave a marker).


def assign_attributes_from_trusted_json(json) #

Assign each field from JSON if field exists in JSON and has changed in model


def assign_attributes_from_trusted_yaml(yaml) #

Persistence backing for the auth.cr AuthlyAdapter::TokenStore. Each row records the metadata of a single OAuth2 access or refresh token; the #revoked_at column lets the auth service mark a token invalid without rotating signing keys.

See migration 20260519100000000_add_oauth_tokens.sql for the column rationale (notably: most columns are nullable so a revoke for a never-stored refresh token can still leave a marker).


def assign_attributes_from_yaml(yaml) #

Uses the YAML parser as JSON is valid YAML


def attributes #

Returns a Hash of all attribute values


def attributes_tuple #

Returns a NamedTuple of all attribute values.


def before_create #

Persistence backing for the auth.cr AuthlyAdapter::TokenStore. Each row records the metadata of a single OAuth2 access or refresh token; the #revoked_at column lets the auth service mark a token invalid without rotating signing keys.

See migration 20260519100000000_add_oauth_tokens.sql for the column rationale (notably: most columns are nullable so a revoke for a never-stored refresh token can still leave a marker).


[View source]
def before_destroy #

Persistence backing for the auth.cr AuthlyAdapter::TokenStore. Each row records the metadata of a single OAuth2 access or refresh token; the #revoked_at column lets the auth service mark a token invalid without rotating signing keys.

See migration 20260519100000000_add_oauth_tokens.sql for the column rationale (notably: most columns are nullable so a revoke for a never-stored refresh token can still leave a marker).


[View source]
def before_save #

Persistence backing for the auth.cr AuthlyAdapter::TokenStore. Each row records the metadata of a single OAuth2 access or refresh token; the #revoked_at column lets the auth service mark a token invalid without rotating signing keys.

See migration 20260519100000000_add_oauth_tokens.sql for the column rationale (notably: most columns are nullable so a revoke for a never-stored refresh token can still leave a marker).


[View source]
def before_update #

Persistence backing for the auth.cr AuthlyAdapter::TokenStore. Each row records the metadata of a single OAuth2 access or refresh token; the #revoked_at column lets the auth service mark a token invalid without rotating signing keys.

See migration 20260519100000000_add_oauth_tokens.sql for the column rationale (notably: most columns are nullable so a revoke for a never-stored refresh token can still leave a marker).


[View source]
def cert_thumbprint : String | Nil #

def cert_thumbprint=(value : String | Nil) #

def cert_thumbprint_assigned? : Bool #

Persistence backing for the auth.cr AuthlyAdapter::TokenStore. Each row records the metadata of a single OAuth2 access or refresh token; the #revoked_at column lets the auth service mark a token invalid without rotating signing keys.

See migration 20260519100000000_add_oauth_tokens.sql for the column rationale (notably: most columns are nullable so a revoke for a never-stored refresh token can still leave a marker).


def cert_thumbprint_change : Tuple(String | Nil | Nil, String | Nil | Nil) | Nil #

Returns a Tuple of the previous and the current value of an instance variable if it has changed


def cert_thumbprint_changed? : Bool #

Persistence backing for the auth.cr AuthlyAdapter::TokenStore. Each row records the metadata of a single OAuth2 access or refresh token; the #revoked_at column lets the auth service mark a token invalid without rotating signing keys.

See migration 20260519100000000_add_oauth_tokens.sql for the column rationale (notably: most columns are nullable so a revoke for a never-stored refresh token can still leave a marker).


def cert_thumbprint_default : String | Nil #

#cert_thumbprint's default value


[View source]
def cert_thumbprint_present? : Bool #

def cert_thumbprint_removed? : Bool #

Persistence backing for the auth.cr AuthlyAdapter::TokenStore. Each row records the metadata of a single OAuth2 access or refresh token; the #revoked_at column lets the auth service mark a token invalid without rotating signing keys.

See migration 20260519100000000_add_oauth_tokens.sql for the column rationale (notably: most columns are nullable so a revoke for a never-stored refresh token can still leave a marker).


def cert_thumbprint_was : String | Nil | Nil #

Persistence backing for the auth.cr AuthlyAdapter::TokenStore. Each row records the metadata of a single OAuth2 access or refresh token; the #revoked_at column lets the auth service mark a token invalid without rotating signing keys.

See migration 20260519100000000_add_oauth_tokens.sql for the column rationale (notably: most columns are nullable so a revoke for a never-stored refresh token can still leave a marker).


def cert_thumbprint_will_change! : Nil #

Include #cert_thumbprint in the set of changed attributes, whether it has changed or not.


def changed? #

Check if any attributes have changed.


def changed_attributes #

Returns a Hash with all changed attributes.


def changed_json(io : IO) : Nil #

Serialize the set of changed attributes to JSON.


def changed_json : String #

Serialize the set of changed attributes to JSON.


def changed_persist_attributes #

Persistence backing for the auth.cr AuthlyAdapter::TokenStore. Each row records the metadata of a single OAuth2 access or refresh token; the #revoked_at column lets the auth service mark a token invalid without rotating signing keys.

See migration 20260519100000000_add_oauth_tokens.sql for the column rationale (notably: most columns are nullable so a revoke for a never-stored refresh token can still leave a marker).


def changed_yaml(io : IO) : Nil #

Serialize the set of changed attributes to YAML.


def changed_yaml : String #

Serialize the set of changed attributes to YAML.


def clear_changes_information #

Reset changes for all attributes.


def client_id : String | Nil #

#client_id getter


def client_id=(value : String | Nil) #

#client_id setter


def client_id_assigned? : Bool #

Persistence backing for the auth.cr AuthlyAdapter::TokenStore. Each row records the metadata of a single OAuth2 access or refresh token; the #revoked_at column lets the auth service mark a token invalid without rotating signing keys.

See migration 20260519100000000_add_oauth_tokens.sql for the column rationale (notably: most columns are nullable so a revoke for a never-stored refresh token can still leave a marker).


def client_id_change : Tuple(String | Nil | Nil, String | Nil | Nil) | Nil #

Returns a Tuple of the previous and the current value of an instance variable if it has changed


def client_id_changed? : Bool #

Persistence backing for the auth.cr AuthlyAdapter::TokenStore. Each row records the metadata of a single OAuth2 access or refresh token; the #revoked_at column lets the auth service mark a token invalid without rotating signing keys.

See migration 20260519100000000_add_oauth_tokens.sql for the column rationale (notably: most columns are nullable so a revoke for a never-stored refresh token can still leave a marker).


def client_id_default : String | Nil #

#client_id's default value


[View source]
def client_id_present? : Bool #

def client_id_removed? : Bool #

Persistence backing for the auth.cr AuthlyAdapter::TokenStore. Each row records the metadata of a single OAuth2 access or refresh token; the #revoked_at column lets the auth service mark a token invalid without rotating signing keys.

See migration 20260519100000000_add_oauth_tokens.sql for the column rationale (notably: most columns are nullable so a revoke for a never-stored refresh token can still leave a marker).


def client_id_was : String | Nil | Nil #

Persistence backing for the auth.cr AuthlyAdapter::TokenStore. Each row records the metadata of a single OAuth2 access or refresh token; the #revoked_at column lets the auth service mark a token invalid without rotating signing keys.

See migration 20260519100000000_add_oauth_tokens.sql for the column rationale (notably: most columns are nullable so a revoke for a never-stored refresh token can still leave a marker).


def client_id_will_change! : Nil #

Include #client_id in the set of changed attributes, whether it has changed or not.


def created_at : Time #

#created_at getter


def created_at=(value : Time) #

#created_at setter


def created_at? : Time | Nil #

NOTE use getter / getter! (not property / property!) so that the setter defined later in __create_initializer__ is the only setter on the field. Crystal's overload resolution silently fails to replace a property-defined setter with one of identical signature for generic types (e.g. Set(String)?, Array(String)?, String | Array(String)), although it does work for non-generic ones like String?. Defining the setter only once via __create_initializer__ ensures change tracking, sanitization, and custom setter blocks run uniformly across all types.


def created_at_assigned? : Bool #

Persistence backing for the auth.cr AuthlyAdapter::TokenStore. Each row records the metadata of a single OAuth2 access or refresh token; the #revoked_at column lets the auth service mark a token invalid without rotating signing keys.

See migration 20260519100000000_add_oauth_tokens.sql for the column rationale (notably: most columns are nullable so a revoke for a never-stored refresh token can still leave a marker).


def created_at_change : Tuple(Time | Nil, Time | Nil) | Nil #

Returns a Tuple of the previous and the current value of an instance variable if it has changed


def created_at_changed? : Bool #

Persistence backing for the auth.cr AuthlyAdapter::TokenStore. Each row records the metadata of a single OAuth2 access or refresh token; the #revoked_at column lets the auth service mark a token invalid without rotating signing keys.

See migration 20260519100000000_add_oauth_tokens.sql for the column rationale (notably: most columns are nullable so a revoke for a never-stored refresh token can still leave a marker).


def created_at_default : Time #

#created_at's default value


def created_at_present? : Bool #

def created_at_removed? : Bool #

Persistence backing for the auth.cr AuthlyAdapter::TokenStore. Each row records the metadata of a single OAuth2 access or refresh token; the #revoked_at column lets the auth service mark a token invalid without rotating signing keys.

See migration 20260519100000000_add_oauth_tokens.sql for the column rationale (notably: most columns are nullable so a revoke for a never-stored refresh token can still leave a marker).


def created_at_was : Time | Nil #

Persistence backing for the auth.cr AuthlyAdapter::TokenStore. Each row records the metadata of a single OAuth2 access or refresh token; the #revoked_at column lets the auth service mark a token invalid without rotating signing keys.

See migration 20260519100000000_add_oauth_tokens.sql for the column rationale (notably: most columns are nullable so a revoke for a never-stored refresh token can still leave a marker).


def created_at_will_change! : Nil #

Include #created_at in the set of changed attributes, whether it has changed or not.


def expires_at : Int64 | Nil #

#expires_at getter


def expires_at=(value : Int64 | Nil) #

#expires_at setter


def expires_at_assigned? : Bool #

Persistence backing for the auth.cr AuthlyAdapter::TokenStore. Each row records the metadata of a single OAuth2 access or refresh token; the #revoked_at column lets the auth service mark a token invalid without rotating signing keys.

See migration 20260519100000000_add_oauth_tokens.sql for the column rationale (notably: most columns are nullable so a revoke for a never-stored refresh token can still leave a marker).


def expires_at_change : Tuple(Int64 | Nil | Nil, Int64 | Nil | Nil) | Nil #

Returns a Tuple of the previous and the current value of an instance variable if it has changed


def expires_at_changed? : Bool #

Persistence backing for the auth.cr AuthlyAdapter::TokenStore. Each row records the metadata of a single OAuth2 access or refresh token; the #revoked_at column lets the auth service mark a token invalid without rotating signing keys.

See migration 20260519100000000_add_oauth_tokens.sql for the column rationale (notably: most columns are nullable so a revoke for a never-stored refresh token can still leave a marker).


def expires_at_default : Int64 | Nil #

#expires_at's default value


[View source]
def expires_at_present? : Bool #

def expires_at_removed? : Bool #

Persistence backing for the auth.cr AuthlyAdapter::TokenStore. Each row records the metadata of a single OAuth2 access or refresh token; the #revoked_at column lets the auth service mark a token invalid without rotating signing keys.

See migration 20260519100000000_add_oauth_tokens.sql for the column rationale (notably: most columns are nullable so a revoke for a never-stored refresh token can still leave a marker).


def expires_at_was : Int64 | Nil | Nil #

Persistence backing for the auth.cr AuthlyAdapter::TokenStore. Each row records the metadata of a single OAuth2 access or refresh token; the #revoked_at column lets the auth service mark a token invalid without rotating signing keys.

See migration 20260519100000000_add_oauth_tokens.sql for the column rationale (notably: most columns are nullable so a revoke for a never-stored refresh token can still leave a marker).


def expires_at_will_change! : Nil #

Include #expires_at in the set of changed attributes, whether it has changed or not.


def id : Int64 | Nil #

#id getter


def id=(value : Int64 | Nil) #

#id setter


def id? #

Persistence backing for the auth.cr AuthlyAdapter::TokenStore. Each row records the metadata of a single OAuth2 access or refresh token; the #revoked_at column lets the auth service mark a token invalid without rotating signing keys.

See migration 20260519100000000_add_oauth_tokens.sql for the column rationale (notably: most columns are nullable so a revoke for a never-stored refresh token can still leave a marker).


def id_assigned? : Bool #

Persistence backing for the auth.cr AuthlyAdapter::TokenStore. Each row records the metadata of a single OAuth2 access or refresh token; the #revoked_at column lets the auth service mark a token invalid without rotating signing keys.

See migration 20260519100000000_add_oauth_tokens.sql for the column rationale (notably: most columns are nullable so a revoke for a never-stored refresh token can still leave a marker).


def id_change : Tuple(Int64 | Nil | Nil, Int64 | Nil | Nil) | Nil #

Returns a Tuple of the previous and the current value of an instance variable if it has changed


def id_changed? : Bool #

Persistence backing for the auth.cr AuthlyAdapter::TokenStore. Each row records the metadata of a single OAuth2 access or refresh token; the #revoked_at column lets the auth service mark a token invalid without rotating signing keys.

See migration 20260519100000000_add_oauth_tokens.sql for the column rationale (notably: most columns are nullable so a revoke for a never-stored refresh token can still leave a marker).


def id_default : Int64 | Nil #

#id's default value


def id_present? : Bool #

Persistence backing for the auth.cr AuthlyAdapter::TokenStore. Each row records the metadata of a single OAuth2 access or refresh token; the #revoked_at column lets the auth service mark a token invalid without rotating signing keys.

See migration 20260519100000000_add_oauth_tokens.sql for the column rationale (notably: most columns are nullable so a revoke for a never-stored refresh token can still leave a marker).


def id_removed? : Bool #

Persistence backing for the auth.cr AuthlyAdapter::TokenStore. Each row records the metadata of a single OAuth2 access or refresh token; the #revoked_at column lets the auth service mark a token invalid without rotating signing keys.

See migration 20260519100000000_add_oauth_tokens.sql for the column rationale (notably: most columns are nullable so a revoke for a never-stored refresh token can still leave a marker).


def id_was : Int64 | Nil | Nil #

Persistence backing for the auth.cr AuthlyAdapter::TokenStore. Each row records the metadata of a single OAuth2 access or refresh token; the #revoked_at column lets the auth service mark a token invalid without rotating signing keys.

See migration 20260519100000000_add_oauth_tokens.sql for the column rationale (notably: most columns are nullable so a revoke for a never-stored refresh token can still leave a marker).


def id_will_change! : Nil #

Include #id in the set of changed attributes, whether it has changed or not.


def invoke_props #

Persistence backing for the auth.cr AuthlyAdapter::TokenStore. Each row records the metadata of a single OAuth2 access or refresh token; the #revoked_at column lets the auth service mark a token invalid without rotating signing keys.

See migration 20260519100000000_add_oauth_tokens.sql for the column rationale (notably: most columns are nullable so a revoke for a never-stored refresh token can still leave a marker).


def issued_at : Int64 | Nil #

#issued_at getter


def issued_at=(value : Int64 | Nil) #

#issued_at setter


def issued_at_assigned? : Bool #

Persistence backing for the auth.cr AuthlyAdapter::TokenStore. Each row records the metadata of a single OAuth2 access or refresh token; the #revoked_at column lets the auth service mark a token invalid without rotating signing keys.

See migration 20260519100000000_add_oauth_tokens.sql for the column rationale (notably: most columns are nullable so a revoke for a never-stored refresh token can still leave a marker).


def issued_at_change : Tuple(Int64 | Nil | Nil, Int64 | Nil | Nil) | Nil #

Returns a Tuple of the previous and the current value of an instance variable if it has changed


def issued_at_changed? : Bool #

Persistence backing for the auth.cr AuthlyAdapter::TokenStore. Each row records the metadata of a single OAuth2 access or refresh token; the #revoked_at column lets the auth service mark a token invalid without rotating signing keys.

See migration 20260519100000000_add_oauth_tokens.sql for the column rationale (notably: most columns are nullable so a revoke for a never-stored refresh token can still leave a marker).


def issued_at_default : Int64 | Nil #

#issued_at's default value


[View source]
def issued_at_present? : Bool #

def issued_at_removed? : Bool #

Persistence backing for the auth.cr AuthlyAdapter::TokenStore. Each row records the metadata of a single OAuth2 access or refresh token; the #revoked_at column lets the auth service mark a token invalid without rotating signing keys.

See migration 20260519100000000_add_oauth_tokens.sql for the column rationale (notably: most columns are nullable so a revoke for a never-stored refresh token can still leave a marker).


def issued_at_was : Int64 | Nil | Nil #

Persistence backing for the auth.cr AuthlyAdapter::TokenStore. Each row records the metadata of a single OAuth2 access or refresh token; the #revoked_at column lets the auth service mark a token invalid without rotating signing keys.

See migration 20260519100000000_add_oauth_tokens.sql for the column rationale (notably: most columns are nullable so a revoke for a never-stored refresh token can still leave a marker).


def issued_at_will_change! : Nil #

Include #issued_at in the set of changed attributes, whether it has changed or not.


def jti : String #

#jti getter


def jti=(value : String) #

Setters #jti setter


def jti? : String | Nil #

NOTE use getter / getter! (not property / property!) so that the setter defined later in __create_initializer__ is the only setter on the field. Crystal's overload resolution silently fails to replace a property-defined setter with one of identical signature for generic types (e.g. Set(String)?, Array(String)?, String | Array(String)), although it does work for non-generic ones like String?. Defining the setter only once via __create_initializer__ ensures change tracking, sanitization, and custom setter blocks run uniformly across all types.


def jti_assigned? : Bool #

Persistence backing for the auth.cr AuthlyAdapter::TokenStore. Each row records the metadata of a single OAuth2 access or refresh token; the #revoked_at column lets the auth service mark a token invalid without rotating signing keys.

See migration 20260519100000000_add_oauth_tokens.sql for the column rationale (notably: most columns are nullable so a revoke for a never-stored refresh token can still leave a marker).


def jti_change : Tuple(String | Nil, String | Nil) | Nil #

Returns a Tuple of the previous and the current value of an instance variable if it has changed


def jti_changed? : Bool #

Persistence backing for the auth.cr AuthlyAdapter::TokenStore. Each row records the metadata of a single OAuth2 access or refresh token; the #revoked_at column lets the auth service mark a token invalid without rotating signing keys.

See migration 20260519100000000_add_oauth_tokens.sql for the column rationale (notably: most columns are nullable so a revoke for a never-stored refresh token can still leave a marker).


def jti_default : String #

#jti's default value


[View source]
def jti_present? : Bool #

def jti_removed? : Bool #

Persistence backing for the auth.cr AuthlyAdapter::TokenStore. Each row records the metadata of a single OAuth2 access or refresh token; the #revoked_at column lets the auth service mark a token invalid without rotating signing keys.

See migration 20260519100000000_add_oauth_tokens.sql for the column rationale (notably: most columns are nullable so a revoke for a never-stored refresh token can still leave a marker).


def jti_was : String | Nil #

Persistence backing for the auth.cr AuthlyAdapter::TokenStore. Each row records the metadata of a single OAuth2 access or refresh token; the #revoked_at column lets the auth service mark a token invalid without rotating signing keys.

See migration 20260519100000000_add_oauth_tokens.sql for the column rationale (notably: most columns are nullable so a revoke for a never-stored refresh token can still leave a marker).


def jti_will_change! : Nil #

Include #jti in the set of changed attributes, whether it has changed or not.


def persistent_attributes #

Persistence backing for the auth.cr AuthlyAdapter::TokenStore. Each row records the metadata of a single OAuth2 access or refresh token; the #revoked_at column lets the auth service mark a token invalid without rotating signing keys.

See migration 20260519100000000_add_oauth_tokens.sql for the column rationale (notably: most columns are nullable so a revoke for a never-stored refresh token can still leave a marker).


def primary_key #

Persistence backing for the auth.cr AuthlyAdapter::TokenStore. Each row records the metadata of a single OAuth2 access or refresh token; the #revoked_at column lets the auth service mark a token invalid without rotating signing keys.

See migration 20260519100000000_add_oauth_tokens.sql for the column rationale (notably: most columns are nullable so a revoke for a never-stored refresh token can still leave a marker).


[View source]
def primary_key_hash #

Persistence backing for the auth.cr AuthlyAdapter::TokenStore. Each row records the metadata of a single OAuth2 access or refresh token; the #revoked_at column lets the auth service mark a token invalid without rotating signing keys.

See migration 20260519100000000_add_oauth_tokens.sql for the column rationale (notably: most columns are nullable so a revoke for a never-stored refresh token can still leave a marker).


def restore_attributes #

Reset each attribute to their previous values and clears all changes.


def revoke! : Nil #

Stamps #revoked_at to the current time (epoch seconds) and saves. No-op if already revoked.


[View source]
def revoked? : Bool #

true if the token has been marked revoked via #revoked_at.


[View source]
def revoked_at : Int64 | Nil #

#revoked_at getter


def revoked_at=(value : Int64 | Nil) #

#revoked_at setter


def revoked_at_assigned? : Bool #

Persistence backing for the auth.cr AuthlyAdapter::TokenStore. Each row records the metadata of a single OAuth2 access or refresh token; the #revoked_at column lets the auth service mark a token invalid without rotating signing keys.

See migration 20260519100000000_add_oauth_tokens.sql for the column rationale (notably: most columns are nullable so a revoke for a never-stored refresh token can still leave a marker).


def revoked_at_change : Tuple(Int64 | Nil | Nil, Int64 | Nil | Nil) | Nil #

Returns a Tuple of the previous and the current value of an instance variable if it has changed


def revoked_at_changed? : Bool #

Persistence backing for the auth.cr AuthlyAdapter::TokenStore. Each row records the metadata of a single OAuth2 access or refresh token; the #revoked_at column lets the auth service mark a token invalid without rotating signing keys.

See migration 20260519100000000_add_oauth_tokens.sql for the column rationale (notably: most columns are nullable so a revoke for a never-stored refresh token can still leave a marker).


def revoked_at_default : Int64 | Nil #

#revoked_at's default value


[View source]
def revoked_at_present? : Bool #

def revoked_at_removed? : Bool #

Persistence backing for the auth.cr AuthlyAdapter::TokenStore. Each row records the metadata of a single OAuth2 access or refresh token; the #revoked_at column lets the auth service mark a token invalid without rotating signing keys.

See migration 20260519100000000_add_oauth_tokens.sql for the column rationale (notably: most columns are nullable so a revoke for a never-stored refresh token can still leave a marker).


def revoked_at_was : Int64 | Nil | Nil #

Persistence backing for the auth.cr AuthlyAdapter::TokenStore. Each row records the metadata of a single OAuth2 access or refresh token; the #revoked_at column lets the auth service mark a token invalid without rotating signing keys.

See migration 20260519100000000_add_oauth_tokens.sql for the column rationale (notably: most columns are nullable so a revoke for a never-stored refresh token can still leave a marker).


def revoked_at_will_change! : Nil #

Include #revoked_at in the set of changed attributes, whether it has changed or not.


def run_create_callbacks(&) #

Wrap a block with callbacks for the appropriate crud operation


[View source]
def run_destroy_callbacks(&) #

Persistence backing for the auth.cr AuthlyAdapter::TokenStore. Each row records the metadata of a single OAuth2 access or refresh token; the #revoked_at column lets the auth service mark a token invalid without rotating signing keys.

See migration 20260519100000000_add_oauth_tokens.sql for the column rationale (notably: most columns are nullable so a revoke for a never-stored refresh token can still leave a marker).


[View source]
def run_save_callbacks(&) #

Persistence backing for the auth.cr AuthlyAdapter::TokenStore. Each row records the metadata of a single OAuth2 access or refresh token; the #revoked_at column lets the auth service mark a token invalid without rotating signing keys.

See migration 20260519100000000_add_oauth_tokens.sql for the column rationale (notably: most columns are nullable so a revoke for a never-stored refresh token can still leave a marker).


[View source]
def run_update_callbacks(&) #

Persistence backing for the auth.cr AuthlyAdapter::TokenStore. Each row records the metadata of a single OAuth2 access or refresh token; the #revoked_at column lets the auth service mark a token invalid without rotating signing keys.

See migration 20260519100000000_add_oauth_tokens.sql for the column rationale (notably: most columns are nullable so a revoke for a never-stored refresh token can still leave a marker).


[View source]
def scope : String | Nil #

#scope getter


def scope=(value : String | Nil) #

#scope setter


def scope_assigned? : Bool #

Persistence backing for the auth.cr AuthlyAdapter::TokenStore. Each row records the metadata of a single OAuth2 access or refresh token; the #revoked_at column lets the auth service mark a token invalid without rotating signing keys.

See migration 20260519100000000_add_oauth_tokens.sql for the column rationale (notably: most columns are nullable so a revoke for a never-stored refresh token can still leave a marker).


def scope_change : Tuple(String | Nil | Nil, String | Nil | Nil) | Nil #

Returns a Tuple of the previous and the current value of an instance variable if it has changed


def scope_changed? : Bool #

Persistence backing for the auth.cr AuthlyAdapter::TokenStore. Each row records the metadata of a single OAuth2 access or refresh token; the #revoked_at column lets the auth service mark a token invalid without rotating signing keys.

See migration 20260519100000000_add_oauth_tokens.sql for the column rationale (notably: most columns are nullable so a revoke for a never-stored refresh token can still leave a marker).


def scope_default : String | Nil #

#scope's default value


[View source]
def scope_present? : Bool #

def scope_removed? : Bool #

Persistence backing for the auth.cr AuthlyAdapter::TokenStore. Each row records the metadata of a single OAuth2 access or refresh token; the #revoked_at column lets the auth service mark a token invalid without rotating signing keys.

See migration 20260519100000000_add_oauth_tokens.sql for the column rationale (notably: most columns are nullable so a revoke for a never-stored refresh token can still leave a marker).


def scope_was : String | Nil | Nil #

Persistence backing for the auth.cr AuthlyAdapter::TokenStore. Each row records the metadata of a single OAuth2 access or refresh token; the #revoked_at column lets the auth service mark a token invalid without rotating signing keys.

See migration 20260519100000000_add_oauth_tokens.sql for the column rationale (notably: most columns are nullable so a revoke for a never-stored refresh token can still leave a marker).


def scope_will_change! : Nil #

Include #scope in the set of changed attributes, whether it has changed or not.


def sub : String | Nil #

#sub getter


def sub=(value : String | Nil) #

#sub setter


def sub_assigned? : Bool #

Persistence backing for the auth.cr AuthlyAdapter::TokenStore. Each row records the metadata of a single OAuth2 access or refresh token; the #revoked_at column lets the auth service mark a token invalid without rotating signing keys.

See migration 20260519100000000_add_oauth_tokens.sql for the column rationale (notably: most columns are nullable so a revoke for a never-stored refresh token can still leave a marker).


def sub_change : Tuple(String | Nil | Nil, String | Nil | Nil) | Nil #

Returns a Tuple of the previous and the current value of an instance variable if it has changed


def sub_changed? : Bool #

Persistence backing for the auth.cr AuthlyAdapter::TokenStore. Each row records the metadata of a single OAuth2 access or refresh token; the #revoked_at column lets the auth service mark a token invalid without rotating signing keys.

See migration 20260519100000000_add_oauth_tokens.sql for the column rationale (notably: most columns are nullable so a revoke for a never-stored refresh token can still leave a marker).


def sub_default : String | Nil #

#sub's default value


[View source]
def sub_present? : Bool #

def sub_removed? : Bool #

Persistence backing for the auth.cr AuthlyAdapter::TokenStore. Each row records the metadata of a single OAuth2 access or refresh token; the #revoked_at column lets the auth service mark a token invalid without rotating signing keys.

See migration 20260519100000000_add_oauth_tokens.sql for the column rationale (notably: most columns are nullable so a revoke for a never-stored refresh token can still leave a marker).


def sub_was : String | Nil | Nil #

Persistence backing for the auth.cr AuthlyAdapter::TokenStore. Each row records the metadata of a single OAuth2 access or refresh token; the #revoked_at column lets the auth service mark a token invalid without rotating signing keys.

See migration 20260519100000000_add_oauth_tokens.sql for the column rationale (notably: most columns are nullable so a revoke for a never-stored refresh token can still leave a marker).


def sub_will_change! : Nil #

Include #sub in the set of changed attributes, whether it has changed or not.


def table_name #

Persistence backing for the auth.cr AuthlyAdapter::TokenStore. Each row records the metadata of a single OAuth2 access or refresh token; the #revoked_at column lets the auth service mark a token invalid without rotating signing keys.

See migration 20260519100000000_add_oauth_tokens.sql for the column rationale (notably: most columns are nullable so a revoke for a never-stored refresh token can still leave a marker).


def token_type : String | Nil #

#token_type getter


def token_type=(value : String | Nil) #

#token_type setter


def token_type_assigned? : Bool #

Persistence backing for the auth.cr AuthlyAdapter::TokenStore. Each row records the metadata of a single OAuth2 access or refresh token; the #revoked_at column lets the auth service mark a token invalid without rotating signing keys.

See migration 20260519100000000_add_oauth_tokens.sql for the column rationale (notably: most columns are nullable so a revoke for a never-stored refresh token can still leave a marker).


def token_type_change : Tuple(String | Nil | Nil, String | Nil | Nil) | Nil #

Returns a Tuple of the previous and the current value of an instance variable if it has changed


def token_type_changed? : Bool #

Persistence backing for the auth.cr AuthlyAdapter::TokenStore. Each row records the metadata of a single OAuth2 access or refresh token; the #revoked_at column lets the auth service mark a token invalid without rotating signing keys.

See migration 20260519100000000_add_oauth_tokens.sql for the column rationale (notably: most columns are nullable so a revoke for a never-stored refresh token can still leave a marker).


def token_type_default : String | Nil #

#token_type's default value


[View source]
def token_type_present? : Bool #

def token_type_removed? : Bool #

Persistence backing for the auth.cr AuthlyAdapter::TokenStore. Each row records the metadata of a single OAuth2 access or refresh token; the #revoked_at column lets the auth service mark a token invalid without rotating signing keys.

See migration 20260519100000000_add_oauth_tokens.sql for the column rationale (notably: most columns are nullable so a revoke for a never-stored refresh token can still leave a marker).


def token_type_was : String | Nil | Nil #

Persistence backing for the auth.cr AuthlyAdapter::TokenStore. Each row records the metadata of a single OAuth2 access or refresh token; the #revoked_at column lets the auth service mark a token invalid without rotating signing keys.

See migration 20260519100000000_add_oauth_tokens.sql for the column rationale (notably: most columns are nullable so a revoke for a never-stored refresh token can still leave a marker).


def token_type_will_change! : Nil #

Include #token_type in the set of changed attributes, whether it has changed or not.


def updated_at : Time #

#updated_at getter


def updated_at=(value : Time) #

#updated_at setter


def updated_at? : Time | Nil #

NOTE use getter / getter! (not property / property!) so that the setter defined later in __create_initializer__ is the only setter on the field. Crystal's overload resolution silently fails to replace a property-defined setter with one of identical signature for generic types (e.g. Set(String)?, Array(String)?, String | Array(String)), although it does work for non-generic ones like String?. Defining the setter only once via __create_initializer__ ensures change tracking, sanitization, and custom setter blocks run uniformly across all types.


def updated_at_assigned? : Bool #

Persistence backing for the auth.cr AuthlyAdapter::TokenStore. Each row records the metadata of a single OAuth2 access or refresh token; the #revoked_at column lets the auth service mark a token invalid without rotating signing keys.

See migration 20260519100000000_add_oauth_tokens.sql for the column rationale (notably: most columns are nullable so a revoke for a never-stored refresh token can still leave a marker).


def updated_at_change : Tuple(Time | Nil, Time | Nil) | Nil #

Returns a Tuple of the previous and the current value of an instance variable if it has changed


def updated_at_changed? : Bool #

Persistence backing for the auth.cr AuthlyAdapter::TokenStore. Each row records the metadata of a single OAuth2 access or refresh token; the #revoked_at column lets the auth service mark a token invalid without rotating signing keys.

See migration 20260519100000000_add_oauth_tokens.sql for the column rationale (notably: most columns are nullable so a revoke for a never-stored refresh token can still leave a marker).


def updated_at_default : Time #

#updated_at's default value


def updated_at_present? : Bool #

def updated_at_removed? : Bool #

Persistence backing for the auth.cr AuthlyAdapter::TokenStore. Each row records the metadata of a single OAuth2 access or refresh token; the #revoked_at column lets the auth service mark a token invalid without rotating signing keys.

See migration 20260519100000000_add_oauth_tokens.sql for the column rationale (notably: most columns are nullable so a revoke for a never-stored refresh token can still leave a marker).


def updated_at_was : Time | Nil #

Persistence backing for the auth.cr AuthlyAdapter::TokenStore. Each row records the metadata of a single OAuth2 access or refresh token; the #revoked_at column lets the auth service mark a token invalid without rotating signing keys.

See migration 20260519100000000_add_oauth_tokens.sql for the column rationale (notably: most columns are nullable so a revoke for a never-stored refresh token can still leave a marker).


def updated_at_will_change! : Nil #

Include #updated_at in the set of changed attributes, whether it has changed or not.


def validate_nilability #

Validate that all non-nillable fields have values.