/** * 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)); } }
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; }