KeyAction

flitter-auth/model/KeyAction~ KeyAction

Represents a single available key action. Key actions are one-time use links that directly call a method on a controller. These actions:

  • Can pass along context
  • Have expiration dates
  • Are single-use only
  • Can automatically log in a user during the request lifecycle

Constructor

new KeyAction()

Extends

Members

(static) schema :object

Gets the schema for this model. Provides the following fields:

  • key: String [uuid]
  • secret: String [uuid]
  • user_id: ObjectId
  • handler: String
  • created: Date [now]
  • expires: Date [now +1 day]
  • used: Boolean
  • auto_login: Boolean
  • no_auto_logout: Boolean
  • did_auto_login: Boolean
  • data: String ['{}']
Type:
  • object

(static) services

Defines the services required by this model.

(private) __embedded :boolean

True if the model is embedded within a parent.

Type:
  • boolean

(private) __embedded_parent :module:flitter-orm/src/model/Model~Model|boolean

If the model is embedded within a parent, this is the reference to that parent. Otherwise, false.

(private) __relation_cache :module:flitter-orm/src/model/ResultCache~ResultCache

Cache for results of relationship lookups for the instance.

(private) __schema_instance :module:flitter-orm/src/schema/Schema~Schema|boolean

The holding variable for the instantiated schema.

(private) _di_allow_defer :boolean

If true, the injector will defer the class if the class requests any services that the container is missing. These services are filled in later and added to the prototype and any instances. True by default.

Type:
  • boolean

(private) _di_deferred_instances :Array.<module:flitter-di/src/Injectable~Injectable>

Collection of instances of this class that need to have the deferred service instances injected into them when the deferred services are finally provided.

(private) _di_deferred_services :Array.<string>

List of services that were deferred and not provided at the time of injection.

Type:
  • Array.<string>

collection :string|boolean

Optionally, the name of the collection where this model should have its records stored. If none is provided, the collection will be the name of the class.

Type:
  • string | boolean

id

If defined, will return the string-form ID of this model.

scopes :Array.<module:flitter-orm/src/model/Scope~Scope>

Array of instantiated references to Scopes that should be applied to this model.

Methods

(async, static) availableFilter() → {Promise.<module:flitter-orm/src/filter/Filter~Filter>}

Generate a filter object for this model that restricts the result set to unused, unexpired key actions.

(async, static) lookup(params) → {Promise.<module:flitter-auth/model/KeyAction~KeyAction>}

Lookup a single key action based on the passed in filter parameters. Automatically restricts the result set to unused, unexpired key actions.

Parameters:
Name Type Description
params object

(private) __collection() → {Collection}

Get the MongoDB collection instance for this model.

Returns:
Type
Collection

(async, private) __scope_limit_save(db_object) → {Promise.<object>}

Allow all of the model's registerd scopes to modify the schema-cast database object before it is persisted.

Parameters:
Name Type Description
db_object object
Returns:
  • modified db_object
Type
Promise.<object>

(private) __set_values(data, current_objectopt, current_schemaopt)

Shallow copy the values from the specified object to this model.

Parameters:
Name Type Attributes Default Description
data object
current_object object <optional>
false

for recursion. The current object scope.

current_schema object <optional>
false

for recursion. The current schema level.

belongs_to_many(OtherModel, local_key, foreign_keyopt) → {Promise.<Array.<module:flitter-orm/src/model/Model~Model>>|Array.<module:flitter-orm/src/model/Model~Model>}

Associates many records of another model with this model based on a local/foreign key relationship.

Normally, this would be automatically returned by a named method on the sub-class that implements the relationship.

This returns a cached result. So, it will only return a promise on the first call. Subsequent calls will return the results from the cache and are, therefore, synchronous.

Parameters:
Name Type Attributes Default Description
OtherModel module:flitter-orm/src/model/Model~Model

static class of the other model

local_key string

local key of the field to match

foreign_key string <optional>
''

foreign key of the field to match (if none provided, assume the same as local_key)

Returns:
  • the matching model instances
Type
Promise.<Array.<module:flitter-orm/src/model/Model~Model>> | Array.<module:flitter-orm/src/model/Model~Model>

