A more files & structure
This commit is contained in:
parent
e4a6824dcb
commit
7cfc7749cc
|
|
@ -6,7 +6,11 @@
|
|||
"roles",
|
||||
"permission",
|
||||
"laravel",
|
||||
"blax"
|
||||
"blax",
|
||||
"authorization",
|
||||
"user management",
|
||||
"access control",
|
||||
"authentication"
|
||||
],
|
||||
"homepage": "http://www.blax.at",
|
||||
"license": "MIT",
|
||||
|
|
@ -14,6 +18,7 @@
|
|||
{
|
||||
"name": "Fabian Wagner",
|
||||
"email": "fabian@blax.at",
|
||||
"homepage": "https://www.blax.at",
|
||||
"role": "Developer"
|
||||
}
|
||||
],
|
||||
|
|
@ -23,8 +28,12 @@
|
|||
}
|
||||
},
|
||||
"require": {
|
||||
"php": ">=8.2"
|
||||
},
|
||||
"require-dev": {
|
||||
"php": "^8.0",
|
||||
"illuminate/auth": "^8.12|^9.0|^10.0|^11.0|^12.0",
|
||||
"illuminate/container": "^8.12|^9.0|^10.0|^11.0|^12.0",
|
||||
"illuminate/contracts": "^8.12|^9.0|^10.0|^11.0|^12.0",
|
||||
"illuminate/database": "^8.12|^9.0|^10.0|^11.0|^12.0",
|
||||
"illuminate/support": "^8.12|^9.0|^10.0|^11.0|^12.0",
|
||||
"laravel/pint": "^1.22"
|
||||
}
|
||||
}
|
||||
|
|
@ -1,10 +1,12 @@
|
|||
<?php
|
||||
|
||||
return [
|
||||
|
||||
'models' => [
|
||||
'role' => YourVendor\Permissions\Models\Role::class,
|
||||
'permission' => YourVendor\Permissions\Models\Permission::class,
|
||||
'role' => \Blax\Roles\Models\Role::class,
|
||||
'permission' => \Blax\Roles\Models\Permission::class,
|
||||
],
|
||||
|
||||
'table_names' => [
|
||||
'roles' => 'roles',
|
||||
'permissions' => 'permissions',
|
||||
|
|
@ -12,4 +14,5 @@ return [
|
|||
'model_has_permissions' => 'model_has_permissions',
|
||||
'role_has_permissions' => 'role_has_permissions',
|
||||
],
|
||||
|
||||
];
|
||||
|
|
|
|||
|
|
@ -0,0 +1,47 @@
|
|||
<?php
|
||||
|
||||
namespace Blax\Roles\Migrations;
|
||||
|
||||
use Illuminate\Database\Migrations\Migration;
|
||||
use Illuminate\Database\Schema\Blueprint;
|
||||
use Illuminate\Support\Facades\Schema;
|
||||
|
||||
return new class extends Migration
|
||||
{
|
||||
/**
|
||||
* Run the migrations.
|
||||
*/
|
||||
public function up(): void
|
||||
{
|
||||
// TODO finish the migration
|
||||
|
||||
Schema::create('roles', function (Blueprint $table) {
|
||||
$table->id();
|
||||
$table->string('name')->unique();
|
||||
$table->string('description')->nullable();
|
||||
$table->timestamps();
|
||||
});
|
||||
|
||||
Schema::create('permissions', function (Blueprint $table) {
|
||||
$table->id();
|
||||
$table->string('name')->unique();
|
||||
$table->string('description')->nullable();
|
||||
$table->timestamps();
|
||||
});
|
||||
|
||||
Schema::create('assignments', function (Blueprint $table) {
|
||||
$table->morphs('affected');
|
||||
$table->morphs('assignment');
|
||||
$table->timestamp('expires_at')->nullable();
|
||||
$table->timestamps();
|
||||
});
|
||||
}
|
||||
|
||||
/**
|
||||
* Reverse the migrations.
|
||||
*/
|
||||
public function down(): void
|
||||
{
|
||||
//
|
||||
}
|
||||
};
|
||||
|
|
@ -0,0 +1,7 @@
|
|||
<?php
|
||||
|
||||
namespace Blax\Roles\Models;
|
||||
|
||||
use Illuminate\Database\Eloquent\Model;
|
||||
|
||||
class Assignment extends Model {}
|
||||
|
|
@ -0,0 +1,7 @@
|
|||
<?php
|
||||
|
||||
namespace Blax\Roles\Models;
|
||||
|
||||
use Illuminate\Database\Eloquent\Model;
|
||||
|
||||
class Permission extends Model {}
|
||||
|
|
@ -4,6 +4,4 @@ namespace Blax\Roles\Models;
|
|||
|
||||
use Illuminate\Database\Eloquent\Model;
|
||||
|
||||
class Role extends Model {
|
||||
|
||||
}
|
||||
class Role extends Model {}
|
||||
|
|
|
|||
|
|
@ -1,2 +1,52 @@
|
|||
<?php
|
||||
|
||||
namespace Blax\Roles;
|
||||
|
||||
class PermissionsServiceProvider extends \Illuminate\Support\ServiceProvider
|
||||
{
|
||||
/**
|
||||
* Register the service provider.
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
public function register()
|
||||
{
|
||||
$this->offerPublishing();
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
* Bootstrap the application events.
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
public function boot()
|
||||
{
|
||||
// Load routes, migrations, etc. if needed
|
||||
}
|
||||
|
||||
/**
|
||||
* Set up the publishing of configuration files.
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
protected function offerPublishing()
|
||||
{
|
||||
if (! $this->app->runningInConsole()) {
|
||||
return;
|
||||
}
|
||||
|
||||
if (! function_exists('config_path')) {
|
||||
// function not available and 'publish' not relevant in Lumen
|
||||
return;
|
||||
}
|
||||
|
||||
$this->publishes([
|
||||
__DIR__.'/../config/permission.php' => config_path('permission.php'),
|
||||
], 'permission-config');
|
||||
|
||||
$this->publishes([
|
||||
__DIR__.'/../database/migrations/create_permission_tables.php.stub' => $this->getMigrationFileName('create_permission_tables.php'),
|
||||
], 'permission-migrations');
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -0,0 +1,32 @@
|
|||
<?php
|
||||
|
||||
namespace Blax\Roles;
|
||||
|
||||
trait HasRoles
|
||||
{
|
||||
/**
|
||||
* The roles that belong to the model.
|
||||
*
|
||||
* @return \Illuminate\Database\Eloquent\Relations\BelongsToMany
|
||||
*/
|
||||
public function roles()
|
||||
{
|
||||
return $this->belongsToMany(
|
||||
config('permissions.models.role'),
|
||||
config('permissions.table_names.model_has_roles'),
|
||||
'model_id',
|
||||
'role_id'
|
||||
);
|
||||
}
|
||||
|
||||
/**
|
||||
* Check if the model has a specific role.
|
||||
*
|
||||
* @param string $role
|
||||
* @return bool
|
||||
*/
|
||||
public function hasRole($role)
|
||||
{
|
||||
return $this->roles()->where('name', $role)->exists();
|
||||
}
|
||||
}
|
||||
Loading…
Reference in New Issue