Entities/Sentinel/User.php
<?php namespace Modules\User\Entities\Sentinel;
use Cartalyst\Sentinel\Laravel\Facades\Activation;
use Cartalyst\Sentinel\Users\EloquentUser;
use Illuminate\Support\Facades\Config;
use Laracasts\Presenter\PresentableTrait;
use Modules\User\Entities\UserInterface;
class User extends EloquentUser implements UserInterface
{
use PresentableTrait;
protected $fillable = [
'email',
'password',
'permissions',
'first_name',
'last_name',
];
/**
* {@inheritDoc}
*/
protected $loginNames = ['email'];
protected $presenter = 'Modules\User\Presenters\UserPresenter';
public function __construct(array $attributes = [])
{
$this->loginNames = config('asgard.user.users.login-columns');
$this->fillable = config('asgard.user.users.fillable');
parent::__construct($attributes);
}
/**
* Checks if a user belongs to the given Role ID
* @param int $roleId
* @return bool
*/
public function hasRoleId($roleId)
{
return $this->roles()->whereId($roleId)->count() >= 1;
}
/**
* Checks if a user belongs to the given Role Name
* @param string $name
* @return bool
*/
public function hasRoleName($name)
{
return $this->roles()->whereName($name)->count() >= 1;
}
/**
* Check if the current user is activated
* @return bool
*/
public function isActivated()
{
if (Activation::completed($this)) {
return true;
}
return false;
}
public function __call($method, $parameters)
{
$class_name = class_basename($this);
#i: Convert array to dot notation
$config = implode('.', ['relations', $class_name, $method]);
#i: Relation method resolver
if (Config::has($config)) {
$function = Config::get($config);
return $function($this);
}
#i: No relation found, return the call to parent (Eloquent) to handle it.
return parent::__call($method, $parameters);
}
}