belongs_to_one(OtherModel, local_key, foreign_keyopt) → {Promise.<(module:flitter-orm/src/model/Model~Model|undefined)>|module:flitter-orm/src/model/Model~Model}

Associates a single record of another model with this model based on a local/foreign key relationship.

Normally, this would be automatically returned by a named method on the sub-class that implements the relationship.

This returns a cached result. So, it will only return a promise on the first call. Subsequent calls will return the results from the cache and are, therefore, synchronous.

Parameters:
Name Type Attributes Default Description
OtherModel module:flitter-orm/src/model/Model~Model

static class of the other model

local_key string

local key of the field to match

foreign_key string <optional>
''

foreign key of the field to match (if none provided, assume the same as local_key)

Returns:
  • the matching model instance
Type
Promise.<(module:flitter-orm/src/model/Model~Model|undefined)> | module:flitter-orm/src/model/Model~Model

(async) close(request) → {Promise.<void>}

Close out the key action. If did_auto_login is set and no_auto_logout is not set, log out the user and remove the key action from the session for the provided request.

Parameters:
Name Type Description
request express/request

the request

Returns:
Type
Promise.<void>

data_get(key) → {*}

Get a value from the action's metadata.

Parameters:
Name Type Description
key string
Returns:
Type
*

data_set(key, value)

Set a value in the action's metadata.

Parameters:
Name Type Description
key string
value *

(async) delete() → {Promise.<module:flitter-orm/src/model/Model~Model>}

Delete the current instance of this model from the database. This will remove the model's ID from this instance. Other properties will remain unchanged.

has_many(OtherModel, local_key, foreign_keyopt) → {Promise.<Array.<module:flitter-orm/src/model/Model~Model>>|Array.<module:flitter-orm/src/model/Model~Model>}

Associates many records of another model with this model based on a local/foreign key relationship.

Normally, this would be automatically returned by a named method on the sub-class that implements the relationship.

This returns a cached result. So, it will only return a promise on the first call. Subsequent calls will return the results from the cache and are, therefore, synchronous.

Parameters:
Name Type Attributes Default Description
OtherModel module:flitter-orm/src/model/Model~Model

static class of the other model

local_key string

local key of the field to match

foreign_key string <optional>
''

foreign key of the field to match (if none provided, assume the same as local_key)

Returns:
  • the matching model instances
Type
Promise.<Array.<module:flitter-orm/src/model/Model~Model>> | Array.<module:flitter-orm/src/model/Model~Model>

has_one(OtherModel, local_key, foreign_keyopt) → {Promise.<module:flitter-orm/src/model/Model~Model>|module:flitter-orm/src/model/Model~Model}

Associates a single record of another model with this model based on a local/foreign key relationship.

Normally, this would be automatically returned by a named method on the sub-class that implements the relationship.

This returns a cached result. So, it will only return a promise on the first call. Subsequent calls will return the results from the cache and are, therefore, synchronous.

Parameters:
Name Type Attributes Default Description
OtherModel module:flitter-orm/src/model/Model~Model

static class of the other model

local_key string

local key of the field to match

foreign_key string <optional>
''

foreign key of the field to match (if none provided, assume the same as local_key)

Returns:
  • the matching model instance
Type
Promise.<module:flitter-orm/src/model/Model~Model> | module:flitter-orm/src/model/Model~Model

(async) save() → {Promise.<module:flitter-orm/src/model/Model~Model>}

Persist this model instance to the database. This will store only values defined in the schema for this model, and, in so doing, will cast those values and fill in the specified defaults. These changes will be added to this instance after the save.

Returns:
  • the current instance with updated properties
Type
Promise.<module:flitter-orm/src/model/Model~Model>

(async) set(field, value) → {Promise.<module:flitter-orm/src/model/Model~Model>}

A convenience method. Set the specified field on this model equal to the specified property and immediately save the record.

Parameters:
Name Type Description
field string
value *

url() → {string}

Get the URL path for this key action. Uses the 'app.url' config.

Returns:
Type
string

(async) user() → {Promise.<(module:flitter-auth/model/User~BaseUser|void)>}

Fetch the associated user for this action.

Returns:
Type
Promise.<(module:flitter-auth/model/User~BaseUser|void)>