Lockspire.Domain.DeviceAuthorization (lockspire v1.0.0)

Copy Markdown

Core domain model for OAuth 2.0 Device Authorization Grant (RFC 8628).

Summary

Types

status()

@type status() :: :pending | :approved | :denied | :consumed | :expired

t()

@type t() :: %Lockspire.Domain.DeviceAuthorization{
  approved_at: DateTime.t() | nil,
  client_id: String.t(),
  consumed_at: DateTime.t() | nil,
  denied_at: DateTime.t() | nil,
  device_code: String.t() | nil,
  device_code_hash: String.t(),
  effective_poll_interval_seconds: pos_integer(),
  expired_at: DateTime.t() | nil,
  expires_at: DateTime.t(),
  id: integer() | nil,
  next_poll_allowed_at: DateTime.t(),
  scopes: [String.t()],
  status: status(),
  subject_id: String.t() | nil,
  user_code: String.t() | nil,
  user_code_hash: String.t(),
  verification_handle: String.t()
}

Functions

canonicalize_user_code(user_code)

@spec canonicalize_user_code(String.t()) :: String.t()

default_poll_interval_seconds()

@spec default_poll_interval_seconds() :: pos_integer()

hash_user_code(user_code)

@spec hash_user_code(String.t()) :: String.t()

initial_next_poll_allowed_at(issued_at)

@spec initial_next_poll_allowed_at(DateTime.t()) :: DateTime.t()

issue(attrs, opts \\ [])

Issues a new Device Authorization struct.

statuses()

@spec statuses() :: [status(), ...]