88 lines
1.9 KiB
PHP
88 lines
1.9 KiB
PHP
<?php
|
|
|
|
namespace App;
|
|
use Illuminate\Support\Facades\Auth;
|
|
use Illuminate\Support\Facades\Log;
|
|
use Illuminate\Database\Eloquent\ModelNotFoundException;
|
|
use App\Exceptions\PermissionException;
|
|
use Illuminate\Database\Eloquent\Model;
|
|
|
|
class Domain extends Model
|
|
{
|
|
//
|
|
protected $fillable = ['domain'];
|
|
|
|
|
|
public function users()
|
|
{
|
|
return $this->belongsToMany('App\User')->withTimestamps()->using('App\DomainUser')->withPivot(['role']);
|
|
}
|
|
|
|
public function accounts()
|
|
{
|
|
//return $this->hasMany('App\Comment', 'foreign_key', 'local_key');
|
|
return $this->hasMany('App\Account','domain','domain');
|
|
}
|
|
|
|
public function aliases()
|
|
{
|
|
//return $this->hasMany('App\Comment', 'foreign_key', 'local_key');
|
|
return $this->hasMany('App\Alias','source_domain','domain');
|
|
}
|
|
|
|
public function getRole($rquser=null)
|
|
{
|
|
if(is_numeric($rquser))
|
|
{
|
|
$rqid = $rquser;
|
|
}
|
|
else if(is_object($rquser) && $rquser instanceof \App\User)
|
|
{
|
|
$rqid = $rquser->id;
|
|
}
|
|
else
|
|
{
|
|
$rqid=Auth::User()->id;
|
|
}
|
|
|
|
foreach($this->users as $user)
|
|
{
|
|
if($user->id == $rqid)
|
|
{
|
|
return $user->pivot->role;
|
|
}
|
|
}
|
|
return null;
|
|
}
|
|
|
|
public function hasRole($rqrole,$rquser=null)
|
|
{
|
|
$role = $this->getRole($rquser);
|
|
|
|
if($rqrole == 'own')
|
|
{
|
|
$validroles = ['own'];
|
|
}
|
|
else if($rqrole == 'edit')
|
|
{
|
|
$validroles = ['own','edit'];
|
|
}
|
|
else if($rqrole == 'view')
|
|
{
|
|
$validroles = ['own','edit','view'];
|
|
}
|
|
|
|
return in_array($role,$validroles);
|
|
}
|
|
|
|
public function needRole($rqrole,$rquser=null)
|
|
{
|
|
if(!($this->hasRole($rqrole,$rquser)))
|
|
{
|
|
throw new PermissionException($rqrole);
|
|
}
|
|
}
|
|
|
|
|
|
}
|