Вход Регистрация
Файл: gapps/vendor/cartalyst/sentinel/src/Roles/EloquentRole.php
Строк: 129
<?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 CartalystSentinelRoles;

use 
CartalystSentinelPermissionsPermissibleInterface;
use 
CartalystSentinelPermissionsPermissibleTrait;
use 
IlluminateDatabaseEloquentModel;

class 
EloquentRole extends Model implements RoleInterfacePermissibleInterface
{
    use 
PermissibleTrait;

    
/**
     * {@inheritDoc}
     */
    
protected $table 'roles';

    
/**
     * {@inheritDoc}
     */
    
protected $fillable = [
        
'name',
        
'slug',
        
'permissions',
    ];

    
/**
     * The Eloquent users model name.
     *
     * @var string
     */
    
protected static $usersModel 'CartalystSentinelUsersEloquentUser';

    
/**
     * {@inheritDoc}
     */
    
public function delete()
    {
        
$isSoftDeleted array_key_exists('IlluminateDatabaseEloquentSoftDeletes'class_uses($this));

        if (
$this->exists && ! $isSoftDeleted) {
            
$this->users()->detach();
        }

        return 
parent::delete();
    }

    
/**
     * The Users relationship.
     *
     * @return IlluminateDatabaseEloquentRelationsBelongsToMany
     */
    
public function users()
    {
        return 
$this->belongsToMany(static::$usersModel'role_users''role_id''user_id')->withTimestamps();
    }

    
/**
     * Get mutator for the "permissions" attribute.
     *
     * @param  mixed  $permissions
     * @return array
     */
    
public function getPermissionsAttribute($permissions)
    {
        return 
$permissions json_decode($permissionstrue) : [];
    }

    
/**
     * Set mutator for the "permissions" attribute.
     *
     * @param  mixed  $permissions
     * @return void
     */
    
public function setPermissionsAttribute(array $permissions)
    {
        
$this->attributes['permissions'] = $permissions json_encode($permissions) : '';
    }

    
/**
     * {@inheritDoc}
     */
    
public function getRoleId()
    {
        return 
$this->getKey();
    }

    
/**
     * {@inheritDoc}
     */
    
public function getRoleSlug()
    {
        return 
$this->slug;
    }

    
/**
     * {@inheritDoc}
     */
    
public function getUsers()
    {
        return 
$this->users;
    }

    
/**
     * {@inheritDoc}
     */
    
public static function getUsersModel()
    {
        return static::
$usersModel;
    }

    
/**
     * {@inheritDoc}
     */
    
public static function setUsersModel($usersModel)
    {
        static::
$usersModel $usersModel;
    }

    
/**
     * Dynamically pass missing methods to the permissions.
     *
     * @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);
    }

    
/**
     * {@inheritDoc}
     */
    
protected function createPermissions()
    {
        return new static::
$permissionsClass($this->permissions);
    }
}
Онлайн: 0
Реклама