Commit f8d82fd3 authored by Sarun Mungthanya's avatar Sarun Mungthanya
Browse files

add user company role group permission

parent 51f4cd8b
<?php
namespace App\Http\Livewire\Pages\Group;
use Livewire\Component;
use Illuminate\Support\Facades\Hash;
use Illuminate\Support\Facades\Validator;
use App\Models\Group;
use App\Models\Role;
use App\Models\User;
use App\Models\Company;
use Livewire\WithPagination;
class GroupIndex extends Component
{
use WithPagination;
protected $paginationTheme = 'bootstrap';
public $perPage = 10;
public $url;
public $searchSelected = 'name';
public $editGroupId;
public $deleteGroupId;
public $keyword = '';
public $route = '';
public $selectedOption = 'name';
public $searchBy;
public $menu;
public $action = 'list';
public $message;
public $selectedGroups = [];
public $showDeleteListModal = false;
public $showNoPermissionModal = false;
public $showMessage = false;
protected $listeners = [ 'showGroupList', 'deleteItem' , 'deleteSelected'];
public function mount()
{
$this->searchBy = [
'name' => 'Name',
];
$this->message = session('message');
}
public function render()
{
// \Log::info('searchSelected:', ['searchSelected' => $this->searchSelected]);
$results = $this->searchSelected && $this->keyword
? Group::where($this->searchSelected, 'LIKE', '%' . $this->keyword . '%')->paginate($this->perPage)
: Group::paginate($this->perPage);
$roles = Role::all();
$users = User::all();
$companies = Company::all();
return view('livewire.pages.group.group-index', [
'results' => $results,
'route' => $this->route,
'url' => $this->url,
'roles' => $roles,
'users' => $users,
'companies' => $companies,
'selectedGroups' => $this->selectedGroups,
'showDeleteListModal' => $this->showDeleteListModal
]);
}
public function showGroupCreateForm()
{
// if (!\Auth::user()->hasPermissions(['add-group'])) {
// $this->showNoPermissionModal = TRUE;
// return;
// }
$this->action = 'create';
}
public function showGroupEditForm($groupId)
{
if (!\Auth::user()->hasPermissions(['edit-group'])) {
$this->showNoPermissionModal = TRUE;
return;
}
$this->action = 'edit';
$this->editGroupId = $groupId;
}
public function showGroupList($message)
{
$this->action = 'list';
$this->keyword = '';
$this->message = $message;
$this->resetPage();
if ($this->message) {
$this->dispatchBrowserEvent('show-message', ['message' => $this->message]);
}
}
public function paginationView()
{
return 'paginate-custom';
}
public function deleteItem($deleteGroupId)
{
if (!\Auth::user()->hasPermissions(['delete-group'])) {
$this->showNoPermissionModal = TRUE;
return;
}
$group = Group::find($deleteGroupId);
if ($group) {
$group->delete();
$message = "Deleted Successfully";
$this->message = $message;
if ($this->message) {
$this->dispatchBrowserEvent('show-message', ['message' => $this->message]);
}
}
}
public function deleteSelected($selectedGroups)
{
if (!\Auth::user()->hasPermissions(['delete-group'])) {
$this->showNoPermissionModal = TRUE;
return;
}
$groupDeleted= Group::whereIn("id", $selectedGroups)->pluck('name')->toArray();
$groupStr = implode("," ,$groupDeleted);
Group::destroy($selectedGroups);
$message = "Deleted : (". $groupStr." )Successfully";
$this->message = $message;
$this->selectedGroups = [];
if ($this->message) {
$this->dispatchBrowserEvent('show-message', ['message' => $this->message]);
}
}
}
<?php
namespace App\Http\Livewire\Pages\Role;
use Livewire\Component;
use App\Models\Role;
class RoleCreate extends Component
{
public $name;
public $description;
public $permissions;
public $action;
public $permission_lists = [];
public $permission_lists_temp = [];
protected $rules = [
'name' => 'required',
];
public function mount($permissions)
{
$this->permissions = $permissions;
}
public function render()
{
return view('livewire.pages.role.role-create');
}
public function submitForm($selectedList)
{
$validatedData = $this->validate([
'name' => 'required',
'description' => 'nullable',
'permission_lists' => 'array',
]);
$this->permission_lists = $selectedList;
$roleData = [
'name' => $this->name,
'description' => $this->description,
];
$role = Role::create($roleData);
if (!empty($this->permission_lists)) {
$role->permissions()->sync($this->permission_lists);
}
// Reset form fields
$this->reset([
'name', 'description', 'permission_lists'
]);
$this->emit('showRoleList', 'Role successfully created.');
}
public function goBack()
{
$this->emit('showRoleList', '');
}
}
<?php
namespace App\Http\Livewire\Pages\Role;
use Livewire\Component;
use App\Models\Role;
use App\Models\Permission;
use Illuminate\Http\Request;
class RoleEdit extends Component
{
public $editRoleId;
public $permissions;
public $roleId;
public $role;
public $name, $description, $permission_lists = [];
protected $rules = [
'role.name' => 'required',
];
public function mount($editRoleId, $permissions)
{
$this->editRoleId = $editRoleId;
$this->permissions = $permissions;
$this->role = Role::findOrFail($editRoleId);
$this->name = $this->role->name;
$this->description = $this->role->description;
$this->permission_lists = $this->role->permissions->pluck('id')->toArray();
$this->permissions = Permission::all();
}
public function render()
{
$permission_lists = $this->permission_lists;
return view('livewire.pages.role.role-edit', compact('permission_lists'));
}
public function submitEditForm($selectedList)
{
// $this->validate();
$this->permission_lists = array_map('intval', $selectedList);
$this->role->name = $this->name;
$this->role->description = $this->description;
$this->role->permissions()->sync($this->permission_lists);
$this->role->save();
$this->emit('showRoleList', 'Role successfully updated.');
}
public function goBack()
{
$this->emit('showRoleList', '');
}
}
...@@ -3,11 +3,128 @@ ...@@ -3,11 +3,128 @@
namespace App\Http\Livewire\Pages\Role; namespace App\Http\Livewire\Pages\Role;
use Livewire\Component; use Livewire\Component;
use Illuminate\Support\Facades\Hash;
use Illuminate\Support\Facades\Validator;
use App\Models\Role;
use App\Models\Permission;
use Livewire\WithPagination;
class RoleIndex extends Component class RoleIndex extends Component
{ {
use WithPagination;
protected $paginationTheme = 'bootstrap';
public $perPage = 10;
public $url;
public $searchSelected = 'name';
public $editRoleId;
public $deleteRoleId;
public $keyword = '';
public $route = '';
public $selectedOption = 'name';
public $searchBy;
public $menu;
public $action = 'list';
public $message;
public $selectedRoles ,$permission_lists= [];
public $showDeleteListModal = false;
public $showNoPermissionModal = false;
public $showMessage = false;
protected $listeners = [ 'showRoleList', 'deleteItem' , 'deleteSelected'];
public function mount()
{
$this->searchBy = [
'name' => 'Name',
];
$this->message = session('message');
}
public function render() public function render()
{ {
return view('livewire.pages.role.role-index'); // \Log::info('searchSelected:', ['searchSelected' => $this->searchSelected]);
$results = $this->searchSelected && $this->keyword
? Role::where($this->searchSelected, 'LIKE', '%' . $this->keyword . '%')->paginate($this->perPage)
: Role::paginate($this->perPage);
$permissions = Permission::orderBy('permission_group_name', 'asc')->get();
return view('livewire.pages.role.role-index', [
'results' => $results,
'route' => $this->route,
'url' => $this->url,
'permissions' => $permissions,
'selectedRoles' => $this->selectedRoles,
'showDeleteListModal' => $this->showDeleteListModal
]);
}
public function showRoleCreateForm()
{
if (!\Auth::user()->hasPermissions(['add-role'])) {
$this->showNoPermissionModal = TRUE;
return;
}
$this->action = 'create';
}
public function showRoleEditForm($roleId)
{
if (!\Auth::user()->hasPermissions(['edit-role'])) {
$this->showNoPermissionModal = TRUE;
return;
}
$this->action = 'edit';
$this->editRoleId = $roleId;
}
public function showRoleList($message)
{
$this->action = 'list';
$this->resetPage();
$this->message = $message;
if ($this->message) {
$this->dispatchBrowserEvent('show-message', ['message' => $this->message]);
}
}
public function paginationView()
{
return 'paginate-custom';
}
public function deleteItem($deleteRoleId)
{
if (!\Auth::user()->hasPermissions(['delete-role'])) {
$this->showNoPermissionModal = TRUE;
return;
}
$role = Role::find($deleteRoleId);
if ($role) {
$role->delete();
$message = "Deleted Successfully";
$this->message = $message;
if ($this->message) {
$this->dispatchBrowserEvent('show-message', ['message' => $this->message]);
} }
}
}
public function deleteSelected($selectedRoles)
{
if (!\Auth::user()->hasPermissions(['delete-role'])) {
$this->showNoPermissionModal = TRUE;
return;
}
$roleDeleted= Role::whereIn("id", $selectedRoles)->pluck('name')->toArray();
$roleStr = implode("," ,$roleDeleted);
Role::destroy($selectedRoles);
$message = "Deleted : (". $roleStr." )Successfully";
$this->message = $message;
$this->selectedRoles = [];
if ($this->message) {
$this->dispatchBrowserEvent('show-message', ['message' => $this->message]);
}
}
} }
<?php
namespace App\Http\Livewire\Pages\User;
use Livewire\Component;
use App\Models\User;
use Illuminate\Support\Facades\Hash;
class UserCreate extends Component
{
public $name, $email ,$password , $password_confirmation;
public $description;
public $action;
public $group_lists;
protected $rules = [
'name' => 'required|string|max:255',
'email' => 'required|string|email|max:255|unique:users,email',
'password' => 'required|string|min:8|confirmed',
];
protected $messages = [
'name.required' => 'The name field is required.',
'email.required' => 'The email field is required.',
'email.email' => 'The email must be a valid email address.',
'email.unique' => 'This email address is already taken.',
'password.required' => 'The password field is required.',
'password.min' => 'The password must be at least 8 characters.',
'password.confirmed' => 'The password confirmation does not match.',
];
public function mount()
{
}
public function render()
{
return view('livewire.pages.User.User-create');
}
public function submitForm()
{
$this->validate();
$UsereData = [
'name' => $this->name,
'uid' => \Str::random(40),
'email' => $this->email,
'password' => Hash::make($this->password)
];
$User = User::create($UsereData);
if (!empty($this->group_lists)) {
$arr_group_lists = explode(",", $this->group_lists);
if (!empty($arr_group_lists)) {
$User->groups()->sync($arr_group_lists);
} else {
$User->groups()->sync([]);
}
} else {
$User->groups()->sync([]);
}
$this->reset([
'name', 'email', 'description', 'group_lists'
]);
if (auth()->guest()) {
return redirect()->route('login'); // เปลี่ยนเส้นทางไปยังหน้า register
}
$this->emit('showUserList', 'User successfully created.');
}
public function goBack()
{
if (auth()->guest()) {
return redirect()->route('login'); // เปลี่ยนเส้นทางไปยังหน้า register
}
$this->emit('showUserList');
}
}
<?php
namespace App\Http\Livewire\Pages\User;
use Livewire\Component;
use App\Models\User;
use Illuminate\Support\Facades\Hash;
class UserEdit extends Component
{
public $editUserId;
public $userId;
public $user;
public $name, $email, $current_password, $new_password, $new_password_confirmation ,$changePassword = false ;
public $group_lists;
protected function rules()
{
$rules = [
'name' => 'required|string|max:255',
'email' => 'required|string|email|max:255|unique:users,email,' . $this->user->id,
];
if ($this->changePassword) {
$rules['current_password'] = 'required|string|min:8';
$rules['new_password'] = 'nullable|string|min:8|confirmed';
}
return $rules;
}
protected $messages = [
'name.required' => 'The name field is required.',
'email.required' => 'The email field is required.',
'email.email' => 'The email must be a valid email address.',
'email.unique' => 'This email address is already taken.',
'current_password.required' => 'The current password field is required.',
'current_password.min' => 'The current password must be at least 8 characters.',
'new_password.min' => 'The new password must be at least 8 characters.',
'new_password.confirmed' => 'The new password confirmation does not match.',
];
public function mount($editUserId)
{
$this->editUserId = $editUserId;
$this->user = User::findOrFail($editUserId);
$this->name = $this->user->name;
$this->email = $this->user->email;
$this->group_lists = $this->user->groups()->pluck('group_id')->implode(',');
}
public function render()
{
$userGroups = $this->user->groups()->pluck('group_id')->toArray();
return view('livewire.pages.user.user-edit', [
'userGroups' => $userGroups,
]);
}
public function submitEditForm()
{
$this->validate();
if ($this->changePassword && !Hash::check($this->current_password, $this->user->password)) {
$this->addError('current_password', 'The current password is incorrect.');
return;
}
$this->user->name = $this->name;
$this->user->email = $this->email;
if ($this->changePassword) {
$this->user->password = Hash::make($this->new_password);
}
$this->user->save();
if (!empty($this->group_lists)) {
if(!is_array($this->group_lists)) {
$arr_group_lists = explode(",", $this->group_lists);
}else{
$arr_group_lists = $this->group_lists;
}
if (!empty($arr_group_lists)) {
$this->user->groups()->sync($arr_group_lists);
} else {
$this->user->groups()->sync([]);
}
} else {
$this->user->groups()->sync([]);
}
$this->reset(['current_password']); // Clear the password field after saving
$this->emit('showUserList', 'User successfully updated.');
}
public function goBack()
{
$this->emit('showUserList', '');
}
}
...@@ -3,11 +3,130 @@ ...@@ -3,11 +3,130 @@
namespace App\Http\Livewire\Pages\User; namespace App\Http\Livewire\Pages\User;
use Livewire\Component; use Livewire\Component;
use Illuminate\Support\Facades\Hash;
use Illuminate\Support\Facades\Validator;
use App\Models\User;
use Livewire\WithPagination;
class UserIndex extends Component class UserIndex extends Component
{ {
use WithPagination;
protected $paginationTheme = 'bootstrap';
public $perPage = 10;
public $url;
public $searchSelected = 'name';
public $editUserId;
public $deleteUserId;
public $keyword = '';
public $route = '';
public $selectedOption = 'name';
public $searchBy;
public $menu;
public $action = 'list';
public $message;
public $selectedUsers = [];
public $showDeleteListModal = false;
public $showNoPermissionModal = false;
public $showMessage = false;
protected $listeners = ['showUserList', 'deleteItem', 'deleteSelected', 'setShowMessageFalse'];
public function mount()
{
$this->searchBy = [
'name' => 'Name',
];
// $this->message = session('message');
// $this->showMessage = true;
}
public function render() public function render()
{ {
return view('livewire.pages.user.user-index');
// \Log::info('searchSelected:', ['searchSelected' => $this->searchSelected]);
$results = $this->searchSelected && $this->keyword
? User::where($this->searchSelected, 'LIKE', '%' . $this->keyword . '%')->paginate($this->perPage)
: User::paginate($this->perPage);
return view('livewire.pages.user.user-index', [
'results' => $results,
'route' => $this->route,
'url' => $this->url,
'selectedUsers' => $this->selectedUsers,
'showDeleteListModal' => $this->showDeleteListModal
]);
}
public function showUserCreateForm()
{
if (!\Auth::user()->hasPermissions(['add-user'])) {
$this->showNoPermissionModal = TRUE;
return;
}
$this->action = 'create';
}
public function showUserEditForm($UserId)
{
if (!\Auth::user()->hasPermissions(['edit-user'])) {
$this->showNoPermissionModal = TRUE;
return;
}
$this->action = 'edit';
$this->editUserId = $UserId;
}
public function hideMessage()
{
$this->showMessage = false;
}
public function showUserList($message = null)
{
$this->action = 'list';
$this->resetPage();
$this->message = $message;
if ($this->message) {
$this->dispatchBrowserEvent('show-message', ['message' => $this->message]);
}
}
public function paginationView()
{
return 'paginate-custom';
}
public function deleteItem($deleteUserId)
{
if (!\Auth::user()->hasPermissions(['delete-user'])) {
$this->showNoPermissionModal = TRUE;
return;
}
$user = User::find($deleteUserId);
if ($user) {
$user->delete();
$message = "Deleted Successfully";
$this->message = $message;
if ($this->message) {
$this->dispatchBrowserEvent('show-message', ['message' => $this->message]);
}
}
}
public function deleteSelected($selectedUsers)
{
if (!\Auth::user()->hasPermissions(['delete-user'])) {
$this->showNoPermissionModal = TRUE;
return;
}
$userDeleted = User::whereIn("id", $selectedUsers)->pluck('name')->toArray();
$userStr = implode(",", $userDeleted);
User::destroy($selectedUsers);
$message = "Deleted : (" . $userStr . " )Successfully";
$this->message = $message;
$this->selectedUsers = [];
if ($this->message) {
$this->dispatchBrowserEvent('show-message', ['message' => $this->message]);
}
} }
} }
<?php
namespace App\Models;
use Illuminate\Database\Eloquent\Model;
use Illuminate\Database\Eloquent\SoftDeletes;
class Company extends Model
{
use SoftDeletes;
protected $table = 'companies';
protected $fillable = [
'id',
'company_type_id',
'name',
'name_en',
'address',
'district',
'sub_province',
'province',
'postcode',
'contry_code',
'phone',
'fax',
'tax',
'branch',
'tax_incentive',
'created_at',
'updated_at',
];
public function companyType()
{
return $this->belongsTo(CompanyType::class, 'company_type_id');
}
public function groups()
{
return $this->hasMany(Group::class);
}
}
<?php
namespace App\Models;
use Illuminate\Database\Eloquent\Model;
class CompanyType extends Model
{
protected $table = 'company_types';
protected $fillable = [
'id',
'name',
'created_at',
'updated_at',
];
}
<?php
namespace App\Models;
use Illuminate\Database\Eloquent\Model;
class Group extends Model
{
protected $table = 'groups';
protected $fillable = [
'id',
'name',
'company_id',
'created_at',
'updated_at',
];
public function users()
{
return $this->belongsToMany(User::class);
}
public function roles()
{
return $this->belongsToMany(Role::class);
}
public function company()
{
return $this->belongsTo(Company::class , 'comapny_id');
}
}
<?php
namespace App\Models;
use Illuminate\Database\Eloquent\Model;
class GroupRole extends Model
{
protected $table = 'group_role';
protected $fillable = [
'id',
'group_id',
'role_id',
'created_at',
'updated_at',
];
}
<?php
namespace App\Models;
use Illuminate\Database\Eloquent\Model;
class Menu extends Model
{
protected $table = 'menues';
protected $fillable = [
'id',
'name',
'created_at',
'updated_at',
];
}
<?php
namespace App\Models;
use Illuminate\Database\Eloquent\Model;
class MenuRole extends Model
{
protected $table = 'menu_role';
protected $fillable = [
'id',
'menu_id',
'role_id',
'created_at',
'updated_at',
];
}
<?php
namespace App\Models;
use Illuminate\Database\Eloquent\Model;
class Permission extends Model
{
protected $table = 'permissions';
protected $fillable = [
'id',
'name',
'created_at',
'updated_at',
];
public function roles() {
return $this->belongsToMany(Role::class);
}
}
<?php
namespace App\Models;
use Illuminate\Database\Eloquent\Model;
class PermissionRole extends Model
{
protected $table = 'permission_role';
protected $fillable = [
'id',
'role_id',
'permission_id',
'created_at',
'updated_at',
];
}
<?php
namespace App\Models;
use Illuminate\Database\Eloquent\Model;
class Role extends Model
{
protected $table = 'roles';
protected $fillable = [
'id',
'name',
'description',
'created_at',
'updated_at',
];
public function permissions() {
return $this->belongsToMany(Permission::class);
}
public function groups()
{
return $this->belongsToMany(Group::class);
}
}
...@@ -2,9 +2,9 @@ ...@@ -2,9 +2,9 @@
namespace App\Models; namespace App\Models;
use Illuminate\Foundation\Auth\User as Authenticatable; use Illuminate\Database\Eloquent\Model;
class TabUser extends Authenticatable class TabUser extends Model
{ {
protected $table = 'tab_user'; protected $table = 'tab_user';
protected $primaryKey = 'UID'; protected $primaryKey = 'UID';
......
<?php
namespace App\Models;
use Illuminate\Contracts\Auth\MustVerifyEmail;
use Illuminate\Database\Eloquent\Relations\HasManyThrough;
use Illuminate\Database\Eloquent\Factories\HasFactory;
use Illuminate\Foundation\Auth\User as Authenticatable;
use Illuminate\Notifications\Notifiable;
use Laravel\Sanctum\HasApiTokens;
use Illuminate\Database\Eloquent\SoftDeletes;
use Illuminate\Database\Eloquent\Collection;
class User extends Authenticatable
{
use HasApiTokens, HasFactory, Notifiable , SoftDeletes;
/**
* The attributes that are mass assignable.
*
* @var array<int, string>
*/
protected $dates = ['deleted_at'];
protected $fillable = [
'name',
'uid',
'email',
'password',
];
/**
* The attributes that should be hidden for serialization.
*
* @var array<int, string>
*/
protected $hidden = [
'password',
'remember_token',
];
/**
* The attributes that should be cast.
*
* @var array<string, string>
*/
protected $casts = [
'email_verified_at' => 'datetime',
];
public function groups()
{
return $this->belongsToMany(Group::class);
}
public function permissions()
{
// Get the permission IDs through the user's groups and roles
$groupIds = $this->groups()->pluck('groups.id');
$roleIds = GroupRole::whereIn('group_id', $groupIds)->pluck('role_id');
$permissionIds = PermissionRole::whereIn('role_id', $roleIds)->pluck('permission_id');
return Permission::whereIn('id', $permissionIds);
}
public function hasPermissions($permissionName)
{
return $this->permissions()->where('name', $permissionName)->exists();
}
}
<?php
namespace App\Models;
use Illuminate\Database\Eloquent\Model;
class UserGroup extends Model
{
protected $table = 'user_group';
protected $fillable = [
'id',
'group_id',
'user_id',
'created_at',
'updated_at',
];
}
<?php return array (
'code-comparer' => 'App\\Http\\Livewire\\CodeComparer',
'delete-item-modal' => 'App\\Http\\Livewire\\DeleteItemModal',
'delete-modal' => 'App\\Http\\Livewire\\DeleteModal',
'main-container' => 'App\\Http\\Livewire\\MainContainer',
'navbar' => 'App\\Http\\Livewire\\Navbar',
'pages.dischargeport.dischargeport-index' => 'App\\Http\\Livewire\\Pages\\Dischargeport\\DischargeportIndex',
'pages.dischargeport.dischargeport-upload' => 'App\\Http\\Livewire\\Pages\\Dischargeport\\DischargeportUpload',
'pages.exchangerate.exchangerate-create' => 'App\\Http\\Livewire\\Pages\\Exchangerate\\ExchangerateCreate',
'pages.exchangerate.exchangerate-edit' => 'App\\Http\\Livewire\\Pages\\Exchangerate\\ExchangerateEdit',
'pages.exchangerate.exchangerate-index' => 'App\\Http\\Livewire\\Pages\\Exchangerate\\ExchangerateIndex',
'pages.exchangerate.exchangerate-upload' => 'App\\Http\\Livewire\\Pages\\Exchangerate\\ExchangerateUpload',
'pages.parameter.parameter-create' => 'App\\Http\\Livewire\\Pages\\Parameter\\ParameterCreate',
'pages.parameter.parameter-edit' => 'App\\Http\\Livewire\\Pages\\Parameter\\ParameterEdit',
'pages.parameter.parameter-index' => 'App\\Http\\Livewire\\Pages\\Parameter\\ParameterIndex',
'pages.patch.modal-edit-code' => 'App\\Http\\Livewire\\Pages\\Patch\\ModalEditCode',
'pages.patch.patch-create' => 'App\\Http\\Livewire\\Pages\\Patch\\PatchCreate',
'pages.patch.patch-edit' => 'App\\Http\\Livewire\\Pages\\Patch\\PatchEdit',
'pages.patch.patch-index' => 'App\\Http\\Livewire\\Pages\\Patch\\PatchIndex',
'pages.role.role-index' => 'App\\Http\\Livewire\\Pages\\Role\\RoleIndex',
'pages.send-patch.delete-multi-patch' => 'App\\Http\\Livewire\\Pages\\SendPatch\\DeleteMultiPatch',
'pages.send-patch.delete-multi-patch-box' => 'App\\Http\\Livewire\\Pages\\SendPatch\\DeleteMultiPatchBox',
'pages.send-patch.delete-multi-patch-list' => 'App\\Http\\Livewire\\Pages\\SendPatch\\DeleteMultiPatchList',
'pages.send-patch.send-multi-patch-box' => 'App\\Http\\Livewire\\Pages\\SendPatch\\SendMultiPatchBox',
'pages.send-patch.send-multi-patch-list' => 'App\\Http\\Livewire\\Pages\\SendPatch\\SendMultiPatchList',
'pages.send-patch.send-patch' => 'App\\Http\\Livewire\\Pages\\SendPatch\\SendPatch',
'pages.send-patch.send-patch-edit' => 'App\\Http\\Livewire\\Pages\\SendPatch\\SendPatchEdit',
'pages.user.user-index' => 'App\\Http\\Livewire\\Pages\\User\\UserIndex',
);
\ No newline at end of file
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment