Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
@@ -0,0 +1,79 @@
<?php

use EvolutionCMS\Support\ModuleAccess;
use Illuminate\Database\Migrations\Migration;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Support\Facades\DB;
use Illuminate\Support\Facades\Schema;

/**
* Per-role module ACL.
*
* Until now a module could only be restricted by user group, which is a
* different axis than the role a manager user actually has: any user holding
* exec_module could run any unrestricted module, the bundled Extras installer
* included. This table answers "which modules may this role run" directly,
* and is edited from the role screen where the question is asked.
*
* No rows for a module means unrestricted, so nothing changes for existing
* modules. The one exception is Extras, restricted to Administrator here for
* sites that already have it - fresh installs get the same defaults when the
* installer creates the module.
*/
class CreateSiteModuleRolesTable extends Migration
{
public function up()
{
if (!Schema::hasTable('site_module_roles')) {
Schema::create('site_module_roles', function (Blueprint $table) {
$table->comment('Module role access control - defines which user roles may run specific modules');
$table->increments('id');
$table->unsignedInteger('module')->default(0);
$table->unsignedInteger('role')->default(0);
$table->unique(['module', 'role'], 'site_module_roles_module_role');
});
}

$this->applyDefaultRestrictions();
}

public function down()
{
Schema::dropIfExists('site_module_roles');
}

/**
* Restrict bundled modules on sites that already have them installed.
*
* Only modules with no restriction at all are touched, so an administrator
* who has opened a module up keeps that decision.
*/
protected function applyDefaultRestrictions(): void
{
if (!Schema::hasTable('site_modules') || !Schema::hasTable('user_roles')) {
return;
}

foreach (ModuleAccess::DEFAULT_RESTRICTIONS as $name => $roleIds) {
$moduleId = (int) DB::table('site_modules')->where('name', $name)->value('id');
if ($moduleId <= 0) {
continue;
}

if (DB::table('site_module_roles')->where('module', $moduleId)->exists()) {
continue;
}

foreach (ModuleAccess::normalizeRoleIds($roleIds) as $roleId) {
if (!DB::table('user_roles')->where('id', $roleId)->exists()) {
continue;
}

DB::table('site_module_roles')->insert([
'module' => $moduleId,
'role' => $roleId,
]);
}
}
}
}
7 changes: 7 additions & 0 deletions core/lang/az/global.php
Original file line number Diff line number Diff line change
Expand Up @@ -80,6 +80,10 @@
$_lang["tmplvars_type"] = 'Daxil Etmə Növü';
$_lang["tmplvars_widget"] = 'Widget';
$_lang["tmplvars_widget_prop"] = 'Widget Xüsusiyyətləri';
$_lang["role_modules_tab"] = 'Modullar';
$_lang["role_modules_msg"] = 'Bu rolun işə salmasına icazə verilən modullar. Heç kimin məhdudlaşdırmadığı modul bütün rollar üçün əlçatan qalır — buradan işarəni götürmək onu məhdudlaşdırır.';
$_lang["role_modules_admin_msg"] = 'Administrator rolu bütün modulları işə sala bilər.';
$_lang["role_modules_none"] = 'Hələ heç bir modul quraşdırılmayıb.';
$_lang["role_no_tv"] = 'Bu Rol üçün hələ dəyişənlər təyin olunmayıb.';
$_lang["role_notassigned_tv"] = 'Təyin edilə bilən dəyişənlər.';
$_lang["role_tv_msg"] = 'Bu Rola təyin olunmuş dəyişənlər aşağıda göstərilib.';
Expand Down Expand Up @@ -203,6 +207,9 @@
$_lang["module_desc"] = 'Təsvir';
$_lang["module_disabled"] = 'Modul deaktiv edilib';
$_lang["module_edit_click_title"] = 'Bu Modulu redaktə etmək üçün buraya klikləyin';
$_lang["module_exec_no_privileges"] = 'Bu modulu işə salmaq üçün kifayət qədər icazəniz yoxdur.';
$_lang["module_exec_not_found"] = '%s id-li modul tapılmadı.';
$_lang["module_exec_disabled"] = 'Bu modul deaktivdir və işə salına bilməz.';
$_lang["module_group_access_msg"] = 'Bu Modulu İdarəetmə Panelində icra edə biləcək İstifadəçi Qruplarını seçin.';
$_lang["module_management"] = 'Modulları idarə et';
$_lang["module_management_msg"] = 'İcra etmək və ya dəyişdirmək istədiyiniz Modulu seçin. Modulu işə salmaq üçün şəbəkədəki ikona klikləyin. Modulu redaktə etmək üçün onun adına klikləyin.';
Expand Down
7 changes: 7 additions & 0 deletions core/lang/be/global.php
Original file line number Diff line number Diff line change
Expand Up @@ -68,6 +68,10 @@
$_lang["tmplvars_type"] = 'Тып уводу';
$_lang["tmplvars_widget"] = 'Віджэт';
$_lang["tmplvars_widget_prop"] = 'Уласцівасці віджэта';
$_lang["role_modules_tab"] = 'Модулі';
$_lang["role_modules_msg"] = 'Модулі, якія дазволена запускаць гэтай ролі. Модуль, які ніхто не абмежаваў, застаецца даступным усім ролям — зніміце адзнаку, каб абмежаваць яго.';
$_lang["role_modules_admin_msg"] = 'Роля адміністратара можа запускаць любыя модулі.';
$_lang["role_modules_none"] = 'Модулі яшчэ не ўсталяваны.';
$_lang["role_no_tv"] = 'Гэтай ролі яшчэ не было прызначана зменных.';
$_lang["role_notassigned_tv"] = 'Гэтыя зменныя даступныя для прызначэння.';
$_lang["role_tv_msg"] = 'Зменныя, прызначаныя гэтай ролі, пералічаны ніжэй.';
Expand Down Expand Up @@ -191,6 +195,9 @@
$_lang["module_desc"] = 'Апісанне';
$_lang["module_disabled"] = 'Модуль адключаны';
$_lang["module_edit_click_title"] = 'Націсніце тут, каб змяніць гэты модуль';
$_lang["module_exec_no_privileges"] = 'У вас недастаткова правоў для запуску гэтага модуля.';
$_lang["module_exec_not_found"] = 'Модуль з id %s не знойдзены.';
$_lang["module_exec_disabled"] = 'Гэты модуль адключаны і не можа быць запушчаны.';
$_lang["module_group_access_msg"] = 'Выберыце групы карыстальнікаў, якім дазволена выконваць гэты модуль з Менеджара кантэнту.';
$_lang["module_management"] = 'Кіраванне модулямі';
$_lang["module_management_msg"] = 'Выберыце модуль, які вы хочаце выканаць або змяніць. Каб запусціць модуль, націсніце на значок у сетцы. Каб змяніць модуль, націсніце на назву модуля.';
Expand Down
7 changes: 7 additions & 0 deletions core/lang/bg/global.php
Original file line number Diff line number Diff line change
Expand Up @@ -504,6 +504,9 @@
$_lang["module_desc"] = 'Описание';
$_lang["module_disabled"] = 'Модулът е спрян';
$_lang["module_edit_click_title"] = 'Щракнете тук, за да редактирате този модул';
$_lang["module_exec_no_privileges"] = 'Нямате достатъчно права да изпълните този модул.';
$_lang["module_exec_not_found"] = 'Не е намерен модул с id %s.';
$_lang["module_exec_disabled"] = 'Този модул е изключен и не може да бъде изпълнен.';
$_lang["module_group_access_msg"] = 'Изберете потребителските групи, имащи права да стартират този модул от Мениджъра.';
$_lang["module_management"] = 'Управление на Модули';
$_lang["module_management_msg"] = 'Тук можете да изберете модула, който желаете да стартирате или модифицирате. За да стартирате модул, щракнете върху иконата в таблицата. За да модифицирате модул, кликнете върху името на модула.';
Expand Down Expand Up @@ -1249,6 +1252,10 @@
$_lang["check_none"] = "Select none";
$_lang["check_toggle"] = "Toggle selection";

