posts/plugins/login/classes/Invitations/Invitation.php

60 lines
1.6 KiB
PHP

<?php
/**
* @package Grav\Plugin\Login
*
* @copyright Copyright (C) 2014 - 2021 RocketTheme, LLC. All rights reserved.
* @license MIT License; see LICENSE file for details.
*/
namespace Grav\Plugin\Login\Invitations;
/**
* Invite users to the site.
*
* Tools to send emails for invites and handle invite registrations.
*/
class Invitation
{
/** @var string */
public $token;
/** @var string */
public $email;
/** @var string */
public $created_by;
/** @var int */
public $created_timestamp = 0;
/** @var int */
public $expiration_timestamp = 0;
/** @var array */
public $account = ['access' => ['site' => ['login' => true]]];
public function __construct(string $token, array $data)
{
$this->token = $token;
$this->email = $data['email'];
$this->created_by = $data['created_by'];
$this->created_timestamp = $data['created_timestamp'] ?? time();
$this->expiration_timestamp = $data['expiration_timestamp'] ?? time() + 86400; // 1 day
if (isset($data['account'])) {
$this->account = $data['account'];
}
}
public function isExpired(): bool
{
return ($this->expiration_timestamp ?? 0) < time();
}
public function toArray(): array
{
return [
'email' => $this->email,
'created_by' => $this->created_by,
'created_timestamp' => $this->created_timestamp,
'expiration_timestamp' => $this->expiration_timestamp,
'account' => $this->account,
];
}
}