protected function saveOnePermission($permission)
 {
     $msg = sprintf('process %s(%s)', $unique = $permission['unique_tag'], $uri_tag = $permission['uri_tag']);
     if ($permission['ignore']) {
         Log::debug($msg . " ignore");
         return;
     }
     $p = AclPermission::whereUniqueTag($unique)->first();
     $force = $this->option('force');
     // 存在, 并且不强制更新, 跳过
     if ($p && !$force) {
         Log::info($msg . " skip(exists)");
         return;
     }
     $model = $p && $force ? $p : new AclPermission();
     $model->title = $permission['title'];
     $model->comment = $permission['comment'];
     $model->permission = $permission['permission'];
     $model->route_name = $permission['route_name'];
     $model->method = $permission['method'];
     $model->uri_pattern = $permission['uri_pattern'];
     $model->unique_tag = $permission['unique_tag'];
     $model->save();
     $this->info(sprintf("%s\tdone(%s)", $msg, $p ? 'update' : 'new'));
 }
 /**
  * Execute the console command.
  *
  * @return mixed
  */
 public function handle()
 {
     $role = $this->argument('role');
     $roleModel = AclRole::whereName($role)->first();
     if (!$roleModel) {
         $this->error($msg = "the role {$role} does not exists");
         throw new \InvalidArgumentException($msg);
     }
     $permission_args = $this->argument('permission');
     $permModes = AclPermission::whereIn($this->option('unique-tag') ? 'unique_tag' : 'id', $permission_args)->get();
     foreach ($permModes as $pm) {
         $rel = new AclRolePermission();
         $rel->role_id = $roleModel->id;
         $rel->permission_id = $pm->id;
         $rel->save();
         $this->info(sprintf('role: %d, perm: %d, rel: %d', $roleModel->id, $pm->id, $rel->id));
     }
 }
Example #3
0
 private function getPermissions()
 {
     if (!$this->rolePermissions) {
         $this->rolePermissions = AclPermission::whereIn('id', function ($query) {
             /** @var $query \Illuminate\Database\Query\Builder */
             $query->from(AclRolePermission::tableName())->select('permission_id')->whereIn('role_id', $this->getRoles()->lists('id'));
         })->get();
     }
     return $this->rolePermissions;
 }