$_lang["role_modules_tab"] = 'Модули';
$_lang["role_modules_msg"] = 'Модули, които тази роля може да изпълнява. Модул, който никой не е ограничил, остава достъпен за всички роли — премахването на отметката тук го ограничава.';
$_lang["role_modules_admin_msg"] = 'Ролята администратор може да изпълнява всички модули.';
$_lang["role_modules_none"] = 'Все още няма инсталирани модули.';
$_lang["role_no_tv"] = 'No Variables have been assigned to this Role yet.';
$_lang["role_notassigned_tv"] = 'These Variables are available for assigning.';
$_lang["role_tv_msg"] = 'The Variables assigned to this Role are listed below.';
Expand Down
7 changes: 7 additions & 0 deletions core/lang/cs/global.php
Original file line number Diff line number Diff line change
Expand Up @@ -504,6 +504,9 @@
$_lang["module_desc"] = 'Popis';
$_lang["module_disabled"] = 'Modul je zakázaný';
$_lang["module_edit_click_title"] = 'Pro úpravu tohoto modulu klikněte zde';
$_lang["module_exec_no_privileges"] = 'Nemáte dostatečná oprávnění ke spuštění tohoto modulu.';
$_lang["module_exec_not_found"] = 'Nebyl nalezen žádný modul s id %s.';
$_lang["module_exec_disabled"] = 'Tento modul je zakázán a nelze jej spustit.';
$_lang["module_group_access_msg"] = 'Zvolte skupiny uživatelů, které mají oprávnění spustit tento modul ve Správci obsahu.';
$_lang["module_management"] = 'Správa modulů';
$_lang["module_management_msg"] = 'Zde můžete zvolit modul, který byste chtěli spustit nebo upravit. Ke spuštění modulu klikněte na ikonu kostky. Pro úpravu modulu klikněte na název modulu.';
Expand Down Expand Up @@ -1253,6 +1256,10 @@
$_lang["check_none"] = "Select none";
$_lang["check_toggle"] = "Toggle selection";

