FEATURE #2048: prepare routes for ACL, add some more permissions

This commit is contained in:
Michal Kváček
2017-08-11 02:07:31 +02:00
parent cccdbda543
commit 335ec4a167
41 changed files with 836 additions and 489 deletions
@@ -6,6 +6,7 @@ use App\Events\UploadFile;
use App\Models\FileManager\File as FileModel;
use Illuminate\Support\Facades\Auth;
use Illuminate\Support\Facades\Event;
use Illuminate\Support\Facades\Gate;
use Symfony\Component\HttpFoundation\File\File as SymphonyFile;
use Symfony\Component\HttpFoundation\File\UploadedFile;
@@ -36,6 +37,8 @@ trait File
*/
public function upload(UploadedFile $file, $data = [])
{
abort_unless(Auth::user()->can('upload', FileModel::class), 403);
$data = (object)$data;
$destination = config('app.upload_path');
-19
View File
@@ -1,19 +0,0 @@
<?php
namespace App\Models;
use Illuminate\Database\Eloquent\Model;
class Permission extends Model
{
protected $fillable = [
'string_id',
'parent_id',
'group',
'name',
];
public function parent() {
return $this->hasOne(Permission::class, 'parent_id');
}
}
+40
View File
@@ -0,0 +1,40 @@
<?php
namespace App\Models\Permissions;
use Illuminate\Database\Eloquent\Model;
class Permission extends Model
{
public $timestamps = false;
protected $fillable = [
'string_id',
'parent_id',
'group',
'name',
'default'
];
protected $casts = [
'default' => 'boolean'
];
/**
* Assign observer for this model for logging
*/
protected static function boot()
{
parent::boot();
self::observe(PermissionObserver::class);
}
public function parent()
{
return $this->hasOne(Permission::class, 'parent_id');
}
public function subpermissions()
{
return $this->hasMany(Permission::class, 'parent_id');
}
}
@@ -0,0 +1,26 @@
<?php
namespace App\Models\Permissions;
use App\Models\User;
class PermissionObserver
{
/**
* Sets default permissions when creating new
*
* @param Permission $permission
*/
public function created(Permission $permission)
{
if ($permission->default) {
$users = User::where('role', '!=', User::ROLE_VISITOR)
->get();
foreach ($users as $user) {
$user->permissions()
->attach($permission->id);
}
}
}
}
+1
View File
@@ -2,6 +2,7 @@
namespace App\Models;
use App\Models\Permissions\Permission;
use App\Notifications\ResetPasswordNotification;
use Illuminate\Auth\Authenticatable;
use Illuminate\Contracts\Auth\Authenticatable as AuthenticableInterface;