File: /var/www/vhost/disk-apps/sigedo-demo.allup.com.co/app/User.php
<?php
namespace App;
use App\Role;
use Illuminate\Support\Facades\Hash;
use Illuminate\Support\Facades\Auth;
use Illuminate\Notifications\Notifiable;
use Illuminate\Database\Eloquent\Builder;
use Illuminate\Contracts\Auth\MustVerifyEmail;
use Illuminate\Foundation\Auth\User as Authenticatable;
class User extends Authenticatable
{
use Notifiable;
/**
* The attributes that are't mass assignable.
*
* @var array
*/
protected $guarded = ['id','deleted_at','created_at','updated_at'];
public $module = "user";
/**
* The attributes that should be hidden for arrays.
*
* @var array
*/
protected $hidden = [
'password', 'remember_token',
];
public function setPasswordAttribute($value)
{
$this->attributes['password'] = Hash::make($value);
}
public function scopeGates($query,$operation)
{
if(Auth::user()->roles->pluck('name')->contains('root')){
return $query;
}else{
$roles = Role::where('active', 1)->get();
$whereRoles = [];
foreach ($roles as $role){
if(\Gate::check($this->module.'_'.$operation.'Info'.ucfirst($role->name))){
$whereRoles[] = $role->id;
}
}
if(count($whereRoles)){
return $query->whereHas('roles', function (Builder $q) use($whereRoles){
$q->where('user_id', Auth::user()->id);
foreach ($whereRoles as $key => $role) {
$q->orWhere('id',$role);
}
});
}else{
return $query->where('id', Auth::user()->id);
}
}
}
public function roles()
{
return $this->belongsToMany(Role::class, 'user_roles')->withTimestamps();
}
public function gender()
{
return $this->belongsTo(Gender::class);
}
public function userdocuments()
{
return $this->hasMany(Userdocument::class)->with('filetype','filestatus')->orderBy('filestatus_id', 'desc');
}
public function userprograms()
{
return $this->hasMany(Userprogram::class)->with('covenantprogram','service','program','rotation','covenant','institution');
}
}