$_lang["role_modules_tab"] = 'Moduly';
$_lang["role_modules_msg"] = 'Moduly, které tato role smí spouštět. Modul, který nikdo neomezil, zůstává dostupný všem rolím — zrušením zaškrtnutí jej omezíte.';
$_lang["role_modules_admin_msg"] = 'Role administrátora může spustit každý modul.';
$_lang["role_modules_none"] = 'Zatím nejsou nainstalovány žádné moduly.';
$_lang["role_no_tv"] = 'No Variables have been assigned to this Role yet.';
$_lang["role_notassigned_tv"] = 'These Variables are available for assigning.';
$_lang["role_tv_msg"] = 'The Variables assigned to this Role are listed below.';
Expand Down
7 changes: 7 additions & 0 deletions core/lang/da/global.php
Original file line number Diff line number Diff line change
Expand Up @@ -505,6 +505,9 @@
$_lang["module_desc"] = 'Beskrivelse';
$_lang["module_disabled"] = 'Modulet deaktiveret';
$_lang["module_edit_click_title"] = 'Klik her for at redigere dette modul';
$_lang["module_exec_no_privileges"] = 'Du har ikke tilstrækkelige rettigheder til at køre dette modul.';
$_lang["module_exec_not_found"] = 'Der blev ikke fundet noget modul med id %s.';
$_lang["module_exec_disabled"] = 'Dette modul er deaktiveret og kan ikke køres.';
$_lang["module_group_access_msg"] = 'Vælg den eller de brugergrupper som har rettigheder til at eksekvere dette modul indefra CMS\'et.';
$_lang["module_management"] = 'Administrer moduler';
$_lang["module_management_msg"] = 'Vælg det modul du vil eksekvere eller redigere. For at køre modulet skal man klikke på ikonet i oversigten. For at redigere modulet skal man klikke på modulets navn.';
Expand Down Expand Up @@ -1252,6 +1255,10 @@
$_lang["check_none"] = "Select none";
$_lang["check_toggle"] = "Toggle selection";

$_lang["role_modules_tab"] = 'Moduler';
$_lang["role_modules_msg"] = 'Moduler, som denne rolle må køre. Et modul, som ingen har begrænset, er tilgængeligt for alle roller — det er fjernelsen af fluebenet her, der begrænser det.';
$_lang["role_modules_admin_msg"] = 'Administratorrollen kan køre alle moduler.';
$_lang["role_modules_none"] = 'Der er endnu ikke installeret nogen moduler.';
$_lang["role_no_tv"] = 'No Variables have been assigned to this Role yet.';
$_lang["role_notassigned_tv"] = 'These Variables are available for assigning.';
$_lang["role_tv_msg"] = 'The Variables assigned to this Role are listed below.';
Expand Down
7 changes: 7 additions & 0 deletions core/lang/de/global.php
Original file line number Diff line number Diff line change
Expand Up @@ -541,6 +541,9 @@
$_lang["module_desc"] = 'Beschreibung';
$_lang["module_disabled"] = 'Modul deaktivieren';
$_lang["module_edit_click_title"] = 'Klicken Sie hier, um das Modul zu bearbeiten';
$_lang["module_exec_no_privileges"] = 'Sie haben nicht genügend Rechte, um dieses Modul auszuführen.';
$_lang["module_exec_not_found"] = 'Kein Modul mit der ID %s gefunden.';
$_lang["module_exec_disabled"] = 'Dieses Modul ist deaktiviert und kann nicht ausgeführt werden.';
$_lang["module_group_access_msg"] = 'Wählen Sie die Benutzergruppen aus, die dieses Modul innerhalb des MODX-Managers ausführen dürfen.';
$_lang["module_management"] = 'Modul-Verwaltung';
$_lang["module_management_msg"] = 'In dieser Übersicht können Sie Module ausführen und bearbeiten. Um ein Modul zu starten, klicken Sie auf das Symbol des Moduls, für die Bearbeitung auf den Namen.';
Expand Down Expand Up @@ -1477,6 +1480,10 @@
$_lang['manager_menu_position_left'] = 'links';
$_lang['invalid_event_response'] = 'Der Event "%s" verursachte eine invalide Ausgabe.';

$_lang["role_modules_tab"] = 'Module';
$_lang["role_modules_msg"] = 'Module, die diese Rolle ausführen darf. Ein Modul, das niemand eingeschränkt hat, bleibt für alle Rollen verfügbar — das Häkchen hier zu entfernen schränkt es ein.';
$_lang["role_modules_admin_msg"] = 'Die Administratorrolle kann jedes Modul ausführen.';
$_lang["role_modules_none"] = 'Es sind noch keine Module installiert.';
$_lang["role_no_tv"] = 'No Variables have been assigned to this Role yet.';
$_lang["role_notassigned_tv"] = 'These Variables are available for assigning.';
$_lang["role_tv_msg"] = 'The Variables assigned to this Role are listed below.';
Expand Down
7 changes: 7 additions & 0 deletions core/lang/en/global.php
Original file line number Diff line number Diff line change
Expand Up @@ -560,6 +560,9 @@
$_lang["module_desc"] = 'Description';
$_lang["module_disabled"] = 'Module disabled';
$_lang["module_edit_click_title"] = 'Click here to edit this Module';
$_lang["module_exec_no_privileges"] = 'You do not have sufficient privileges to execute this Module.';
$_lang["module_exec_not_found"] = 'No Module found for id %s.';
$_lang["module_exec_disabled"] = 'This Module is disabled and cannot be executed.';
$_lang["module_group_access_msg"] = 'Select the User Groups that are allowed to execute this Module from within the Content Manager.';
$_lang["module_management"] = 'Manage Modules';
$_lang["module_management_msg"] = 'Choose the Module you would like to execute or modify. To run the Module click on the icon in the grid. To modify the Module click on the name of the Module.';
Expand Down Expand Up @@ -1543,6 +1546,10 @@
$_lang["lang_key_desc"] = 'Key language from array $_lang';
$_lang["key_desc"] = 'Key for checked permission';

