Files
izyim-api/database/seeds/LaratrustSeeder.php
jack b4c257b2d0 added role based user management
added send reset link method
updated jwt expire to one week
added seeder
2018-04-26 17:18:53 +08:00

119 lines
4.0 KiB
PHP

<?php
use Illuminate\Support\Facades\Schema;
use Illuminate\Database\Seeder;
use Illuminate\Support\Facades\DB;
class LaratrustSeeder extends Seeder
{
/**
* Run the database seeds.
*
* @return void
*/
public function run()
{
$this->command->info('Truncating User, Role and Permission tables');
$this->truncateLaratrustTables();
$config = config('laratrust_seeder.role_structure');
$userPermission = config('laratrust_seeder.permission_structure');
$mapPermission = collect(config('laratrust_seeder.permissions_map'));
foreach ($config as $key => $modules) {
// Create a new role
$role = \App\Role::create([
'name' => $key,
'display_name' => ucwords(str_replace('_', ' ', $key)),
'description' => ucwords(str_replace('_', ' ', $key))
]);
$permissions = [];
$this->command->info('Creating Role '. strtoupper($key));
// Reading role permission modules
foreach ($modules as $module => $value) {
foreach (explode(',', $value) as $p => $perm) {
$permissionValue = $mapPermission->get($perm);
$permissions[] = \App\Permission::firstOrCreate([
'name' => $permissionValue . '-' . $module,
'display_name' => ucfirst($permissionValue) . ' ' . ucfirst($module),
'description' => ucfirst($permissionValue) . ' ' . ucfirst($module),
])->id;
$this->command->info('Creating Permission to '.$permissionValue.' for '. $module);
}
}
// Attach all permissions to the role
$role->permissions()->sync($permissions);
$this->command->info("Creating '{$key}' user");
// Create default user for each role
$user = \App\User::create([
'name' => ucwords(str_replace('_', ' ', $key)),
'phone' => $key,
'password' => bcrypt('password')
]);
$user->attachRole($role);
}
// Creating user with permissions
if (!empty($userPermission)) {
foreach ($userPermission as $key => $modules) {
foreach ($modules as $module => $value) {
// Create default user for each permission set
$user = \App\User::create([
'name' => ucwords(str_replace('_', ' ', $key)),
'phone' => $key,
'password' => bcrypt('password'),
'remember_token' => str_random(10),
]);
$permissions = [];
foreach (explode(',', $value) as $p => $perm) {
$permissionValue = $mapPermission->get($perm);
$permissions[] = \App\Permission::firstOrCreate([
'name' => $permissionValue . '-' . $module,
'display_name' => ucfirst($permissionValue) . ' ' . ucfirst($module),
'description' => ucfirst($permissionValue) . ' ' . ucfirst($module),
])->id;
$this->command->info('Creating Permission to '.$permissionValue.' for '. $module);
}
}
// Attach all permissions to the user
$user->permissions()->sync($permissions);
}
}
}
/**
* Truncates all the laratrust tables and the users table
*
* @return void
*/
public function truncateLaratrustTables()
{
Schema::disableForeignKeyConstraints();
DB::table('permission_role')->truncate();
DB::table('permission_user')->truncate();
DB::table('role_user')->truncate();
\App\User::truncate();
\App\Role::truncate();
\App\Permission::truncate();
Schema::enableForeignKeyConstraints();
}
}