Skip to content

Commit 71f35e2

Browse files
committed
Merge remote-tracking branch 'origin/next' into feature/FOUR-10750
2 parents ee4933c + 2b0afe3 commit 71f35e2

50 files changed

Lines changed: 804 additions & 329 deletions

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

‎.github/workflows/deploy-pm4.yml‎

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -36,6 +36,10 @@ env:
3636
GITHUB_COMMENT: ${{ secrets.GH_COMMENT }}
3737
pull_req_id: ${{github.event.pull_request.number}}
3838
BASE: ${{ contains(github.event.pull_request.body, 'ci:next') && 'ci-base-php82' || 'ci-base' }}
39+
CDATA_LICENSE_DOCUSIGN: ${{ secrets.CDATA_LICENSE_DOCUSIGN }}
40+
CDATA_LICENSE_EXCEL: ${{ secrets.CDATA_LICENSE_EXCEL }}
41+
CDATA_LICENSE_GITHUB: ${{ secrets.CDATA_LICENSE_GITHUB }}
42+
CDATA_LICENSE_SLACK: ${{ secrets.CDATA_LICENSE_SLACK }}
3943
concurrency:
4044
group: ${{ github.workflow }}-${{ github.event.pull_request.number || github.ref }}
4145
cancel-in-progress: true
@@ -206,4 +210,3 @@ jobs:
206210
cd pm4-stm-docker/deploy-stm
207211
composer install --no-dev
208212
php run-delete-instance.php
209-

‎ProcessMaker/Http/Controllers/AboutController.php‎

Lines changed: 10 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -84,6 +84,7 @@ public function index()
8484
});
8585

8686
$view = request()->get('partial') === 'ms' ? 'about.microservices' : 'about.index';
87+
8788
return view($view,
8889
compact(
8990
'packages',
@@ -100,8 +101,14 @@ private function getAiMicroService()
100101
{
101102
if (hasPackage('package-ai')) {
102103
$url = config('app.ai_microservice_host') . '/pm/getVersion';
103-
$response = Http::post($url, []);
104-
104+
try {
105+
$response = Http::post($url, []);
106+
} catch (\Throwable $th) {
107+
return [
108+
'name' => 'Pmai microservice',
109+
'waiting' => true,
110+
];
111+
}
105112
return $response->json();
106113
}
107114

@@ -125,6 +132,7 @@ private function getNayraMicroServiceAbout(): ?array
125132
'waiting' => true,
126133
];
127134
}
135+
128136
return $about;
129137
}
130138

‎ProcessMaker/Http/Controllers/Api/GroupController.php‎

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -69,7 +69,9 @@ public function index(Request $request)
6969
{
7070
if (!(Auth::user()->can('view-groups') ||
7171
Auth::user()->can('create-processes') ||
72-
Auth::user()->can('edit-processes'))) {
72+
Auth::user()->can('edit-processes') ||
73+
Auth::user()->can('create-projects') ||
74+
Auth::user()->can('view-projects'))) {
7375
throw new AuthorizationException(__('Not authorized to view groups.'));
7476
}
7577
$include = $request->input('include', '');

‎ProcessMaker/Http/Controllers/Api/TaskController.php‎

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -122,7 +122,7 @@ public function index(Request $request, $getTotal = false, User $user = null)
122122
'process_request_tokens.status' => 'status',
123123
'element_id',
124124
'element_name',
125-
'process_request_id'
125+
'process_request_id',
126126
];
127127
$parameters = $request->all();
128128
foreach ($parameters as $column => $fieldFilter) {
@@ -223,7 +223,7 @@ public function index(Request $request, $getTotal = false, User $user = null)
223223
preg_match($regex, $e->getMessage(), $m);
224224

225225
return response([
226-
'message' => __('PMQL Is Invalid.') . ' ' . __('Column not found: ') . '"' . $m[1] . '"'
226+
'message' => __('PMQL Is Invalid.') . ' ' . __('Column not found: ') . '"' . $m[1] . '"',
227227
], 422);
228228
}
229229

@@ -233,6 +233,7 @@ public function index(Request $request, $getTotal = false, User $user = null)
233233
if ($request->input('status') === 'CLOSED') {
234234
return $user->can('view', $processRequestToken->processRequest);
235235
}
236+
236237
return $user->can('view', $processRequestToken);
237238
})->values();
238239
}

‎ProcessMaker/Http/Controllers/Api/UserController.php‎

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -81,7 +81,9 @@ public function index(Request $request)
8181
{
8282
if (!(Auth::user()->can('view-users') ||
8383
Auth::user()->can('create-processes') ||
84-
Auth::user()->can('edit-processes'))) {
84+
Auth::user()->can('edit-processes') ||
85+
Auth::user()->can('create-projects') ||
86+
Auth::user()->can('view-projects'))) {
8587
throw new AuthorizationException(__('Not authorized to view users.'));
8688
}
8789
$query = User::nonSystem();

‎ProcessMaker/Http/Controllers/Designer/DesignerController.php‎

Lines changed: 5 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@
44