$_lang["role_modules_tab"] = 'Modules';
$_lang["role_modules_msg"] = 'Modules this role is allowed to run. A module nobody has restricted stays available to every role - unticking it here is what restricts it.';
$_lang["role_modules_admin_msg"] = 'The administrator role can run every module.';
$_lang["role_modules_none"] = 'No modules have been installed yet.';
$_lang["role_no_tv"] = 'No Variables have been assigned to this Role yet.';
$_lang["role_notassigned_tv"] = 'These Variables are available for assigning.';
$_lang["role_tv_msg"] = 'The Variables assigned to this Role are listed below.';
Expand Down
7 changes: 7 additions & 0 deletions core/lang/es/global.php
Original file line number Diff line number Diff line change
Expand Up @@ -543,6 +543,9 @@
$_lang["module_desc"] = 'Descripción';
$_lang["module_disabled"] = 'Modulo deshabilitado';
$_lang["module_edit_click_title"] = 'Haz clic aquí para editar este módulo';
$_lang["module_exec_no_privileges"] = 'No tiene privilegios suficientes para ejecutar este módulo.';
$_lang["module_exec_not_found"] = 'No se encontró ningún módulo con el id %s.';
$_lang["module_exec_disabled"] = 'Este módulo está desactivado y no se puede ejecutar.';
$_lang["module_group_access_msg"] = 'Selecciona los grupos de usuarios que tienen permitido ejecutar este módulo desde el Administrador de Contenido.';
$_lang["module_management"] = 'Administrar Módulos';
$_lang["module_management_msg"] = 'Elige el módulo que quisieras ejecutar o modificar. Para correr el módulo haz clic en el icono en la cuadrícula. Para modificarlo ´haz clic en el nombre del módulo.';
Expand Down Expand Up @@ -1486,6 +1489,10 @@
$_lang['enable_mootools'] = 'Habilitar Mootools en el administrador';
$_lang['enable_mootools_message'] = 'Cargue Mootools.js en el administrador para compatibilidad con versiones anteriores';

$_lang["role_modules_tab"] = 'Módulos';
$_lang["role_modules_msg"] = 'Módulos que este rol puede ejecutar. Un módulo que nadie ha restringido sigue disponible para todos los roles: desmarcarlo aquí es lo que lo restringe.';
$_lang["role_modules_admin_msg"] = 'El rol de administrador puede ejecutar cualquier módulo.';
$_lang["role_modules_none"] = 'Todavía no hay módulos instalados.';
$_lang["role_no_tv"] = 'No Variables have been assigned to this Role yet.';
$_lang["role_notassigned_tv"] = 'These Variables are available for assigning.';
$_lang["role_tv_msg"] = 'The Variables assigned to this Role are listed below.';
Expand Down
7 changes: 7 additions & 0 deletions core/lang/fa/global.php
Original file line number Diff line number Diff line change
Expand Up @@ -505,6 +505,9 @@
$_lang["module_desc"] = 'توضیحات';
$_lang["module_disabled"] = 'تعلیق ماژول';
$_lang["module_edit_click_title"] = 'برای ویرایش ماژول اینجا کلیک کنید';
$_lang["module_exec_no_privileges"] = 'شما دسترسی کافی برای اجرای این ماژول را ندارید.';
$_lang["module_exec_not_found"] = 'ماژولی با شناسه %s یافت نشد.';
$_lang["module_exec_disabled"] = 'این ماژول غیرفعال است و نمی‌تواند اجرا شود.';
$_lang["module_group_access_msg"] = 'گروههای کاربری که مجاز به اجرای این ماژول در بخش مدیریت محتوا هستند را انتخاب کنید.';
$_lang["module_management"] = 'مدیریت ماژولها';
$_lang["module_management_msg"] = 'در اینجا شما میتوانید ماژول مورد نظر خود را برای اجرا یا تنظیم انتخاب کنید. برای اجرای ماژول روی نماد یا آیکون در داخل همان قسمت کلیک کنید. برای تنظیم ماژول روی اسم ان کلیک کنید.';
Expand Down Expand Up @@ -1250,6 +1253,10 @@
$_lang["check_none"] = "Select none";
$_lang["check_toggle"] = "Toggle selection";

$_lang["role_modules_tab"] = 'ماژول‌ها';
$_lang["role_modules_msg"] = 'ماژول‌هایی که این نقش اجازه اجرای آن‌ها را دارد. ماژولی که کسی آن را محدود نکرده باشد برای همه نقش‌ها در دسترس است؛ برداشتن تیک در اینجا آن را محدود می‌کند.';
$_lang["role_modules_admin_msg"] = 'نقش مدیر می‌تواند همه ماژول‌ها را اجرا کند.';
$_lang["role_modules_none"] = 'هنوز هیچ ماژولی نصب نشده است.';
$_lang["role_no_tv"] = 'No Variables have been assigned to this Role yet.';
$_lang["role_notassigned_tv"] = 'These Variables are available for assigning.';
$_lang["role_tv_msg"] = 'The Variables assigned to this Role are listed below.';
Expand Down
Loading