name: DatabaseTokenRepository
class_comment: null
dependencies:
- name: CanResetPasswordContract
  type: class
  source: Illuminate\Contracts\Auth\CanResetPassword
- name: HasherContract
  type: class
  source: Illuminate\Contracts\Hashing\Hasher
- name: ConnectionInterface
  type: class
  source: Illuminate\Database\ConnectionInterface
- name: Carbon
  type: class
  source: Illuminate\Support\Carbon
- name: Str
  type: class
  source: Illuminate\Support\Str
properties:
- name: connection
  visibility: protected
  comment: '# * The database connection instance.

    # *

    # * @var \Illuminate\Database\ConnectionInterface'
- name: hasher
  visibility: protected
  comment: '# * The Hasher implementation.

    # *

    # * @var \Illuminate\Contracts\Hashing\Hasher'
- name: table
  visibility: protected
  comment: '# * The token database table.

    # *

    # * @var string'
- name: hashKey
  visibility: protected
  comment: '# * The hashing key.

    # *

    # * @var string'
- name: expires
  visibility: protected
  comment: '# * The number of seconds a token should last.

    # *

    # * @var int'
- name: throttle
  visibility: protected
  comment: '# * Minimum number of seconds before re-redefining the token.

    # *

    # * @var int'
methods:
- name: __construct
  visibility: public
  parameters:
  - name: connection
  - name: hasher
  - name: table
  - name: hashKey
  - name: expires
    default: '60'
  - name: throttle
    default: '60'
  comment: "# * The database connection instance.\n# *\n# * @var \\Illuminate\\Database\\\
    ConnectionInterface\n# */\n# protected $connection;\n# \n# /**\n# * The Hasher\
    \ implementation.\n# *\n# * @var \\Illuminate\\Contracts\\Hashing\\Hasher\n# */\n\
    # protected $hasher;\n# \n# /**\n# * The token database table.\n# *\n# * @var\
    \ string\n# */\n# protected $table;\n# \n# /**\n# * The hashing key.\n# *\n# *\
    \ @var string\n# */\n# protected $hashKey;\n# \n# /**\n# * The number of seconds\
    \ a token should last.\n# *\n# * @var int\n# */\n# protected $expires;\n# \n#\
    \ /**\n# * Minimum number of seconds before re-redefining the token.\n# *\n# *\
    \ @var int\n# */\n# protected $throttle;\n# \n# /**\n# * Create a new token repository\
    \ instance.\n# *\n# * @param  \\Illuminate\\Database\\ConnectionInterface  $connection\n\
    # * @param  \\Illuminate\\Contracts\\Hashing\\Hasher  $hasher\n# * @param  string\
    \  $table\n# * @param  string  $hashKey\n# * @param  int  $expires\n# * @param\
    \  int  $throttle\n# * @return void"
- name: create
  visibility: public
  parameters:
  - name: user
  comment: '# * Create a new token record.

    # *

    # * @param  \Illuminate\Contracts\Auth\CanResetPassword  $user

    # * @return string'
- name: deleteExisting
  visibility: protected
  parameters:
  - name: user
  comment: '# * Delete all existing reset tokens from the database.

    # *

    # * @param  \Illuminate\Contracts\Auth\CanResetPassword  $user

    # * @return int'
- name: getPayload
  visibility: protected
  parameters:
  - name: email
  - name: token
  comment: '# * Build the record payload for the table.

    # *

    # * @param  string  $email

    # * @param  string  $token

    # * @return array'
- name: exists
  visibility: public
  parameters:
  - name: user
  - name: token
  comment: '# * Determine if a token record exists and is valid.

    # *

    # * @param  \Illuminate\Contracts\Auth\CanResetPassword  $user

    # * @param  string  $token

    # * @return bool'
- name: tokenExpired
  visibility: protected
  parameters:
  - name: createdAt
  comment: '# * Determine if the token has expired.

    # *

    # * @param  string  $createdAt

    # * @return bool'
- name: recentlyCreatedToken
  visibility: public
  parameters:
  - name: user
  comment: '# * Determine if the given user recently created a password reset token.

    # *

    # * @param  \Illuminate\Contracts\Auth\CanResetPassword  $user

    # * @return bool'
- name: tokenRecentlyCreated
  visibility: protected
  parameters:
  - name: createdAt
  comment: '# * Determine if the token was recently created.

    # *

    # * @param  string  $createdAt

    # * @return bool'
- name: delete
  visibility: public
  parameters:
  - name: user
  comment: '# * Delete a token record by user.

    # *

    # * @param  \Illuminate\Contracts\Auth\CanResetPassword  $user

    # * @return void'
- name: deleteExpired
  visibility: public
  parameters: []
  comment: '# * Delete expired tokens.

    # *

    # * @return void'
- name: createNewToken
  visibility: public
  parameters: []
  comment: '# * Create a new token for the user.

    # *

    # * @return string'
- name: getConnection
  visibility: public
  parameters: []
  comment: '# * Get the database connection instance.

    # *

    # * @return \Illuminate\Database\ConnectionInterface'
- name: getTable
  visibility: protected
  parameters: []
  comment: '# * Begin a new database query against the table.

    # *

    # * @return \Illuminate\Database\Query\Builder'
- name: getHasher
  visibility: public
  parameters: []
  comment: '# * Get the hasher instance.

    # *

    # * @return \Illuminate\Contracts\Hashing\Hasher'
traits:
- Illuminate\Database\ConnectionInterface
- Illuminate\Support\Carbon
- Illuminate\Support\Str
interfaces:
- TokenRepositoryInterface