55
use Illuminate\Auth\Access\AuthorizationException;
66
use Illuminate\Http\Request;
7+
use Illuminate\Support\Composer;
78
use Illuminate\Support\Facades\Auth;
89
use ProcessMaker\Http\Controllers\Controller;
910
use ProcessMaker\Traits\HasControllerAddons;
@@ -19,36 +20,16 @@ class DesignerController extends Controller
1920
*/
2021
public function index(Request $request)
2122
{
22-
$redirect = $this->checkAuth();
23-
if ($redirect) {
24-
return redirect()->route($redirect);
23+
$hasPackage = false;
24+
if (class_exists(\ProcessMaker\Package\Projects\Models\Project::class)) {
25+
$hasPackage = true;
2526
}
2627

2728
$listConfig = (object) [
2829
'status' => $request->input('status'),
30+
'hasPackage' => $hasPackage
2931
];
3032

3133
return view('designer.index', compact('listConfig'));
3234
}
33-
34-
private function checkAuth()
35-
{
36-
$perm = 'view-processes|view-process-categories|view-scripts|view-screens|view-environment_variables|view-projects';
37-
switch (Auth::user()->canAnyFirst($perm)) {
38-
case 'view-processes':
39-
return false; // already on index, continue with it
40-
case 'view-process-categories':
41-
return 'process-categories.index';
42-
case 'view-scripts':
43-
return 'scripts.index';
44-
case 'view-screens':
45-
return 'screens.index';
46-
case 'view-environment_variables':
47-
return 'environment-variables.index';
48-
case 'view-projects':
49-
return 'projects.index';
50-
default:
51-
throw new AuthorizationException();
52-
}
53-
}
5435
}

‎ProcessMaker/Http/Controllers/HomeController.php‎

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,14 +4,18 @@
44

55
use Illuminate\Http\Request;
66
use Illuminate\Support\Facades\Auth;
7+
use ProcessMaker\Helpers\MobileHelper;
78
use ProcessMaker\Http\Controllers\Controller;
89

910
class HomeController extends Controller
1011
{
1112
public function index(Request $request)
1213
{
1314
if (Auth::check()) {
14-
if (class_exists(\ProcessMaker\Package\PackageDynamicUI\Models\DynamicUI::class)) {
15+
$isMobile = (
16+
isset($_SERVER['HTTP_USER_AGENT']) && MobileHelper::isMobile($_SERVER['HTTP_USER_AGENT'])
17+
) ? true : false;
18+
if (!$isMobile && class_exists(\ProcessMaker\Package\PackageDynamicUI\Models\DynamicUI::class)) {
1519
$user = \Auth::user();
1620
$homePage = \ProcessMaker\Package\PackageDynamicUI\Models\DynamicUI::getHomePage($user);
1721

‎ProcessMaker/Http/Middleware/GenerateMenus.php‎

Lines changed: 26 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -143,35 +143,35 @@ public function handle(Request $request, Closure $next)
143143

144144
Menu::make('sidebar_processes', function ($menu) {
145145
$submenu = $menu->add(__('Designer'));
146-
if (\Auth::check() && \Auth::user()->can('view-processes')) {
146+
if ($this->userHasPermission('view-processes')) {
147147
$submenu->add(__('Processes'), [
148148
'route' => 'processes.index',
149149
'icon' => 'fa-play-circle',
150150
'id' => 'processes',
151151
])->data('order', 0);
152152
}
153-
if (\Auth::check() && \Auth::user()->can('view-scripts')) {
153+
if ($this->userHasPermission('view-scripts')) {
154154
$submenu->add(__('Scripts'), [
155155
'route' => 'scripts.index',
156156
'icon' => 'fa-code',
157157
'id' => 'process-scripts',
158158
])->data('order', 2);
159159
}
160-
if (\Auth::check() && \Auth::user()->can('view-screens')) {
160+
if ($this->userHasPermission('view-screens')) {
161161
$submenu->add(__('Screens'), [
162162
'route' => 'screens.index',
163163
'icon' => 'fa-file-alt',
164164
'id' => 'process-screens',
165165
])->data('order', 3);
166166
}
167-
if (\Auth::check() && \Auth::user()->can('view-environment_variables')) {
167+
if ($this->userHasPermission('view-environment_variables')) {
168168
$submenu->add(__('Environment Variables'), [
169169
'route' => 'environment-variables.index',
170170
'icon' => 'fa-lock',
171171
'id' => 'process-environment',
172172
])->data('order', 4);
173173
}
174-
if (\Auth::check() && \Auth::user()->can('edit-processes')) {
174+
if ($this->userHasPermission('edit-processes')) {
175175
$submenu->add(__('Signals'), [
176176
'route' => 'signals.index',
177177
'customicon' => 'nav-icon fas bpmn-icon-end-event-signal',
@@ -262,4 +262,25 @@ public function handle(Request $request, Closure $next)
262262

263263
return $next($request);
264264
}
265+
266+
private function userHasPermission($permission)
267+
{
268+
$user = \Auth::user();
269+
270+
if (!$user) {
271+
return false;
272+
}
273+
274+
if ($user->is_administrator) {
275+
return true;
276+
}
277+
278+
// Fetch the user's permissions and check if the user has the specific permission
279+
$userPermissions = $user->permissions->pluck('group')->unique()->toArray();
280+
if ($user->can($permission) && count($userPermissions) === 1 && $userPermissions[0] === 'Projects') {
281+
return false; // Deny UI access if the user has only the 'Projects' permission
282+
}
283+
284+
return $user->can($permission);
285+
}
265286
}

‎ProcessMaker/Nayra/Managers/WorkflowManagerKafka.php‎

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,6 @@
66

77
class WorkflowManagerKafka extends WorkflowManagerRabbitMq implements WorkflowManagerInterface
88
{
9-
109
public function __construct()
1110
{
1211
// add prefix to the topic names

‎ProcessMaker/Nayra/Managers/WorkflowManagerRabbitMq.php‎

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -49,6 +49,7 @@ class WorkflowManagerRabbitMq extends WorkflowManagerDefault implements Workflow
4949
const ACTION_TASK_FAILED = 'TASK_FAILED';
5050

5151
protected $TOPIC_SCRIPTS = 'scripts';
52+
5253
protected $TOPIC_REQUESTS = 'requests';
5354

5455
/**

0 commit comments

Comments
 (0)