From 08f65d319ce3fdae14544dcb7ca93ff3d20319ac Mon Sep 17 00:00:00 2001 From: Waleed Muhammad Date: Fri, 23 Sep 2022 12:55:24 +0500 Subject: [PATCH 1/4] CUR-3978 assigned default ui and backend permissions for all default role of all organization --- ...500023_organization_role_ui_permission.php | 30 ++++ .../OrganizationRoleUiPermissionSeeder.php | 160 ++++++++++++++++++ 2 files changed, 190 insertions(+) create mode 100644 database/migrations/2022_09_23_500023_organization_role_ui_permission.php create mode 100644 database/seeds/OrganizationRoleUiPermissionSeeder.php diff --git a/database/migrations/2022_09_23_500023_organization_role_ui_permission.php b/database/migrations/2022_09_23_500023_organization_role_ui_permission.php new file mode 100644 index 000000000..3b4e3c955 --- /dev/null +++ b/database/migrations/2022_09_23_500023_organization_role_ui_permission.php @@ -0,0 +1,30 @@ + OrganizationRoleUiPermissionSeeder::class, + '--force' => true + ]); + } + + /** + * Reverse the migrations. + * + * @return void + */ + public function down() + { + // + } +} diff --git a/database/seeds/OrganizationRoleUiPermissionSeeder.php b/database/seeds/OrganizationRoleUiPermissionSeeder.php new file mode 100644 index 000000000..e5c19f3d6 --- /dev/null +++ b/database/seeds/OrganizationRoleUiPermissionSeeder.php @@ -0,0 +1,160 @@ + "Edit", + "All Independent Activities" => "Edit", + "Export/Import Activities" => "Edit", + "All Projects" => "Edit", + "Import/Export Projects" => "Edit", + "Activity Types" => "Edit", + "Activity Items" => "Edit", + "Manage Users" => "Edit", + "Manage Roles" => "Edit", + "LMS Settings" => "Edit", + "LTI Tools" => "Edit", + "BrightCove" => "Edit", + "Project" => "Edit", + "Playlist" => "Edit", + "Activity" => "Edit", + "Team" => "Edit", + "Independent Activity" => "Edit", + "My Interactive Video" => "None" + ]; + + $courseCreatorUiPermissions = [ + "Organiziation" => "None", + "All Independent Activities" => "None", + "Export/Import Activities" => "None", + "All Projects" => "None", + "Import/Export Projects" => "None", + "Activity Types" => "None", + "Activity Items" => "None", + "Manage Users" => "None", + "Manage Roles" => "None", + "LMS Settings" => "None", + "LTI Tools" => "None", + "BrightCove" => "None", + "Project" => "Edit", + "Playlist" => "Edit", + "Activity" => "Edit", + "Team" => "Edit", + "Independent Activity" => "Edit", + "My Interactive Video" => "None" + ]; + + $memberUiPermissions = [ + "Organiziation" => "None", + "All Independent Activities" => "None", + "Export/Import Activities" => "None", + "All Projects" => "None", + "Import/Export Projects" => "None", + "Activity Types" => "None", + "Activity Items" => "None", + "Manage Users" => "None", + "Manage Roles" => "None", + "LMS Settings" => "None", + "LTI Tools" => "None", + "BrightCove" => "None", + "Project" => "View", + "Playlist" => "View", + "Activity" => "View", + "Team" => "View", + "Independent Activity" => "View", + "My Interactive Video" => "None" + ]; + + $selfRegisteredUiPermissions = [ + "Organiziation" => "None", + "All Independent Activities" => "None", + "Export/Import Activities" => "None", + "All Projects" => "None", + "Import/Export Projects" => "None", + "Activity Types" => "None", + "Activity Items" => "None", + "Manage Users" => "None", + "Manage Roles" => "None", + "LMS Settings" => "None", + "LTI Tools" => "None", + "BrightCove" => "None", + "Project" => "Edit", + "Playlist" => "Edit", + "Activity" => "Edit", + "Team" => "Edit", + "Independent Activity" => "Edit", + "My Interactive Video" => "None" + ]; + + $roleTypes = OrganizationRoleType::whereIn('name', ['admin', 'course_creator', 'member', 'self_registered'])->get(); + $this->uiModules = DB::table('ui_modules')->whereNotNull('parent_id')->pluck('id', 'title'); + + $uiModulePermissionsList = []; + $uiModulePermissionsResult = DB::table('ui_module_permissions')->get(); + + foreach ($uiModulePermissionsResult as $uiModulePermission) { + $uiModulePermissionsList[$uiModulePermission->title][$uiModulePermission->ui_module_id] = $uiModulePermission->id; + } + + $this->uiModulePermissions = $uiModulePermissionsList; + + $this->domain = request()->getHttpHost(); + + foreach ($roleTypes as $roleType) { + if ($roleType->name === 'admin') { + $this->assignPermissions($adminUiPermissions, $roleType); + } else if ($roleType->name === 'course_creator') { + $this->assignPermissions($courseCreatorUiPermissions, $roleType); + } else if ($roleType->name === 'member') { + $this->assignPermissions($memberUiPermissions, $roleType); + } else if ($roleType->name === 'self_registered') { + $this->assignPermissions($selfRegisteredUiPermissions, $roleType); + } + } + } + + function assignPermissions($uiPermissions, $roleType) + { + $uiModulePermissionIds = []; + + foreach ($uiPermissions as $permissionName => $permissionType) { + + if ($this->domain === 'currikistudio.org') { + if ($permissionName === 'Team' && ($roleType->name === 'course_creator' || $roleType->name === 'self_registered')) { + $permissionType = 'View'; + } + } else if ($this->domain === 'oci.currikistudio.org') { + if ($permissionName === 'Independent Activity') { + $permissionType = 'None'; + } else if ($permissionName === 'My Interactive Video') { + $permissionType = 'View'; + } + } + + if (isset($this->uiModules[$permissionName]) && $this->uiModulePermissions[$permissionType][$this->uiModules[$permissionName]]) { + $uiModulePermissionIds[] = $this->uiModulePermissions[$permissionType][$this->uiModules[$permissionName]]; + } + } + // assign ui role permissions + $roleType->uiModulePermissions()->sync($uiModulePermissionIds); + // assign backend role permissions + $UiOrganizationPermissionMappingRepository = resolve(UiOrganizationPermissionMappingRepositoryInterface::class); + $organizationPermissionTypeIds = $UiOrganizationPermissionMappingRepository->getOrganizationPermissionTypeIds($uiModulePermissionIds); + $roleType->permissions()->sync($organizationPermissionTypeIds); + } +} From 202c3ba19acce7a0cd13beb510e352027ebf8f3c Mon Sep 17 00:00:00 2001 From: Waleed Muhammad Date: Fri, 23 Sep 2022 15:32:22 +0500 Subject: [PATCH 2/4] CUR-3978 some changes --- .../OrganizationRoleUiPermissionSeeder.php | 17 ++++++++++------- 1 file changed, 10 insertions(+), 7 deletions(-) diff --git a/database/seeds/OrganizationRoleUiPermissionSeeder.php b/database/seeds/OrganizationRoleUiPermissionSeeder.php index e5c19f3d6..b671cb8d6 100644 --- a/database/seeds/OrganizationRoleUiPermissionSeeder.php +++ b/database/seeds/OrganizationRoleUiPermissionSeeder.php @@ -146,15 +146,18 @@ function assignPermissions($uiPermissions, $roleType) } } - if (isset($this->uiModules[$permissionName]) && $this->uiModulePermissions[$permissionType][$this->uiModules[$permissionName]]) { + if (isset($this->uiModules[$permissionName]) && isset($this->uiModulePermissions[$permissionType][$this->uiModules[$permissionName]])) { $uiModulePermissionIds[] = $this->uiModulePermissions[$permissionType][$this->uiModules[$permissionName]]; } } - // assign ui role permissions - $roleType->uiModulePermissions()->sync($uiModulePermissionIds); - // assign backend role permissions - $UiOrganizationPermissionMappingRepository = resolve(UiOrganizationPermissionMappingRepositoryInterface::class); - $organizationPermissionTypeIds = $UiOrganizationPermissionMappingRepository->getOrganizationPermissionTypeIds($uiModulePermissionIds); - $roleType->permissions()->sync($organizationPermissionTypeIds); + + return DB::transaction(function () use($uiModulePermissionIds, $roleType) { + // assign ui role permissions + $roleType->uiModulePermissions()->sync($uiModulePermissionIds); + // assign backend role permissions + $UiOrganizationPermissionMappingRepository = resolve(UiOrganizationPermissionMappingRepositoryInterface::class); + $organizationPermissionTypeIds = $UiOrganizationPermissionMappingRepository->getOrganizationPermissionTypeIds($uiModulePermissionIds); + $roleType->permissions()->sync($organizationPermissionTypeIds); + }); } } From 826d8ba18aad9a4ec0a0662741c71606a1d496e3 Mon Sep 17 00:00:00 2001 From: Waleed Muhammad Date: Fri, 23 Sep 2022 16:46:19 +0500 Subject: [PATCH 3/4] CUR-3978 some changes --- .../OrganizationRoleUiPermissionSeeder.php | 41 ++++++++++--------- 1 file changed, 21 insertions(+), 20 deletions(-) diff --git a/database/seeds/OrganizationRoleUiPermissionSeeder.php b/database/seeds/OrganizationRoleUiPermissionSeeder.php index b671cb8d6..7dad4c979 100644 --- a/database/seeds/OrganizationRoleUiPermissionSeeder.php +++ b/database/seeds/OrganizationRoleUiPermissionSeeder.php @@ -115,17 +115,19 @@ public function run() $this->domain = request()->getHttpHost(); - foreach ($roleTypes as $roleType) { - if ($roleType->name === 'admin') { - $this->assignPermissions($adminUiPermissions, $roleType); - } else if ($roleType->name === 'course_creator') { - $this->assignPermissions($courseCreatorUiPermissions, $roleType); - } else if ($roleType->name === 'member') { - $this->assignPermissions($memberUiPermissions, $roleType); - } else if ($roleType->name === 'self_registered') { - $this->assignPermissions($selfRegisteredUiPermissions, $roleType); + return DB::transaction(function () use($roleTypes, $adminUiPermissions, $courseCreatorUiPermissions, $memberUiPermissions, $selfRegisteredUiPermissions) { + foreach ($roleTypes as $roleType) { + if ($roleType->name === 'admin') { + $this->assignPermissions($adminUiPermissions, $roleType); + } else if ($roleType->name === 'course_creator') { + $this->assignPermissions($courseCreatorUiPermissions, $roleType); + } else if ($roleType->name === 'member') { + $this->assignPermissions($memberUiPermissions, $roleType); + } else if ($roleType->name === 'self_registered') { + $this->assignPermissions($selfRegisteredUiPermissions, $roleType); + } } - } + }); } function assignPermissions($uiPermissions, $roleType) @@ -146,18 +148,17 @@ function assignPermissions($uiPermissions, $roleType) } } - if (isset($this->uiModules[$permissionName]) && isset($this->uiModulePermissions[$permissionType][$this->uiModules[$permissionName]])) { - $uiModulePermissionIds[] = $this->uiModulePermissions[$permissionType][$this->uiModules[$permissionName]]; + $uiPermissionName = $this->uiModules[$permissionName]; + if (isset($uiPermissionName) && isset($this->uiModulePermissions[$permissionType][$uiPermissionName])) { + $uiModulePermissionIds[] = $this->uiModulePermissions[$permissionType][$uiPermissionName]; } } - return DB::transaction(function () use($uiModulePermissionIds, $roleType) { - // assign ui role permissions - $roleType->uiModulePermissions()->sync($uiModulePermissionIds); - // assign backend role permissions - $UiOrganizationPermissionMappingRepository = resolve(UiOrganizationPermissionMappingRepositoryInterface::class); - $organizationPermissionTypeIds = $UiOrganizationPermissionMappingRepository->getOrganizationPermissionTypeIds($uiModulePermissionIds); - $roleType->permissions()->sync($organizationPermissionTypeIds); - }); + // assign ui role permissions + $roleType->uiModulePermissions()->sync($uiModulePermissionIds); + // assign backend role permissions + $UiOrganizationPermissionMappingRepository = resolve(UiOrganizationPermissionMappingRepositoryInterface::class); + $organizationPermissionTypeIds = $UiOrganizationPermissionMappingRepository->getOrganizationPermissionTypeIds($uiModulePermissionIds); + $roleType->permissions()->sync($organizationPermissionTypeIds); } } From 946d03a49c8e76f3b634bc8eb317f695c4a22bd2 Mon Sep 17 00:00:00 2001 From: Waleed Muhammad Date: Fri, 23 Sep 2022 17:55:48 +0500 Subject: [PATCH 4/4] CUR-3978 some changes --- .../OrganizationRoleUiPermissionSeeder.php | 18 +++++++++++------- 1 file changed, 11 insertions(+), 7 deletions(-) diff --git a/database/seeds/OrganizationRoleUiPermissionSeeder.php b/database/seeds/OrganizationRoleUiPermissionSeeder.php index 7dad4c979..7e0613c20 100644 --- a/database/seeds/OrganizationRoleUiPermissionSeeder.php +++ b/database/seeds/OrganizationRoleUiPermissionSeeder.php @@ -136,10 +136,12 @@ function assignPermissions($uiPermissions, $roleType) foreach ($uiPermissions as $permissionName => $permissionType) { - if ($this->domain === 'currikistudio.org') { - if ($permissionName === 'Team' && ($roleType->name === 'course_creator' || $roleType->name === 'self_registered')) { - $permissionType = 'View'; - } + if ( + $this->domain === 'currikistudio.org' && + $permissionName === 'Team' && + ($roleType->name === 'course_creator' || $roleType->name === 'self_registered') + ) { + $permissionType = 'View'; } else if ($this->domain === 'oci.currikistudio.org') { if ($permissionName === 'Independent Activity') { $permissionType = 'None'; @@ -148,9 +150,11 @@ function assignPermissions($uiPermissions, $roleType) } } - $uiPermissionName = $this->uiModules[$permissionName]; - if (isset($uiPermissionName) && isset($this->uiModulePermissions[$permissionType][$uiPermissionName])) { - $uiModulePermissionIds[] = $this->uiModulePermissions[$permissionType][$uiPermissionName]; + if (isset($this->uiModules[$permissionName])) { + $uiPermissionName = $this->uiModules[$permissionName]; + if (isset($this->uiModulePermissions[$permissionType][$uiPermissionName])) { + $uiModulePermissionIds[] = $this->uiModulePermissions[$permissionType][$uiPermissionName]; + } } }