first(); else $usuario = Usuario::where('id', $id)->first(); if(!$usuario) throw new ModelNotFoundException("usuario", $id); return $usuario; } public function isGlobalAdmin() { return $this->hasRole('global_admin'); } public function isAdmin() { return $this->hasRole('admin'); } public function hasRole($role) { return in_array($role, $this->roles); } public function isOnRestaurante($restaurante) { return $this->restaurantes()->where('id', $restaurante->id)->count() > 0; } public function restaurantes() { return $this->belongsToMany(Restaurante::class, 'usuarios_restaurantes', 'usuario_id', 'restaurante_id'); } public function administrador() { return $this->hasOne(Administrador::class); } public function recaudador() { return $this->hasOne(Recaudador::class); } public function mesero() { return $this->hasOne(Mesero::class); } public function productor() { return $this->hasOne(Productor::class); } public function getRolesAttribute() { $auth0Service = app(Auth0Service::class); $auth0User = $auth0Service->getUser($this->auth0_id); return $this->attributes['roles'] = array_key_exists('app_metadata', $auth0User) ? $auth0User['app_metadata']['roles'] : []; } }