Code Duplication    Length = 35-38 lines in 2 locations

src/Traits/HasRoles.php 1 location

@@ 95-132 (lines=38) @@
92
     *
93
     * @return $this
94
     */
95
    public function assignRole(...$roles)
96
    {
97
        $roles = collect($roles)
98
            ->flatten()
99
            ->map(function ($role) {
100
                if (empty($role)) {
101
                    return false;
102
                }
103
104
                return $this->getStoredRole($role);
105
            })
106
            ->filter(function ($role) {
107
                return $role instanceof Role;
108
            })
109
            ->each(function ($role) {
110
                $this->ensureModelSharesGuard($role);
111
            })
112
            ->map->id
113
            ->all();
114
115
        $model = $this->getModel();
116
117
        if ($model->exists) {
118
            $this->roles()->sync($roles, false);
119
            $model->load('roles');
120
        } else {
121
            $class = \get_class($model);
122
123
            $class::saved(
124
                function ($model) use ($roles) {
125
                    $model->roles()->sync($roles, false);
126
                });
127
        }
128
129
        $this->forgetCachedPermissions();
130
131
        return $this;
132
    }
133
134
    /**
135
     * Revoke the given role from the model.

src/Traits/HasPermissions.php 1 location

@@ 398-432 (lines=35) @@
395
     *
396
     * @return $this
397
     */
398
    public function givePermissionTo(...$permissions)
399
    {
400
        $permissions = collect($permissions)
401
            ->flatten()
402
            ->map(function ($permission) {
403
                return $this->getStoredPermission($permission);
404
            })
405
            ->filter(function ($permission) {
406
                return $permission instanceof Permission;
407
            })
408
            ->each(function ($permission) {
409
                $this->ensureModelSharesGuard($permission);
410
            })
411
            ->map->id
412
            ->all();
413
414
        $model = $this->getModel();
415
416
        if ($model->exists) {
417
            $this->permissions()->sync($permissions, false);
418
            $model->load('permissions');
419
        } else {
420
            $class = \get_class($model);
421
422
            $class::saved(
423
                function ($model) use ($permissions) {
424
                    $model->permissions()->sync($permissions, false);
425
                    $model->load('permissions');
426
                });
427
        }
428
429
        $this->forgetCachedPermissions();
430
431
        return $this;
432
    }
433
434
    /**
435
     * Remove all current permissions and set the given ones.