resolveFormId($request); if ($formId) { return Acl::hasPermission('fluentform_entries_viewer', $formId); } return Acl::hasPermission('fluentform_entries_viewer'); } private function canAccessDashboardReport(Request $request) { if (!Acl::hasPermission('fluentform_dashboard_access')) { return false; } return $this->canAccessReportData($request); } private function canAccessRequestedForm(Request $request) { return $this->canAccessReportData($request); } private function canAccessOptionalFormScopedReport(Request $request) { if (!Acl::hasPermission('fluentform_dashboard_access')) { return false; } $formId = $this->resolveFormId($request); if ($formId) { return Acl::hasPermission('fluentform_entries_viewer', $formId); } if (!Acl::hasPermission('fluentform_entries_viewer')) { return false; } $userId = get_current_user_id(); return !$userId || !FormManagerService::hasSpecificFormsPermission($userId); } /** * Check permission for any method * * @param \FluentForm\Framework\Request\Request $request * @return bool */ public function verifyRequest(Request $request) { return Acl::hasPermission('fluentform_dashboard_access'); } public function form(Request $request) { return $this->canAccessRequestedForm($request); } public function submissions(Request $request) { return $this->canAccessRequestedForm($request); } public function getOverviewChart(Request $request) { return $this->canAccessRequestedForm($request); } public function getRevenueChart(Request $request) { return $this->canAccessRequestedForm($request); } public function getFormStats(Request $request) { return $this->canAccessRequestedForm($request); } public function getApiLogs(Request $request) { return $this->canAccessRequestedForm($request); } public function getPaymentTypes(Request $request) { return $this->canAccessRequestedForm($request); } public function getCompletionRate(Request $request) { return $this->canAccessOptionalFormScopedReport($request); } public function getHeatmapData(Request $request) { return $this->canAccessOptionalFormScopedReport($request); } public function getCountryHeatmap(Request $request) { return $this->canAccessOptionalFormScopedReport($request); } public function getTopPerformingForms(Request $request) { return $this->canAccessDashboardReport($request); } public function getSubscriptions(Request $request) { return $this->canAccessOptionalFormScopedReport($request); } public function getFormsDropdown(Request $request) { return $this->canAccessDashboardReport($request); } public function netRevenue(Request $request) { return $this->canAccessOptionalFormScopedReport($request); } public function submissionsAnalysis(Request $request) { return $this->canAccessOptionalFormScopedReport($request); } private function resolveFormId(Request $request) { $route = $request->route(); $routeFormId = $route ? Arr::get($route->getParameter(), 'form_id') : null; $routeFormId = Acl::normalizeFormId($routeFormId); if ($routeFormId) { return $routeFormId; } return Acl::normalizeFormId($request->get('form_id')); } }