/**
  * Execute the console command.
  *
  * @return bool
  */
 public function handle()
 {
     if (empty($this->option('role')) || empty($this->option('permission'))) {
         $this->error('Missing options for role and/or permission to select, try --help');
         return false;
     }
     /*
      * Detect the role->id and lookup the user if its thru a user assignment.
      */
     $role = false;
     if (!is_object($role)) {
         $role = Role::where('name', $this->option('role'))->first();
     }
     if (!is_object($role)) {
         $role = Role::find($this->option('role'));
     }
     if (!is_object($role)) {
         $this->error('Unable to find role with this criteria');
         return false;
     }
     /*
      * Detect the permission->id and lookup the name if needed
      */
     $permission = false;
     if (!is_object($permission)) {
         $permission = Permission::where('name', $this->option('permission'))->first();
     }
     if (!is_object($permission)) {
         $permission = Permission::find($this->option('permission'));
     }
     if (!is_object($permission)) {
         $this->error('Unable to find permission with this criteria');
         return false;
     }
     $permissionRole = new PermissionRole();
     $permissionRole->permission_id = $permission->id;
     $permissionRole->role_id = $role->id;
     $validation = Validator::make($permissionRole->toArray(), PermissionRole::createRules($permissionRole));
     if ($validation->fails()) {
         $this->warn('The role has already been granted this permission');
         $this->error('Failed to create the permission due to validation warnings');
         return false;
     }
     if (!$permissionRole->save()) {
         $this->error('Failed to save the permission into the database');
         return false;
     }
     $this->info("The permission {$permission->name} has been granted to role {$role->name}");
     return true;
 }
 /**
  * Execute the console command.
  *
  * @return bool
  */
 public function handle()
 {
     if (empty($this->option('role')) || empty($this->option('permission'))) {
         $this->error('Missing options for role and/or permission to select, try --help');
         return false;
     }
     /*
      * Detect the role->id and lookup the user if its thru a user assignment.
      */
     $role = false;
     if (!empty($this->option('role'))) {
         if (!is_object($role)) {
             $role = Role::where('name', $this->option('role'))->first();
         }
         if (!is_object($role)) {
             $role = Role::find($this->option('role'));
         }
     }
     if (!empty($this->option('user'))) {
         if (!is_object($role)) {
             $user = User::where('email', $this->option('user'))->first();
             if (is_object($user)) {
                 $role = $user->roles->first();
             }
         }
         if (!is_object($role)) {
             $user = Role::find($this->option('user'));
             if (is_object($user)) {
                 $role = $user->roles->first();
             }
         }
     }
     if (!is_object($role)) {
         $this->error('Unable to find role with this criteria');
         return false;
     }
     /*
      * Detect the permission->id and lookup the name if needed
      */
     $permission = false;
     if (!is_object($permission)) {
         $permission = Permission::where('name', $this->option('permission'))->first();
     }
     if (!is_object($permission)) {
         $permission = Permission::find($this->option('permission'));
     }
     if (!is_object($permission)) {
         $this->error('Unable to find permission with this criteria');
         return false;
     }
     $permissionRole = PermissionRole::all()->where('role_id', $role->id)->where('permission_id', $permission->id)->first();
     if (!is_object($permissionRole)) {
         $this->error('Nothing to delete, this {$permission->name} permission is not linked to the role {$role->name}');
         return false;
     }
     if (!$permissionRole->delete()) {
         $this->error('Failed to remove the permission into the database');
         return false;
     }
     $this->info("The permission {$permission->name} has been revoked from role {$role->name}");
     return true;
 }