Skip to content
GitLab
Menu
Projects
Groups
Snippets
Loading...
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
Menu
Open sidebar
Sarun Mungthanya
SpnPatch-Laravel
Commits
f8d82fd3
Commit
f8d82fd3
authored
Aug 20, 2024
by
Sarun Mungthanya
Browse files
add user company role group permission
parent
51f4cd8b
Changes
76
Hide whitespace changes
Inline
Side-by-side
config/auth.php
View file @
f8d82fd3
...
@@ -62,7 +62,7 @@ return [
...
@@ -62,7 +62,7 @@ return [
'providers'
=>
[
'providers'
=>
[
'users'
=>
[
'users'
=>
[
'driver'
=>
'eloquent'
,
'driver'
=>
'eloquent'
,
'model'
=>
App\Models\
Tab
User
::
class
,
'model'
=>
App\Models\User
::
class
,
],
],
// 'users' => [
// 'users' => [
...
...
database/migrations/2024_04_02_011139_create_company_types_table.php
0 → 100644
View file @
f8d82fd3
<?php
use
Illuminate\Database\Migrations\Migration
;
use
Illuminate\Database\Schema\Blueprint
;
use
Illuminate\Support\Facades\Schema
;
return
new
class
extends
Migration
{
/**
* Run the migrations.
*
* @return void
*/
public
function
up
()
{
Schema
::
create
(
'company_types'
,
function
(
Blueprint
$table
)
{
$table
->
id
();
$table
->
string
(
'name'
);
$table
->
timestamps
();
});
}
/**
* Reverse the migrations.
*
* @return void
*/
public
function
down
()
{
Schema
::
dropIfExists
(
'company_types'
);
}
};
database/migrations/2024_04_02_012324_create_companies_table.php
0 → 100644
View file @
f8d82fd3
<?php
use
Illuminate\Database\Migrations\Migration
;
use
Illuminate\Database\Schema\Blueprint
;
use
Illuminate\Support\Facades\Schema
;
return
new
class
extends
Migration
{
/**
* Run the migrations.
*
* @return void
*/
public
function
up
()
{
Schema
::
create
(
'companies'
,
function
(
Blueprint
$table
)
{
$table
->
id
();
$table
->
unsignedBigInteger
(
'company_type_id'
);
$table
->
foreign
(
'company_type_id'
)
->
references
(
'id'
)
->
on
(
'company_types'
)
->
onDelete
(
'cascade'
);
$table
->
string
(
"name"
,
50
);
$table
->
string
(
"name_en"
,
50
);
$table
->
longText
(
"address"
);
$table
->
string
(
"district"
);
$table
->
string
(
"sub_province"
);
$table
->
string
(
"province"
);
$table
->
string
(
"postcode"
);
$table
->
string
(
"contry_code"
);
$table
->
string
(
"phone"
);
$table
->
string
(
"fax"
);
$table
->
string
(
"tax"
,
13
);
$table
->
string
(
"branch"
);
$table
->
string
(
"tax_incentive"
);
$table
->
timestamps
();
});
}
/**
* Reverse the migrations.
*
* @return void
*/
public
function
down
()
{
Schema
::
dropIfExists
(
'companies'
);
}
};
database/migrations/2024_04_02_012907_create_groups_table.php
0 → 100644
View file @
f8d82fd3
<?php
use
Illuminate\Database\Migrations\Migration
;
use
Illuminate\Database\Schema\Blueprint
;
use
Illuminate\Support\Facades\Schema
;
return
new
class
extends
Migration
{
/**
* Run the migrations.
*
* @return void
*/
public
function
up
()
{
Schema
::
create
(
'groups'
,
function
(
Blueprint
$table
)
{
$table
->
id
();
$table
->
string
(
'name'
);
$table
->
unsignedBigInteger
(
'company_id'
);
$table
->
foreign
(
'company_id'
)
->
references
(
'id'
)
->
on
(
'companies'
);
$table
->
timestamps
();
});
}
/**
* Reverse the migrations.
*
* @return void
*/
public
function
down
()
{
Schema
::
dropIfExists
(
'groups'
);
}
};
database/migrations/2024_04_02_013128_create_roles_table.php
0 → 100644
View file @
f8d82fd3
<?php
use
Illuminate\Database\Migrations\Migration
;
use
Illuminate\Database\Schema\Blueprint
;
use
Illuminate\Support\Facades\Schema
;
return
new
class
extends
Migration
{
/**
* Run the migrations.
*
* @return void
*/
public
function
up
()
{
Schema
::
create
(
'roles'
,
function
(
Blueprint
$table
)
{
$table
->
id
();
$table
->
string
(
'name'
);
$table
->
string
(
'description'
);
$table
->
timestamps
();
});
}
/**
* Reverse the migrations.
*
* @return void
*/
public
function
down
()
{
Schema
::
dropIfExists
(
'roles'
);
}
};
database/migrations/2024_04_02_013210_create_permissions_table.php
0 → 100644
View file @
f8d82fd3
<?php
use
Illuminate\Database\Migrations\Migration
;
use
Illuminate\Database\Schema\Blueprint
;
use
Illuminate\Support\Facades\Schema
;
return
new
class
extends
Migration
{
/**
* Run the migrations.
*
* @return void
*/
public
function
up
()
{
Schema
::
create
(
'permissions'
,
function
(
Blueprint
$table
)
{
$table
->
id
();
$table
->
string
(
'name'
);
$table
->
string
(
'description'
);
$table
->
string
(
'permission_group_name'
);
$table
->
timestamps
();
});
}
/**
* Reverse the migrations.
*
* @return void
*/
public
function
down
()
{
Schema
::
dropIfExists
(
'permissions'
);
}
};
database/migrations/2024_04_02_013218_create_menues_table.php
0 → 100644
View file @
f8d82fd3
<?php
use
Illuminate\Database\Migrations\Migration
;
use
Illuminate\Database\Schema\Blueprint
;
use
Illuminate\Support\Facades\Schema
;
return
new
class
extends
Migration
{
/**
* Run the migrations.
*
* @return void
*/
public
function
up
()
{
Schema
::
create
(
'menues'
,
function
(
Blueprint
$table
)
{
$table
->
id
();
$table
->
string
(
'name'
);
$table
->
timestamps
();
});
}
/**
* Reverse the migrations.
*
* @return void
*/
public
function
down
()
{
Schema
::
dropIfExists
(
'menues'
);
}
};
database/migrations/2024_04_02_013548_create_permission_role_table.php
0 → 100644
View file @
f8d82fd3
<?php
use
Illuminate\Database\Migrations\Migration
;
use
Illuminate\Database\Schema\Blueprint
;
use
Illuminate\Support\Facades\Schema
;
return
new
class
extends
Migration
{
/**
* Run the migrations.
*
* @return void
*/
public
function
up
()
{
Schema
::
create
(
'permission_role'
,
function
(
Blueprint
$table
)
{
$table
->
id
();
$table
->
unsignedBigInteger
(
'role_id'
);
$table
->
unsignedBigInteger
(
'permission_id'
);
$table
->
foreign
(
'permission_id'
)
->
references
(
'id'
)
->
on
(
'permissions'
)
->
onDelete
(
'cascade'
);
$table
->
foreign
(
'role_id'
)
->
references
(
'id'
)
->
on
(
'roles'
)
->
onDelete
(
'cascade'
);
$table
->
timestamps
();
});
}
/**
* Reverse the migrations.
*
* @return void
*/
public
function
down
()
{
Schema
::
dropIfExists
(
'permission_role'
);
}
};
database/migrations/2024_04_02_013858_create_menu_role_table.php
0 → 100644
View file @
f8d82fd3
<?php
use
Illuminate\Database\Migrations\Migration
;
use
Illuminate\Database\Schema\Blueprint
;
use
Illuminate\Support\Facades\Schema
;
return
new
class
extends
Migration
{
/**
* Run the migrations.
*
* @return void
*/
public
function
up
()
{
Schema
::
create
(
'menu_role'
,
function
(
Blueprint
$table
)
{
$table
->
id
();
$table
->
unsignedBigInteger
(
'role_id'
);
$table
->
unsignedBigInteger
(
'menu_id'
);
$table
->
foreign
(
'menu_id'
)
->
references
(
'id'
)
->
on
(
'menues'
)
->
onDelete
(
'cascade'
);
$table
->
foreign
(
'role_id'
)
->
references
(
'id'
)
->
on
(
'roles'
)
->
onDelete
(
'cascade'
);
$table
->
timestamps
();
});
}
/**
* Reverse the migrations.
*
* @return void
*/
public
function
down
()
{
Schema
::
dropIfExists
(
'menu_role'
);
}
};
database/migrations/2024_04_02_013946_create_role_group_table.php
0 → 100644
View file @
f8d82fd3
<?php
use
Illuminate\Database\Migrations\Migration
;
use
Illuminate\Database\Schema\Blueprint
;
use
Illuminate\Support\Facades\Schema
;
return
new
class
extends
Migration
{
/**
* Run the migrations.
*
* @return void
*/
public
function
up
()
{
Schema
::
create
(
'group_role'
,
function
(
Blueprint
$table
)
{
$table
->
id
();
$table
->
unsignedBigInteger
(
'group_id'
);
$table
->
unsignedBigInteger
(
'role_id'
);
$table
->
foreign
(
'group_id'
)
->
references
(
'id'
)
->
on
(
'groups'
)
->
onDelete
(
'cascade'
);
$table
->
foreign
(
'role_id'
)
->
references
(
'id'
)
->
on
(
'roles'
)
->
onDelete
(
'cascade'
);
$table
->
timestamps
();
});
}
/**
* Reverse the migrations.
*
* @return void
*/
public
function
down
()
{
Schema
::
dropIfExists
(
'group_role'
);
}
};
database/migrations/2024_04_02_013946_create_user_group_table.php
0 → 100644
View file @
f8d82fd3
<?php
use
Illuminate\Database\Migrations\Migration
;
use
Illuminate\Database\Schema\Blueprint
;
use
Illuminate\Support\Facades\Schema
;
return
new
class
extends
Migration
{
/**
* Run the migrations.
*
* @return void
*/
public
function
up
()
{
Schema
::
create
(
'group_user'
,
function
(
Blueprint
$table
)
{
$table
->
id
();
$table
->
unsignedBigInteger
(
'group_id'
);
$table
->
unsignedBigInteger
(
'user_id'
);
$table
->
foreign
(
'group_id'
)
->
references
(
'id'
)
->
on
(
'groups'
)
->
onDelete
(
'cascade'
);
$table
->
foreign
(
'user_id'
)
->
references
(
'id'
)
->
on
(
'users'
)
->
onDelete
(
'cascade'
);
$table
->
timestamps
();
});
}
/**
* Reverse the migrations.
*
* @return void
*/
public
function
down
()
{
Schema
::
dropIfExists
(
'group_user'
);
}
};
database/migrations/2024_04_03_081610_add_deleted_at_to_companies_table.php
0 → 100644
View file @
f8d82fd3
<?php
use
Illuminate\Database\Migrations\Migration
;
use
Illuminate\Database\Schema\Blueprint
;
use
Illuminate\Support\Facades\Schema
;
return
new
class
extends
Migration
{
/**
* Run the migrations.
*
* @return void
*/
public
function
up
()
{
Schema
::
table
(
'companies'
,
function
(
Blueprint
$table
)
{
$table
->
softDeletes
();
});
}
/**
* Reverse the migrations.
*
* @return void
*/
public
function
down
()
{
Schema
::
table
(
'companies'
,
function
(
Blueprint
$table
)
{
$table
->
dropSoftDeletes
();
});
}
};
database/migrations/2024_07_16_080941_add_deleted_at_column_to_users_table.php
0 → 100644
View file @
f8d82fd3
<?php
use
Illuminate\Database\Migrations\Migration
;
use
Illuminate\Database\Schema\Blueprint
;
use
Illuminate\Support\Facades\Schema
;
return
new
class
extends
Migration
{
/**
* Run the migrations.
*
* @return void
*/
public
function
up
()
{
Schema
::
table
(
'users'
,
function
(
Blueprint
$table
)
{
$table
->
softDeletes
();
});
}
/**
* Reverse the migrations.
*
* @return void
*/
public
function
down
()
{
Schema
::
table
(
'users'
,
function
(
Blueprint
$table
)
{
$table
->
dropSoftDeletes
();
});
}
};
database/seeders/CompaniesSeeder.php
View file @
f8d82fd3
...
@@ -11,7 +11,7 @@ class CompaniesSeeder extends Seeder
...
@@ -11,7 +11,7 @@ class CompaniesSeeder extends Seeder
public
function
run
()
public
function
run
()
{
{
// Define the number of companies you want to generate
// Define the number of companies you want to generate
$numCompanies
=
2
;
$numCompanies
=
1
;
// Generate dummy data for companies
// Generate dummy data for companies
for
(
$i
=
0
;
$i
<
$numCompanies
;
$i
++
)
{
for
(
$i
=
0
;
$i
<
$numCompanies
;
$i
++
)
{
...
...
database/seeders/DatabaseSeeder.php
View file @
f8d82fd3
...
@@ -2,9 +2,12 @@
...
@@ -2,9 +2,12 @@
namespace
Database\Seeders
;
namespace
Database\Seeders
;
use
Illuminate\Database\Console\Seeds\WithoutModelEvents
;
use
Illuminate\Database\Seeder
;
use
Illuminate\Database\Seeder
;
use
Illuminate\Support\Facades\DB
;
use
Illuminate\Support\Facades\DB
;
use
App\Models\User
;
use
App\Models\Group
;
use
App\Models\Company
;
use
App\Models\CompanyType
;
class
DatabaseSeeder
extends
Seeder
class
DatabaseSeeder
extends
Seeder
{
{
...
@@ -15,30 +18,41 @@ class DatabaseSeeder extends Seeder
...
@@ -15,30 +18,41 @@ class DatabaseSeeder extends Seeder
*/
*/
public
function
run
()
public
function
run
()
{
{
\
App\Models\User
::
factory
()
->
create
([
'name'
=>
'Test User'
,
'email'
=>
'test@example.com'
,
]);
DB
::
table
(
'users'
)
->
insert
([
'name'
=>
'Piniastudio'
,
'email'
=>
'help@piniastudio.com'
,
DB
::
table
(
'company_types'
)
->
insert
([
'password'
=>
'$2y$10$92IXUNpkjO0rOQ5byMi.Ye4oKoEa3Ro9llC/.og/at2.uheWG/igi'
,
[
'name'
=>
'Netbay Admin'
],
[
'name'
=>
'Broker'
],
[
'name'
=>
'Importer'
]
]);
]);
DB
::
table
(
'company_types'
)
->
insert
(
[
'name'
=>
'Sea'
]
);
DB
::
table
(
'company_types'
)
->
insert
(
[
'name'
=>
'Air'
]
);
$this
->
call
([
$this
->
call
([
PermissionSeeder
::
class
,
PermissionSeeder
::
class
,
RoleSeeder
::
class
,
RoleSeeder
::
class
,
CompaniesSeeder
::
class
,
CompaniesSeeder
::
class
,
GroupSeeder
::
class
,
]);
]);
\
App\Models\User
::
factory
()
->
create
([
'name'
=>
'Test User'
,
'email'
=>
'test@example.com'
,
'password'
=>
bcrypt
(
'password'
),
]);
$users
=
[
[
'name'
=>
'Sarun'
,
'email'
=>
'sarun@netbay.co.th'
,
'password'
=>
bcrypt
(
'password'
)],
];
foreach
(
$users
as
$userData
)
{
$user
=
User
::
create
(
$userData
);
// Assign groups to users
$groups
=
Group
::
inRandomOrder
()
->
take
(
2
)
->
get
();
// Assign 2 random groups to each user
foreach
(
$groups
as
$group
)
{
$user
->
groups
()
->
attach
(
$group
);
}
}
}
}
}
}
database/seeders/GroupSeeder.php
0 → 100644
View file @
f8d82fd3
<?php
namespace
Database\Seeders
;
use
Illuminate\Database\Seeder
;
use
App\Models\Group
;
use
App\Models\Role
;
use
App\Models\Company
;
class
GroupSeeder
extends
Seeder
{
/**
* Run the database seeds.
*
* @return void
*/
public
function
run
()
{
$company
=
Company
::
first
();
// Create groups
$group1
=
Group
::
create
([
'name'
=>
'Group 1'
,
'company_id'
=>
$company
->
id
]);
$group2
=
Group
::
create
([
'name'
=>
'Group 2'
,
'company_id'
=>
$company
->
id
]);
$group3
=
Group
::
create
([
'name'
=>
'Group 3'
,
'company_id'
=>
$company
->
id
]);
// Assign roles to groups
$this
->
assignRoles
(
$group1
,
[
'Admin'
,
'Manager'
]);
$this
->
assignRoles
(
$group2
,
[
'Manager'
,
'User'
]);
$this
->
assignRoles
(
$group3
,
[
'User'
]);
}
private
function
assignRoles
(
$group
,
$roles
)
{
foreach
(
$roles
as
$roleName
)
{
$role
=
Role
::
where
(
'name'
,
$roleName
)
->
first
();
if
(
$role
)
{
$group
->
roles
()
->
attach
(
$role
);
}
}
}
}
database/seeders/PermissionSeeder.php
View file @
f8d82fd3
...
@@ -16,57 +16,73 @@ class PermissionSeeder extends Seeder
...
@@ -16,57 +16,73 @@ class PermissionSeeder extends Seeder
public
function
run
()
public
function
run
()
{
{
$permissions
=
[
$permissions
=
[
// File Management
[
'name'
=>
'upload-file'
,
'description'
=>
'Upload a file'
,
'permission_group_name'
=>
'File Management'
],
[
'name'
=>
'download-file'
,
'description'
=>
'Download a file'
,
'permission_group_name'
=>
'File Management'
],
// Header Management
[
'name'
=>
'add-header'
,
'description'
=>
'Add a header'
,
'permission_group_name'
=>
'Header Management'
],
[
'name'
=>
'edit-header'
,
'description'
=>
'Edit a header'
,
'permission_group_name'
=>
'Header Management'
],
[
'name'
=>
'delete-header'
,
'description'
=>
'Delete a header'
,
'permission_group_name'
=>
'Header Management'
],
[
'name'
=>
'send-customs'
,
'description'
=>
'Send customs'
,
'permission_group_name'
=>
'Header Management'
],
[
'name'
=>
'export-to-spn'
,
'description'
=>
'Export to SPN'
,
'permission_group_name'
=>
'Header Management'
],
[
'name'
=>
'cancel-header'
,
'description'
=>
'Cancel a header'
,
'permission_group_name'
=>
'Header Management'
],
// Detail Management
[
'name'
=>
'add-detail'
,
'description'
=>
'Add a detail'
,
'permission_group_name'
=>
'Detail Management'
],
[
'name'
=>
'edit-detail'
,
'description'
=>
'Edit a detail'
,
'permission_group_name'
=>
'Detail Management'
],
[
'name'
=>
'cancel-detail'
,
'description'
=>
'Cancel a detail'
,
'permission_group_name'
=>
'Detail Management'
],
[
'name'
=>
'merge-vessel'
,
'description'
=>
'Merge vessel'
,
'permission_group_name'
=>
'Detail Management'
],
// Item Management
[
'name'
=>
'add-item'
,
'description'
=>
'Add an item'
,
'permission_group_name'
=>
'Item Management'
],
[
'name'
=>
'edit-item'
,
'description'
=>
'Edit an item'
,
'permission_group_name'
=>
'Item Management'
],
// Flight Management
[
'name'
=>
'change-flight'
,
'description'
=>
'Change flight'
,
'permission_group_name'
=>
'Flight Management'
],
// User Management
// User Management
[
'name'
=>
'add-user'
,
'description'
=>
'Add a user'
,
'permission_group_name'
=>
'User Management'
],
[
'name'
=>
'add-user'
,
'description'
=>
'Add a user'
,
'permission_group_name'
=>
'User Management'
],
[
'name'
=>
'edit-user'
,
'description'
=>
'Edit a user'
,
'permission_group_name'
=>
'User Management'
],
[
'name'
=>
'edit-user'
,
'description'
=>
'Edit a user'
,
'permission_group_name'
=>
'User Management'
],
[
'name'
=>
'delete-user'
,
'description'
=>
'Delete a user'
,
'permission_group_name'
=>
'User Management'
],
[
'name'
=>
'delete-user'
,
'description'
=>
'Delete a user'
,
'permission_group_name'
=>
'User Management'
],
// Role Management
// Role Management
[
'name'
=>
'add-role'
,
'description'
=>
'Add a role'
,
'permission_group_name'
=>
'Role Management'
],
[
'name'
=>
'add-role'
,
'description'
=>
'Add a role'
,
'permission_group_name'
=>
'Role Management'
],
[
'name'
=>
'edit-role'
,
'description'
=>
'Edit a role'
,
'permission_group_name'
=>
'Role Management'
],
[
'name'
=>
'edit-role'
,
'description'
=>
'Edit a role'
,
'permission_group_name'
=>
'Role Management'
],
[
'name'
=>
'delete-role'
,
'description'
=>
'Delete a role'
,
'permission_group_name'
=>
'Role Management'
],
[
'name'
=>
'delete-role'
,
'description'
=>
'Delete a role'
,
'permission_group_name'
=>
'Role Management'
],
// Group Management
// Group Management
[
'name'
=>
'add-group'
,
'description'
=>
'Add a group'
,
'permission_group_name'
=>
'Group Management'
],
[
'name'
=>
'add-group'
,
'description'
=>
'Add a group'
,
'permission_group_name'
=>
'Group Management'
],
[
'name'
=>
'edit-group'
,
'description'
=>
'Edit a group'
,
'permission_group_name'
=>
'Group Management'
],
[
'name'
=>
'edit-group'
,
'description'
=>
'Edit a group'
,
'permission_group_name'
=>
'Group Management'
],
[
'name'
=>
'delete-group'
,
'description'
=>
'Delete a group'
,
'permission_group_name'
=>
'Group Management'
],
[
'name'
=>
'delete-group'
,
'description'
=>
'Delete a group'
,
'permission_group_name'
=>
'Group Management'
],
// Company Management
// Company Management
[
'name'
=>
'add-company'
,
'description'
=>
'Add a company'
,
'permission_group_name'
=>
'Company Management'
],
[
'name'
=>
'add-company'
,
'description'
=>
'Add a company'
,
'permission_group_name'
=>
'Company Management'
],
[
'name'
=>
'edit-company'
,
'description'
=>
'Edit a company'
,
'permission_group_name'
=>
'Company Management'
],
[
'name'
=>
'edit-company'
,
'description'
=>
'Edit a company'
,
'permission_group_name'
=>
'Company Management'
],
[
'name'
=>
'delete-company'
,
'description'
=>
'Delete a company'
,
'permission_group_name'
=>
'Company Management'
],
[
'name'
=>
'delete-company'
,
'description'
=>
'Delete a company'
,
'permission_group_name'
=>
'Company Management'
],
// Company Type Management
// Company Type Management
[
'name'
=>
'add-company-type'
,
'description'
=>
'Add a company type'
,
'permission_group_name'
=>
'Company Type Management'
],
[
'name'
=>
'add-company-type'
,
'description'
=>
'Add a company type'
,
'permission_group_name'
=>
'Company Type Management'
],
[
'name'
=>
'edit-company-type'
,
'description'
=>
'Edit a company type'
,
'permission_group_name'
=>
'Company Type Management'
],
[
'name'
=>
'edit-company-type'
,
'description'
=>
'Edit a company type'
,
'permission_group_name'
=>
'Company Type Management'
],
[
'name'
=>
'delete-company-type'
,
'description'
=>
'Delete a company type'
,
'permission_group_name'
=>
'Company Type Management'
]
[
'name'
=>
'delete-company-type'
,
'description'
=>
'Delete a company type'
,
'permission_group_name'
=>
'Company Type Management'
],
// Server License Management
[
'name'
=>
'add-server-license'
,
'description'
=>
'Add a server license'
,
'permission_group_name'
=>
'Server License Management'
],
[
'name'
=>
'edit-server-license'
,
'description'
=>
'Edit a server license'
,
'permission_group_name'
=>
'Server License Management'
],
[
'name'
=>
'edit-csv-mapping'
,
'description'
=>
'Edit CSV mapping'
,
'permission_group_name'
=>
'Server License Management'
],
[
'name'
=>
'edit-print-form'
,
'description'
=>
'Edit print form'
,
'permission_group_name'
=>
'Server License Management'
],
[
'name'
=>
'edit-user-interface'
,
'description'
=>
'Edit user interface'
,
'permission_group_name'
=>
'Server License Management'
],
[
'name'
=>
'edit-global'
,
'description'
=>
'Edit global settings'
,
'permission_group_name'
=>
'Server License Management'
],
[
'name'
=>
'edit-parameter'
,
'description'
=>
'Edit parameters'
,
'permission_group_name'
=>
'Server License Management'
],
[
'name'
=>
'edit-onload'
,
'description'
=>
'Edit on-load settings'
,
'permission_group_name'
=>
'Server License Management'
],
[
'name'
=>
'edit-validate'
,
'description'
=>
'Edit validation settings'
,
'permission_group_name'
=>
'Server License Management'
],
[
'name'
=>
'edit-mapto'
,
'description'
=>
'Edit mapping'
,
'permission_group_name'
=>
'Server License Management'
],
[
'name'
=>
'edit-mainvar'
,
'description'
=>
'Edit main variables'
,
'permission_group_name'
=>
'Server License Management'
],
[
'name'
=>
'download-file-server-license'
,
'description'
=>
'Download server license file'
,
'permission_group_name'
=>
'Server License Management'
],
[
'name'
=>
'list-history-patch'
,
'description'
=>
'List history patches'
,
'permission_group_name'
=>
'Server License Management'
],
[
'name'
=>
'delete-server-license'
,
'description'
=>
'Delete a server license'
,
'permission_group_name'
=>
'Server License Management'
],
// Patch Management
[
'name'
=>
'add-patch'
,
'description'
=>
'Add a patch'
,
'permission_group_name'
=>
'Patch Management'
],
[
'name'
=>
'edit-patch'
,
'description'
=>
'Edit a patch'
,
'permission_group_name'
=>
'Patch Management'
],
[
'name'
=>
'delete-patch'
,
'description'
=>
'Delete a patch'
,
'permission_group_name'
=>
'Patch Management'
],
// Send Patch Management
[
'name'
=>
'send-patch'
,
'description'
=>
'Send Patch'
,
'permission_group_name'
=>
'Send Patch Management'
],
[
'name'
=>
'resend-patch'
,
'description'
=>
'ReSend Patch'
,
'permission_group_name'
=>
'Send Patch Management'
],
[
'name'
=>
'delete-send-patch'
,
'description'
=>
'Delete a Send Patch'
,
'permission_group_name'
=>
'Send Patch Management'
],
// Parameter Management
[
'name'
=>
'add-parameter'
,
'description'
=>
'Add a parameter'
,
'permission_group_name'
=>
'Parameter Management'
],
[
'name'
=>
'edit-parameter'
,
'description'
=>
'Edit a parameter'
,
'permission_group_name'
=>
'Parameter Management'
],
[
'name'
=>
'delete-parameter'
,
'description'
=>
'Delete a parameter'
,
'permission_group_name'
=>
'Parameter Management'
],
// Patch Exchange Rate Management
[
'name'
=>
'add-exchange-rate'
,
'description'
=>
'Add a Exchange Rate'
,
'permission_group_name'
=>
'Patch Enchangerate Management'
],
[
'name'
=>
'upload-exchange-rate'
,
'description'
=>
'Upload Exchange Rate'
,
'permission_group_name'
=>
'Patch Enchangerate Management'
],
[
'name'
=>
'edit-exchange-rate'
,
'description'
=>
'Edit a Exchange Rate'
,
'permission_group_name'
=>
'Patch Enchangerate Management'
],
[
'name'
=>
'delete-exchange-rate'
,
'description'
=>
'Delete a Exchange Rate'
,
'permission_group_name'
=>
'Patch Enchangerate Management'
],
// Discharge Port Management
[
'name'
=>
'upload-discharge-port'
,
'description'
=>
'Uplaod Discharge Port'
,
'permission_group_name'
=>
'Patch Enchangerate Management'
],
];
];
// // Insert permissions into the database
// // Insert permissions into the database
foreach
(
$permissions
as
$permission
)
{
foreach
(
$permissions
as
$permission
)
{
...
...
database/seeders/RoleSeeder.php
View file @
f8d82fd3
...
@@ -17,51 +17,51 @@ class RoleSeeder extends Seeder
...
@@ -17,51 +17,51 @@ class RoleSeeder extends Seeder
*/
*/
public
function
run
()
public
function
run
()
{
{
// Define permissions for each role
$permissions
=
[
$adminPermissions
=
[
'admin'
=>
[
'add-header'
,
'edit-header'
,
'delete-header'
,
'send-customs'
,
'export-to-spn'
,
'add-user'
,
'edit-user'
,
'delete-user'
,
'cancel-header'
,
'cancel-detail'
,
'merge-vessel'
,
'add-detail'
,
'edit-detail'
,
'add-role'
,
'edit-role'
,
'delete-role'
,
'add-item'
,
'edit-item'
,
'download-file'
,
'change-flight'
,
'add-group'
,
'edit-group'
,
'delete-group'
,
'add-user'
,
'edit-user'
,
'delete-user'
,
'add-company'
,
'edit-company'
,
'delete-company'
,
'add-role'
,
'edit-role'
,
'delete-role'
,
'add-company-type'
,
'edit-company-type'
,
'delete-company-type'
,
'add-group'
,
'edit-group'
,
'delete-group'
,
'add-server-license'
,
'edit-server-license'
,
'edit-csv-mapping'
,
'edit-print-form'
,
'add-company'
,
'edit-company'
,
'delete-company'
,
'edit-user-interface'
,
'edit-global'
,
'edit-parameter'
,
'edit-onload'
,
'add-company-type'
,
'edit-company-type'
,
'delete-company-type'
,
'edit-validate'
,
'edit-mapto'
,
'edit-mainvar'
,
'download-file-server-license'
,
'list-history-patch'
,
'delete-server-license'
,
'add-patch'
,
'edit-patch'
,
'delete-patch'
,
'send-patch'
,
'resend-patch'
,
'delete-send-patch'
,
'add-parameter'
,
'edit-parameter'
,
'delete-parameter'
,
'add-exchange-rate'
,
'upload-exchange-rate'
,
'edit-exchange-rate'
,
'delete-exchange-rate'
,
'upload-discharge-port'
],
'developer'
=>
[
'add-server-license'
,
'edit-server-license'
,
'edit-csv-mapping'
,
'edit-print-form'
,
'edit-user-interface'
,
'edit-global'
,
'edit-parameter'
,
'edit-onload'
,
'edit-validate'
,
'edit-mapto'
,
'edit-mainvar'
,
'download-file-server-license'
,
'add-patch'
,
'edit-patch'
,
'delete-patch'
,
'add-parameter'
,
'edit-parameter'
,
'delete-parameter'
],
'sales'
=>
[
'add-company'
,
'edit-company'
,
'delete-company'
,
'add-company-type'
,
'edit-company-type'
,
'delete-company-type'
,
'send-patch'
],
'qa'
=>
[
'add-patch'
,
'edit-patch'
,
'delete-patch'
,
'add-exchange-rate'
,
'upload-exchange-rate'
,
'edit-exchange-rate'
,
'delete-exchange-rate'
,
'upload-discharge-port'
]
];
];
$managerPermissions
=
[
// Create roles and assign permissions
'add-header'
,
'edit-header'
,
'delete-header'
,
'send-customs'
,
foreach
(
$permissions
as
$roleName
=>
$perms
)
{
'cancel-header'
,
'cancel-detail'
,
'merge-vessel'
,
'add-detail'
,
'edit-detail'
,
$role
=
Role
::
create
([
'name'
=>
$roleName
]);
'add-item'
,
'edit-item'
,
'download-file'
,
'change-flight'
,
'add-user'
,
'edit-user'
,
'add-group'
,
'edit-group'
,
'add-company'
,
'edit-company'
,
'add-company-type'
,
'edit-company-type'
,
];
$userPermissions
=
[
'add-header'
,
'edit-header'
,
'send-customs'
,
'cancel-header'
,
'cancel-detail'
,
'add-detail'
,
'edit-detail'
,
'add-item'
,
'edit-item'
,
'download-file'
,
];
// Create roles
$adminRole
=
Role
::
create
([
'name'
=>
'Admin'
,
'description'
=>
'Administrator'
]);
$managerRole
=
Role
::
create
([
'name'
=>
'Manager'
,
'description'
=>
'Manager'
]);
$userRole
=
Role
::
create
([
'name'
=>
'User'
,
'description'
=>
'User'
]);
// Assign permissions to roles
foreach
(
$perms
as
$perm
)
{
$this
->
assignPermissions
(
$adminRole
,
$adminPermissions
);
$permission
=
Permission
::
where
(
'name'
,
$perm
)
->
first
();
$this
->
assignPermissions
(
$managerRole
,
$managerPermissions
);
if
(
$permission
)
{
$this
->
assignPermissions
(
$userRole
,
$userPermissions
);
$role
->
permissions
()
->
attach
(
$permission
->
id
);
}
}
private
function
assignPermissions
(
$role
,
$permissions
)
{
foreach
(
$permissions
as
$permissionName
)
{
$permission
=
Permission
::
where
(
'name'
,
$permissionName
)
->
first
();
if
(
$permission
)
{
$role
->
permissions
()
->
attach
(
$permission
);
}
}
}
}
}
}
...
...
resources/views/components/no-permission.blade.php
0 → 100644
View file @
f8d82fd3
<div
x-data=
"{ showModal: @entangle('showNoPermissionModal') }"
>
<div
x-show=
"showModal"
class=
"fixed z-10 inset-0 overflow-y-auto"
aria-labelledby=
"modal-title"
role=
"dialog"
aria-modal=
"true"
>
<div
class=
"flex items-end justify-center min-h-screen pt-4 px-4 pb-20 text-center sm:block sm:p-0"
>
<div
x-show=
"showModal"
class=
"fixed inset-0 bg-gray-500 bg-opacity-75 transition-opacity"
aria-hidden=
"true"
></div>
<span
class=
"hidden sm:inline-block sm:align-middle sm:h-screen"
aria-hidden=
"true"
>
​
</span>
<div
x-show=
"showModal"
class=
"inline-block align-bottom bg-white rounded-lg text-left overflow-hidden shadow-xl transform transition-all sm:my-8 sm:align-middle sm:max-w-lg sm:w-full"
>
<div
class=
"bg-white px-4 pt-5 pb-4 sm:p-6 sm:pb-4"
>
<div
class=
"sm:flex sm:items-start"
>
<div
class=
"mx-auto flex-shrink-0 flex items-center justify-center h-12 w-12 rounded-full bg-red-100 sm:mx-0 sm:h-10 sm:w-10"
>
<svg
class=
"h-6 w-6 text-red-600"
xmlns=
"http://www.w3.org/2000/svg"
fill=
"none"
viewBox=
"0 0 24 24"
stroke=
"currentColor"
aria-hidden=
"true"
>
<path
stroke-linecap=
"round"
stroke-linejoin=
"round"
stroke-width=
"2"
d=
"M6 18L18 6M6 6l12 12"
></path>
</svg>
</div>
<div
class=
"mt-3 text-center sm:mt-0 sm:ml-4 sm:text-left"
>
<h3
class=
"text-lg leading-6 font-medium text-gray-900"
id=
"modal-title"
>
Permission Denied
</h3>
<div
class=
"mt-2"
>
<p
class=
"text-sm text-gray-500"
>
คุณไม่มีสิทธิ์ในการดำเนินการนี้.
</p>
</div>
</div>
</div>
</div>
<div
class=
"bg-gray-50 px-4 py-3 sm:px-6 sm:flex sm:flex-row-reverse"
>
<button
@
click=
"showModal = false"
type=
"button"
class=
"mt-3 w-full inline-flex justify-center rounded-md border border-gray-300 shadow-sm px-4 py-2 bg-white text-base font-medium text-gray-700 hover:bg-gray-50 focus:outline-none focus:ring-2 focus:ring-offset-2 focus:ring-indigo-500 sm:mt-0 sm:ml-3 sm:w-auto sm:text-sm"
>
ปิด
</button>
</div>
</div>
</div>
</div>
</div>
\ No newline at end of file
resources/views/livewire/main-container.blade.php
View file @
f8d82fd3
...
@@ -15,10 +15,14 @@
...
@@ -15,10 +15,14 @@
<div
wire:loading.remove
class=
"bg-main-container mx-4"
>
<div
wire:loading.remove
class=
"bg-main-container mx-4"
>
@if ($currentContent === 'Role')
@if ($currentContent === 'Role')
<livewire:pages.role.role-index
/>
<livewire:pages.role.role-index
/>
@elseif ($currentContent === 'ServerLicense')
<livewire:pages.server-license.server-license-index
/>
@elseif ($currentContent === 'User')
@elseif ($currentContent === 'User')
<livewire:pages.user.user-index
/>
<livewire:pages.user.user-index
/>
@elseif ($currentContent === 'Company')
<livewire:pages.company.company-index
/>
@elseif ($currentContent === 'Group')
<livewire:pages.group.group-index
/>
@elseif ($currentContent === 'ServerLicense')
<livewire:pages.server-license.server-license-index
/>
@elseif ($currentContent === 'SendPatch')
@elseif ($currentContent === 'SendPatch')
<livewire:pages.send-patch.send-patch-index
/>
<livewire:pages.send-patch.send-patch-index
/>
@elseif ($currentContent === 'SendMultiPatch')
@elseif ($currentContent === 'SendMultiPatch')
...
...
Prev
1
2
3
4
Next
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
.
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment