Skip to content

Commit

Permalink
Merge branch 'release/0.1.4'
Browse files Browse the repository at this point in the history
  • Loading branch information
MichaelAndish committed Jun 19, 2019
2 parents 387bcd7 + e90a7eb commit 06d5220
Show file tree
Hide file tree
Showing 15 changed files with 255 additions and 180 deletions.
1 change: 0 additions & 1 deletion README.md
Original file line number Diff line number Diff line change
Expand Up @@ -28,7 +28,6 @@ composer create-project mekaeil/laravel-user-management
```
'providers' => [
// ...
Spatie\Permission\PermissionServiceProvider::class,
\Mekaeil\LaravelUserManagement\LaravelUserManagementProvider::class,
];
```
Expand Down
72 changes: 54 additions & 18 deletions src/Database/Seeders/Permission/MasterPermissionTableSeeder.php
Original file line number Diff line number Diff line change
Expand Up @@ -4,11 +4,24 @@

use Illuminate\Database\Seeder;
use Illuminate\Database\Eloquent\Model;
use Mekaeil\LaravelUserManagement\Repository\Contracts\PermissionRepositoryInterface;
use Mekaeil\LaravelUserManagement\Repository\Contracts\RoleRepositoryInterface;

class MasterPermissionTableSeeder extends Seeder
{
protected $permissions = [];
protected $guardName = "web";
protected $permissionRepository;
protected $roleRepository;

public function __construct(
PermissionRepositoryInterface $repository,
RoleRepositoryInterface $role
)
{
$this->permissionRepository = $repository;
$this->roleRepository = $role;
}

protected function getPermissions(){
return $this->permissions;
Expand All @@ -22,9 +35,10 @@ public function run()
{
Model::unguard();

$this->command->info('=============================================================');
$this->command->info('USER MODULE: INSERT PERMISSIONS DATA');
$this->command->info('=============================================================');
$this->command->info('==========================================================================');
$this->command->info('USER MANAGEMENT PACKAGE: INSERT PERMISSIONS DATA');
$this->command->info('YOU CAN ADD NEW PERMISSION IN "database/seeds/PermissionTableSeeder.php"');
$this->command->info('==========================================================================');
$this->command->info("\n");

$rolePermissions = array();
Expand All @@ -41,9 +55,13 @@ public function run()
$rolePermissions = $this->setPermissions($permission,$guard);

$this->command->info(' THIS PERMISSION <<' . array_keys($rolePermissions)[0] . ' >> ASSIGNED TO THESE ROLES <<<< '. implode(' - ', $rolePermissions[array_keys($rolePermissions)[0]]) . ' >>> GUARD NAME = ' . $guard);
$permObject = Permission::where('name', array_keys($rolePermissions)[0] )
->where('guard_name',$guard)
->first();
$permObject = $this->permissionRepository->findBy([
'name' => array_keys($rolePermissions)[0],
'guard_name' => $guard
]);
// $permObject = Permission::where('name', array_keys($rolePermissions)[0] )
// ->where('guard_name',$guard)
// ->first();
$permObject->syncRoles( $this->getRolesID($rolePermissions[array_keys($rolePermissions)[0]],$guard) );
}

Expand All @@ -55,7 +73,7 @@ public function run()

/*
|--------------------------------------------------------------------------
| UPDATE ROLES'S PERMISSIONS
| UPDATE ROLE'S PERMISSIONS
|--------------------------------------------------------------------------
|
*/
Expand All @@ -71,7 +89,8 @@ public function run()
foreach ($rolePermissions as $perm => $roles)
{
$this->command->info(' THIS PERMISSION <<' . $perm . ' >> ASSIGNED TO THESE ROLES <<<< '. implode(' - ', $roles) . ' >>> GUARD NAME = ' . $this->guardName);
$permObject = Permission::where('name',$perm)->first();
$permObject = $this->permissionRepository->findBy(['name' => $perm]);
// $permObject = Permission::where('name',$perm)->first();
$permObject->syncRoles( $this->getRolesID($roles,$this->guardName) );
}

Expand All @@ -85,28 +104,39 @@ public function run()

$this->command->info("\n");
$this->command->info('=============================================================');
$this->command->info('INSERTING PERMISSIONS FINALIZED!');
$this->command->info(' INSERTING PERMISSIONS FINALIZED!');
$this->command->info('=============================================================');
$this->command->info("\n");
}

private function setPermissions(array $permission , $guard = null)
{
$getGuard = $guard ?? $permission['guard_name'];
$getPermission = Permission::where('name',$permission['name'])
->where('guard_name',$getGuard)->first();
$getPermission = $this->permissionRepository->findBy([
'name' => $permission['name'],
'guard_name'=> $getGuard
]);
// $getPermission = Permission::where('name',$permission['name'])
// ->where('guard_name',$getGuard)->first();

if (! is_null($getPermission))
{
$this->command->info('THIS PERMISSION << ' . $permission['name'] . ' >> EXISTED! UPDATING DATA ...');

$getPermission->update([
$this->permissionRepository->update($getPermission->id,[
'name' => $permission['name'],
'guard_name' => $guard ?? $permission['guard_name'],
'display_name' => isset($permission['display_name']) ? $permission['display_name'] : null ,
'title' => isset($permission['title']) ? $permission['title'] : null ,
'module' => isset($permission['module']) ? $permission['module'] : null ,
'description' => isset($permission['description']) ? $permission['description'] : null ,
'description' => isset($permission['description']) ? $permission['description'] : null ,
]);
// $getPermission->update([
// 'name' => $permission['name'],
// 'guard_name' => $guard ?? $permission['guard_name'],
// 'title' => isset($permission['title']) ? $permission['title'] : null ,
// 'module' => isset($permission['module']) ? $permission['module'] : null ,
// 'description' => isset($permission['description']) ? $permission['description'] : null ,
// ]);

$rolePermissions[$permission['name']] = array_values($permission['roles']) ?? null ;

Expand All @@ -115,14 +145,21 @@ private function setPermissions(array $permission , $guard = null)

$this->command->info('CREATING THIS PERMISSION <<' . $permission['name'] . ' >> ...');

Permission::create([
$this->permissionRepository->store([
'name' => $permission['name'],
'guard_name' => $getGuard,
'display_name' => isset($permission['display_name']) ? $permission['display_name'] : null ,
'title' => isset($permission['title']) ? $permission['title'] : null ,
'module' => isset($permission['module']) ? $permission['module'] : null ,
'description' => isset($permission['description']) ? $permission['description'] : null ,
'description' => isset($permission['description']) ? $permission['description'] : null ,
]);

// Permission::create([
// 'name' => $permission['name'],
// 'guard_name' => $getGuard,
// 'title' => isset($permission['title']) ? $permission['title'] : null ,
// 'module' => isset($permission['module']) ? $permission['module'] : null ,
// 'description' => isset($permission['description']) ? $permission['description'] : null ,
// ]);

$rolePermissions[$permission['name']] = array_values($permission['roles']) ?? null ;

Expand All @@ -133,7 +170,6 @@ private function setPermissions(array $permission , $guard = null)
private function getRolesID(array $roles, $guard)
{
$roleIDs = array();
$roleIDs[] = \Cache::get('roles')[env('OWNER_NAME','owner')];
foreach ($roles as $role)
{
$roleIDs[] = optional(Role::where('name', $role)->where('guard_name', $guard)->first())->id;
Expand Down
5 changes: 3 additions & 2 deletions src/Database/Seeders/Role/MasterRoleTableSeeder.php
Original file line number Diff line number Diff line change
Expand Up @@ -4,15 +4,16 @@

use Illuminate\Database\Seeder;
use Illuminate\Database\Eloquent\Model;
use Mekaeil\LaravelUserManagement\Repository\Contracts\RoleRepositoryInterface;

class MasterRoleTableSeeder extends Seeder
{
protected $roles = [];
protected $roleRepository;

public function __construct()
public function __construct(RoleRepositoryInterface $repository)
{

$this->roleRepository = $repository;
}

protected function getRoles()
Expand Down
82 changes: 82 additions & 0 deletions src/Database/Seeders/User/MasterUserTableSeeder.php
Original file line number Diff line number Diff line change
@@ -0,0 +1,82 @@
<?php

namespace Mekaeil\LaravelUserManagement\seeders\User;

use Illuminate\Database\Seeder;
use Illuminate\Database\Eloquent\Model;

class MasterUserTableSeeder extends Seeder
{
protected $roles = [];
protected $roleRepository;

public function __construct()
{

}

protected function getRoles()
{
return $this->roles;
}

/**
* Run the database seeds.
*
* @return void
*/
public function run()
{
Model::unguard();

$this->command->info('=============================================================');
$this->command->info(' USER MODULE: INSERT ROLES DATA');
$this->command->info('=============================================================');
$this->command->info("\n");

foreach ($this->getRoles() as $role)
{
$findRole = Role::where('name',$role['name'])
->where('guard_name',$role['guard_name'])
->first();

if ($findRole)
{
$this->command->info('THIS ROLE << ' . $role['name'] .'['. $role['guard_name'] . '] >> EXISTED! UPDATING DATA ...');


$findRole->update([
'name' => $role['name'],
'display_name' => $role['display_name'],
'guard_name' => $role['guard_name'],
'description' => isset($role['description']) ? $role['description'] : null,
]);

continue;
}

$this->command->info('CREATING THIS ROLE <<' . $role['name'] .'['. $role['guard_name'] . '] >> ...');

Role::create([
'name' => $role['name'],
'display_name' => $role['display_name'],
'guard_name' => $role['guard_name'],
'description' => isset($role['description']) ? $role['description'] : null,
]);

}

Cache::forget('roles');
Cache::rememberForever('roles', function () {
return \DB::table('roles')->get()->pluck('id', 'name')->toArray();
});

$this->command->info("\n");
$this->command->info('=============================================================');
$this->command->info(' INSERTING ROLES FINALIZED!');
$this->command->info('=============================================================');
$this->command->info("\n");

}

}
17 changes: 17 additions & 0 deletions src/Database/Seeders/User/UserTableSeeder.php
Original file line number Diff line number Diff line change
@@ -0,0 +1,17 @@
<?php

use Illuminate\Database\Seeder;
use Mekaeil\LaravelUserManagement\seeders\User\MasterUserTableSeeder;

class UserTableSeeder extends MasterUserTableSeeder
{
protected $permissions = [
[
'first_name' => '',

],

];


}
14 changes: 14 additions & 0 deletions src/Entities/export/Department.php
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
<?php

namespace App\Entities;
use Mekaeil\LaravelUserManagement\Entities\Department as UserManagementDepartment;

class Department extends UserManagementDepartment
{
protected $fillable = [
'title',
'slug',
'parent_id',
];

}
9 changes: 9 additions & 0 deletions src/Entities/export/Permission.php
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
<?php

namespace App\Entities;
use Mekaeil\LaravelUserManagement\Entities\Permission as UserManagementPermission;

class Permission extends UserManagementPermission
{

}
9 changes: 9 additions & 0 deletions src/Entities/export/Role.php
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
<?php

namespace App\Entities;
use Mekaeil\LaravelUserManagement\Entities\Role as UserManagementRole;

class Role extends UserManagementRole
{

}
20 changes: 20 additions & 0 deletions src/Entities/export/User.php
Original file line number Diff line number Diff line change
@@ -0,0 +1,20 @@
<?php

namespace App\Entities;
use Mekaeil\LaravelUserManagement\Entities\User as UserManagement;

class User extends UserManagement
{
protected $fillable = [
'first_name',
'last_name',
'email',
'mobile',
'password',
'status',
'email_verified',
'mobile_verified',
];


}
26 changes: 23 additions & 3 deletions src/LaravelUserManagementProvider.php
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,18 @@
use Illuminate\Support\ServiceProvider;
use Illuminate\Contracts\Debug\ExceptionHandler;
use Mekaeil\LaravelUserManagement\Facade\UserManagement;
// USER
use Mekaeil\LaravelUserManagement\Repository\Contracts\UserRepositoryInterface;
use Mekaeil\LaravelUserManagement\Repository\Eloquents\UserRepository;
// DEPARTMENT
use Mekaeil\LaravelUserManagement\Repository\Contracts\DepartmentRepositoryInterface;
use Mekaeil\LaravelUserManagement\Repository\Eloquents\DepartmentRepository;
// PERMISSION
use Mekaeil\LaravelUserManagement\Repository\Contracts\PermissionRepositoryInterface;
use Mekaeil\LaravelUserManagement\Repository\Eloquents\PermissionRepository;
// ROLE
use Mekaeil\LaravelUserManagement\Repository\Contracts\RoleRepositoryInterface;
use Mekaeil\LaravelUserManagement\Repository\Eloquents\RoleRepository;

class LaravelUserManagementProvider extends ServiceProvider
{
Expand Down Expand Up @@ -34,12 +46,14 @@ public function boot()
__DIR__ . '/Routes/route.user_management.php' => app_path('/../routes/route.user_management.php'),
// CONFIGS
__DIR__ . '/Config/laravel_user_management.php' => config_path('laravel_user_management.php'),
__DIR__ . '/Config/permission.php' => config_path('permission.php'),
__DIR__ . '/Config/permission.php' => config_path('permission.php'),
// MIGRATIONS
__DIR__ . '/Database/Migrations/' => database_path('migrations/'),
__DIR__ . '/Database/Migrations/' => database_path('migrations/'),
// ENTITIES
__DIR__ . '/Entities/export/' => app_path('Entities/'),
// SEEDS
__DIR__ . '/Database/Seeders/Permission/PermissionTableSeeder.php' => database_path('seeds/PermissionTableSeeder.php'),
__DIR__ . '/Database/Seeders/Role/RoleTableSeeder.php' => database_path('seeds/RoleTableSeeder.php'),
__DIR__ . '/Database/Seeders/Role/RoleTableSeeder.php' => database_path('seeds/RoleTableSeeder.php'),
// VIEWS
]);

Expand All @@ -57,5 +71,11 @@ public function register()
return new UserManagement();
});

//// BIND ABSTRACT TO CONCRETE (IOC CONTAINER WILL HANDLE IT)
$this->app->bind(UserRepositoryInterface::class, UserRepository::class);
$this->app->bind(DepartmentRepositoryInterface::class, DepartmentRepository::class);
$this->app->bind(PermissionRepositoryInterface::class, PermissionRepository::class);
$this->app->bind(RoleRepositoryInterface::class, RoleRepository::class);

}
}
2 changes: 1 addition & 1 deletion src/Repository/Eloquents/BaseEloquentRepository.php
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@

namespace Mekaeil\LaravelUserManagement\Repository\Eloquents;

use Modules\Base\Repository\Contracts\BaseRepositoryInterface;
use Mekaeil\LaravelUserManagement\Repository\Contracts\BaseRepositoryInterface;

class BaseEloquentRepository implements BaseRepositoryInterface
{
Expand Down
Loading

0 comments on commit 06d5220

Please sign in to comment.