| Path : /var/www/html/thb_loan_system/vendor/cartalyst/sentinel/src/Users/ |
|
B-Con CMD Config cPanel C-Rdp D-Log Info Jump Mass Ransom Symlink vHost Zone-H |
| Current File : //var/www/html/thb_loan_system/vendor/cartalyst/sentinel/src/Users/EloquentUser.php |
<?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 6.0.0
* @author Cartalyst LLC
* @license BSD License (3-clause)
* @copyright (c) 2011-2022, Cartalyst LLC
* @link https://cartalyst.com
*/
namespace Cartalyst\Sentinel\Users;
use IteratorAggregate;
use Illuminate\Support\Str;
use Illuminate\Database\Eloquent\Model;
use Cartalyst\Sentinel\Roles\EloquentRole;
use Cartalyst\Sentinel\Roles\RoleInterface;
use Cartalyst\Sentinel\Roles\RoleableInterface;
use Cartalyst\Sentinel\Reminders\EloquentReminder;
use Cartalyst\Sentinel\Throttling\EloquentThrottle;
use Illuminate\Database\Eloquent\Relations\HasMany;
use Cartalyst\Sentinel\Permissions\PermissibleTrait;
use Cartalyst\Sentinel\Activations\EloquentActivation;
use Cartalyst\Sentinel\Permissions\PermissibleInterface;
use Cartalyst\Sentinel\Permissions\PermissionsInterface;
use Cartalyst\Sentinel\Persistences\EloquentPersistence;
use Cartalyst\Sentinel\Persistences\PersistableInterface;
use Illuminate\Database\Eloquent\Relations\BelongsToMany;
class EloquentUser extends Model implements PermissibleInterface, PersistableInterface, RoleableInterface, UserInterface
{
use PermissibleTrait;
/**
* The table associated with the model.
*
* @var string
*/
protected $table = 'users';
/**
* The attributes that are mass assignable.
*
* @var array
*/
protected $fillable = [
'email',
'password',
'last_name',
'first_name',
'permissions',
'address',
'notes',
'phone',
'gender',
'max_approval'
];
/**
* The attributes that should be cast to native types.
*
* @var array
*/
protected $casts = [
'permissions' => 'json',
];
/**
* {@inheritdoc}
*/
protected $hidden = [
'password',
];
/**
* {@inheritdoc}
*/
protected $persistableKey = 'user_id';
/**
* {@inheritdoc}
*/
protected $persistableRelationship = 'persistences';
/**
* Array of login column names.
*
* @var array
*/
protected $loginNames = ['email'];
/**
* The Roles model FQCN.
*
* @var string
*/
protected static $rolesModel = EloquentRole::class;
/**
* The Persistences model FQCN.
*
* @var string
*/
protected static $persistencesModel = EloquentPersistence::class;
/**
* The Activations model FQCN.
*
* @var string
*/
protected static $activationsModel = EloquentActivation::class;
/**
* The Reminders model FQCN.
*
* @var string
*/
protected static $remindersModel = EloquentReminder::class;
/**
* The Throttling model FQCN.
*
* @var string
*/
protected static $throttlingModel = EloquentThrottle::class;
/**
* Returns the activations relationship.
*
* @return \Illuminate\Database\Eloquent\Relations\HasMany
*/
public function activations(): HasMany
{
return $this->hasMany(static::$activationsModel, 'user_id');
}
/**
* Returns the persistences relationship.
*
* @return \Illuminate\Database\Eloquent\Relations\HasMany
*/
public function persistences(): HasMany
{
return $this->hasMany(static::$persistencesModel, 'user_id');
}
/**
* Returns the reminders relationship.
*
* @return \Illuminate\Database\Eloquent\Relations\HasMany
*/
public function reminders(): HasMany
{
return $this->hasMany(static::$remindersModel, 'user_id');
}
/**
* Returns the roles relationship.
*
* @return \Illuminate\Database\Eloquent\Relations\BelongsToMany
*/
public function roles(): BelongsToMany
{
return $this->belongsToMany(static::$rolesModel, 'role_users', 'user_id', 'role_id')->withTimestamps();
}
/**
* Returns the throttle relationship.
*
* @return \Illuminate\Database\Eloquent\Relations\HasMany
*/
public function throttle(): HasMany
{
return $this->hasMany(static::$throttlingModel, 'user_id');
}
/**
* Returns an array of login column names.
*
* @return array
*/
public function getLoginNames(): array
{
return $this->loginNames;
}
/**
* {@inheritdoc}
*/
public function getRoles(): IteratorAggregate
{
return $this->roles;
}
/**
* {@inheritdoc}
*/
public function inRole($role): bool
{
if ($role instanceof RoleInterface) {
$roleId = $role->getRoleId();
}
foreach ($this->roles as $instance) {
if ($role instanceof RoleInterface) {
if ($instance->getRoleId() === $roleId) {
return true;
}
} else {
if ($instance->getRoleId() == $role || $instance->getRoleSlug() == $role) {
return true;
}
}
}
return false;
}
/**
* {@inheritdoc}
*/
public function inAnyRole(array $roles): bool
{
foreach ($roles as $role) {
if ($this->inRole($role)) {
return true;
}
}
return false;
}
/**
* {@inheritdoc}
*/
public function generatePersistenceCode(): string
{
return Str::random(32);
}
/**
* {@inheritdoc}
*/
public function getUserId(): int
{
return $this->getKey();
}
/**
* {@inheritdoc}
*/
public function getPersistableId(): string
{
return $this->getKey();
}
/**
* {@inheritdoc}
*/
public function getPersistableKey(): string
{
return $this->persistableKey;
}
/**
* {@inheritdoc}
*/
public function setPersistableKey(string $key): void
{
$this->persistableKey = $key;
}
/**
* {@inheritdoc}
*/
public function getPersistableRelationship(): string
{
return $this->persistableRelationship;
}
/**
* {@inheritdoc}
*/
public function setPersistableRelationship(string $persistableRelationship): void
{
$this->persistableRelationship = $persistableRelationship;
}
/**
* {@inheritdoc}
*/
public function getUserLogin(): string
{
return $this->getAttribute($this->getUserLoginName());
}
/**
* {@inheritdoc}
*/
public function getUserLoginName(): string
{
return reset($this->loginNames);
}
/**
* {@inheritdoc}
*/
public function getUserPassword(): string
{
return $this->password;
}
/**
* Returns the roles model.
*
* @return string
*/
public static function getRolesModel(): string
{
return static::$rolesModel;
}
/**
* Sets the roles model.
*
* @param string $rolesModel
*
* @return void
*/
public static function setRolesModel(string $rolesModel): void
{
static::$rolesModel = $rolesModel;
}
/**
* Returns the persistences model.
*
* @return string
*/
public static function getPersistencesModel()
{
return static::$persistencesModel;
}
/**
* Sets the persistences model.
*
* @param string $persistencesModel
*
* @return void
*/
public static function setPersistencesModel(string $persistencesModel): void
{
static::$persistencesModel = $persistencesModel;
}
/**
* Returns the activations model.
*
* @return string
*/
public static function getActivationsModel(): string
{
return static::$activationsModel;
}
/**
* Sets the activations model.
*
* @param string $activationsModel
*
* @return void
*/
public static function setActivationsModel(string $activationsModel): void
{
static::$activationsModel = $activationsModel;
}
/**
* Returns the reminders model.
*
* @return string
*/
public static function getRemindersModel(): string
{
return static::$remindersModel;
}
/**
* Sets the reminders model.
*
* @param string $remindersModel
*
* @return void
*/
public static function setRemindersModel(string $remindersModel): void
{
static::$remindersModel = $remindersModel;
}
/**
* Returns the throttling model.
*
* @return string
*/
public static function getThrottlingModel(): string
{
return static::$throttlingModel;
}
/**
* Sets the throttling model.
*
* @param string $throttlingModel
*
* @return void
*/
public static function setThrottlingModel(string $throttlingModel): void
{
static::$throttlingModel = $throttlingModel;
}
/**
* {@inheritdoc}
*/
public function delete()
{
$isSoftDeletable = property_exists($this, 'forceDeleting');
$isSoftDeleted = $isSoftDeletable && ! $this->forceDeleting;
if ($this->exists && ! $isSoftDeleted) {
$this->activations()->delete();
$this->persistences()->delete();
$this->reminders()->delete();
$this->roles()->detach();
$this->throttle()->delete();
}
return parent::delete();
}
/**
* Dynamically pass missing methods to the user.
*
* @param string $method
* @param array $parameters
*
* @return mixed
*/
public function __call($method, $parameters)
{
$methods = ['hasAccess', 'hasAnyAccess'];
if (in_array($method, $methods)) {
$permissions = $this->getPermissionsInstance();
return call_user_func_array([$permissions, $method], $parameters);
}
return parent::__call($method, $parameters);
}
/**
* Creates a permissions object.
*
* @return \Cartalyst\Sentinel\Permissions\PermissionsInterface
*/
protected function createPermissions(): PermissionsInterface
{
$userPermissions = $this->getPermissions();
$rolePermissions = [];
foreach ($this->roles as $role) {
$rolePermissions[] = $role->getPermissions();
}
return new static::$permissionsClass($userPermissions, $rolePermissions);
}
}