Файл: gapps/vendor/cartalyst/sentinel/src/Activations/IlluminateActivationRepository.php
Строк: 136
<?php
/**
* Part of the Sentinel package.
*
* NOTICE OF LICENSE
*
* Licensed under the 3-clause BSD License.
*
* This source file is subject to the 3-clause BSD License that is
* bundled with this package in the LICENSE file.
*
* @package Sentinel
* @version 2.0.15
* @author Cartalyst LLC
* @license BSD License (3-clause)
* @copyright (c) 2011-2017, Cartalyst LLC
* @link http://cartalyst.com
*/
namespace CartalystSentinelActivations;
use CarbonCarbon;
use CartalystSentinelUsersUserInterface;
use CartalystSupportTraitsRepositoryTrait;
class IlluminateActivationRepository implements ActivationRepositoryInterface
{
use RepositoryTrait;
/**
* The Eloquent activation model name.
*
* @var string
*/
protected $model = 'CartalystSentinelActivationsEloquentActivation';
/**
* The activation expiration time, in seconds.
*
* @var int
*/
protected $expires = 259200;
/**
* Create a new Illuminate activation repository.
*
* @param string $model
* @param int $expires
* @return void
*/
public function __construct($model = null, $expires = null)
{
if (isset($model)) {
$this->model = $model;
}
if (isset($expires)) {
$this->expires = $expires;
}
}
/**
* {@inheritDoc}
*/
public function create(UserInterface $user)
{
$activation = $this->createModel();
$code = $this->generateActivationCode();
$activation->fill(compact('code'));
$activation->user_id = $user->getUserId();
$activation->save();
return $activation;
}
/**
* {@inheritDoc}
*/
public function exists(UserInterface $user, $code = null)
{
$expires = $this->expires();
$activation = $this
->createModel()
->newQuery()
->where('user_id', $user->getUserId())
->where('completed', false)
->where('created_at', '>', $expires);
if ($code) {
$activation->where('code', $code);
}
return $activation->first() ?: false;
}
/**
* {@inheritDoc}
*/
public function complete(UserInterface $user, $code)
{
$expires = $this->expires();
$activation = $this
->createModel()
->newQuery()
->where('user_id', $user->getUserId())
->where('code', $code)
->where('completed', false)
->where('created_at', '>', $expires)
->first();
if ($activation === null) {
return false;
}
$activation->fill([
'completed' => true,
'completed_at' => Carbon::now(),
]);
$activation->save();
return true;
}
/**
* {@inheritDoc}
*/
public function completed(UserInterface $user)
{
$activation = $this
->createModel()
->newQuery()
->where('user_id', $user->getUserId())
->where('completed', true)
->first();
return $activation ?: false;
}
/**
* {@inheritDoc}
*/
public function remove(UserInterface $user)
{
$activation = $this->completed($user);
if ($activation === false) {
return false;
}
return $activation->delete();
}
/**
* {@inheritDoc}
*/
public function removeExpired()
{
$expires = $this->expires();
return $this
->createModel()
->newQuery()
->where('completed', false)
->where('created_at', '<', $expires)
->delete();
}
/**
* Returns the expiration date.
*
* @return CarbonCarbon
*/
protected function expires()
{
return Carbon::now()->subSeconds($this->expires);
}
/**
* Return a random string for an activation code.
*
* @return string
*/
protected function generateActivationCode()
{
return str_random(32);
}
}