JFIFxxC      C  " }!1AQa"q2#BR$3br %&'()*456789:CDEFGHIJSTUVWXYZcdefghijstuvwxyz w!1AQaq"2B #3Rbr{ gilour

File "SyncsPermissions.php"

Full Path: /home/markqprx/iniasli.pro/Auth/Permissions/Traits/SyncsPermissions.php
File size: 1.1 KB
MIME-type: text/x-php
Charset: utf-8

<?php

namespace Common\Auth\Permissions\Traits;

use Illuminate\Database\Eloquent\Model;
use Illuminate\Support\Arr;
use Illuminate\Support\Collection;

trait SyncsPermissions
{
    public function syncPermissions(
        Model $model,
        array|Collection $permissions
    ): void {
        $permissionIds = collect($permissions)->mapWithKeys(function (
            $permission
        ) {
            $restrictions = Arr::get($permission, 'restrictions', []);
            return [
                $permission['id'] => [
                    'restrictions' => collect($restrictions)
                        ->filter(function ($restriction) {
                            return isset($restriction['value']);
                        })
                        ->map(function ($restriction) {
                            return [
                                'name' => $restriction['name'],
                                'value' => $restriction['value'],
                            ];
                        }),
                ],
            ];
        });
        $model->permissions()->sync($permissionIds);
    }
}