| Server IP : 54.233.248.239 / Your IP : 172.28.1.13 Web Server : Apache System : Linux ip-172-28-29-189 6.5.0-1014-aws #14~22.04.1-Ubuntu SMP Thu Feb 15 15:27:06 UTC 2024 x86_64 User : www-data ( 33) PHP Version : 7.2.34-43+ubuntu22.04.1+deb.sury.org+1 Disable Function : pcntl_alarm,pcntl_fork,pcntl_waitpid,pcntl_wait,pcntl_wifexited,pcntl_wifstopped,pcntl_wifsignaled,pcntl_wifcontinued,pcntl_wexitstatus,pcntl_wtermsig,pcntl_wstopsig,pcntl_signal,pcntl_signal_get_handler,pcntl_signal_dispatch,pcntl_get_last_error,pcntl_strerror,pcntl_sigprocmask,pcntl_sigwaitinfo,pcntl_sigtimedwait,pcntl_exec,pcntl_getpriority,pcntl_setpriority,pcntl_async_signals, MySQL : OFF | cURL : ON | WGET : ON | Perl : ON | Python : OFF | Sudo : ON | Pkexec : ON Directory : /var/www/html/vinumday2_0/vendor/cartalyst/sentinel/src/Reminders/ |
Upload File : |
<?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.16
* @author Cartalyst LLC
* @license BSD License (3-clause)
* @copyright (c) 2011-2017, Cartalyst LLC
* @link http://cartalyst.com
*/
namespace Cartalyst\Sentinel\Reminders;
use Carbon\Carbon;
use Cartalyst\Sentinel\Users\UserInterface;
use Cartalyst\Sentinel\Users\UserRepositoryInterface;
use Cartalyst\Support\Traits\RepositoryTrait;
class IlluminateReminderRepository implements ReminderRepositoryInterface
{
use RepositoryTrait;
/**
* The user repository.
*
* @var \Cartalyst\Sentinel\Users\UserRepositoryInterface
*/
protected $users;
/**
* The Eloquent reminder model name.
*
* @var string
*/
protected $model = 'Cartalyst\Sentinel\Reminders\EloquentReminder';
/**
* The expiration time in seconds.
*
* @var int
*/
protected $expires = 259200;
/**
* Create a new Illuminate reminder repository.
*
* @param \Cartalyst\Sentinel\Users\UserRepositoryInterface $users
* @param string $model
* @param int $expires
* @return void
*/
public function __construct(UserRepositoryInterface $users, $model = null, $expires = null)
{
$this->users = $users;
if (isset($model)) {
$this->model = $model;
}
if (isset($expires)) {
$this->expires = $expires;
}
}
/**
* {@inheritDoc}
*/
public function create(UserInterface $user)
{
$reminder = $this->createModel();
$code = $this->generateReminderCode();
$reminder->fill([
'code' => $code,
'completed' => false,
]);
$reminder->user_id = $user->getUserId();
$reminder->save();
return $reminder;
}
/**
* {@inheritDoc}
*/
public function exists(UserInterface $user, $code = null)
{
$expires = $this->expires();
$reminder = $this
->createModel()
->newQuery()
->where('user_id', $user->getUserId())
->where('completed', false)
->where('created_at', '>', $expires);
if ($code) {
$reminder->where('code', $code);
}
return $reminder->first() ?: false;
}
/**
* {@inheritDoc}
*/
public function complete(UserInterface $user, $code, $password)
{
$expires = $this->expires();
$reminder = $this
->createModel()
->newQuery()
->where('user_id', $user->getUserId())
->where('code', $code)
->where('completed', false)
->where('created_at', '>', $expires)
->first();
if ($reminder === null) {
return false;
}
$credentials = compact('password');
$valid = $this->users->validForUpdate($user, $credentials);
if ($valid === false) {
return false;
}
$this->users->update($user, $credentials);
$reminder->fill([
'completed' => true,
'completed_at' => Carbon::now(),
]);
$reminder->save();
return true;
}
/**
* {@inheritDoc}
*/
public function removeExpired()
{
$expires = $this->expires();
return $this
->createModel()
->newQuery()
->where('completed', false)
->where('created_at', '<', $expires)
->delete();
}
/**
* Returns the expiration date.
*
* @return \Carbon\Carbon
*/
protected function expires()
{
return Carbon::now()->subSeconds($this->expires);
}
/**
* Returns a random string for a reminder code.
*
* @return string
*/
protected function generateReminderCode()
{
return str_random(32);
}
}