PluginProbe
Fluent Forms – Customizable Contact Forms, Survey, Quiz, & Conversational Form Builder / 6.2.9
Fluent Forms – Customizable Contact Forms, Survey, Quiz, & Conversational Form Builder v6.2.9
6.2.14 6.2.13 6.2.12 6.2.10 6.2.11 6.2.9 6.2.8 6.2.7 6.2.6 6.2.5 6.2.4 6.2.3 6.2.2 3.6.22 3.6.31 3.6.40 3.6.41 3.6.42 3.6.50 3.6.51 3.6.60 3.6.61 3.6.62 3.6.64 3.6.65 All 196 releases
fluentform / app / Http / Policies / ReportPolicy.php

ReportPolicy.php in Fluent Forms – Customizable Contact Forms, Survey, Quiz, & Conversational Form Builder 6.2.9, at app/Http/Policies/ReportPolicy.php

158 lines 4.0 KB
No matching file
Up and down to move Enter to open Esc to close
Raw Download Zip
1 <?php
2
3 namespace FluentForm\App\Http\Policies;
4
5 use FluentForm\App\Modules\Acl\Acl;
6 use FluentForm\App\Services\Manager\FormManagerService;
7 use FluentForm\Framework\Http\Request\Request;
8 use FluentForm\Framework\Foundation\Policy;
9 use FluentForm\Framework\Support\Arr;
10
11 class ReportPolicy extends Policy
12 {
13 private function canAccessReportData(Request $request)
14 {
15 $formId = $this->resolveFormId($request);
16
17 if ($formId) {
18 return Acl::hasPermission('fluentform_entries_viewer', $formId);
19 }
20
21 return Acl::hasPermission('fluentform_entries_viewer');
22 }
23
24 private function canAccessDashboardReport(Request $request)
25 {
26 if (!Acl::hasPermission('fluentform_dashboard_access')) {
27 return false;
28 }
29
30 return $this->canAccessReportData($request);
31 }
32
33 private function canAccessRequestedForm(Request $request)
34 {
35 return $this->canAccessReportData($request);
36 }
37
38 private function canAccessOptionalFormScopedReport(Request $request)
39 {
40 if (!Acl::hasPermission('fluentform_dashboard_access')) {
41 return false;
42 }
43
44 $formId = $this->resolveFormId($request);
45
46 if ($formId) {
47 return Acl::hasPermission('fluentform_entries_viewer', $formId);
48 }
49
50 if (!Acl::hasPermission('fluentform_entries_viewer')) {
51 return false;
52 }
53
54 $userId = get_current_user_id();
55
56 return !$userId || !FormManagerService::hasSpecificFormsPermission($userId);
57 }
58
59 /**
60 * Check permission for any method
61 *
62 * @param \FluentForm\Framework\Request\Request $request
63 * @return bool
64 */
65 public function verifyRequest(Request $request)
66 {
67 return Acl::hasPermission('fluentform_dashboard_access');
68 }
69
70 public function form(Request $request)
71 {
72 return $this->canAccessRequestedForm($request);
73 }
74
75 public function submissions(Request $request)
76 {
77 return $this->canAccessRequestedForm($request);
78 }
79
80 public function getOverviewChart(Request $request)
81 {
82 return $this->canAccessRequestedForm($request);
83 }
84
85 public function getRevenueChart(Request $request)
86 {
87 return $this->canAccessRequestedForm($request);
88 }
89
90 public function getFormStats(Request $request)
91 {
92 return $this->canAccessRequestedForm($request);
93 }
94
95 public function getApiLogs(Request $request)
96 {
97 return $this->canAccessRequestedForm($request);
98 }
99
100 public function getPaymentTypes(Request $request)
101 {
102 return $this->canAccessRequestedForm($request);
103 }
104
105 public function getCompletionRate(Request $request)
106 {
107 return $this->canAccessOptionalFormScopedReport($request);
108 }
109
110 public function getHeatmapData(Request $request)
111 {
112 return $this->canAccessOptionalFormScopedReport($request);
113 }
114
115 public function getCountryHeatmap(Request $request)
116 {
117 return $this->canAccessOptionalFormScopedReport($request);
118 }
119
120 public function getTopPerformingForms(Request $request)
121 {
122 return $this->canAccessDashboardReport($request);
123 }
124
125 public function getSubscriptions(Request $request)
126 {
127 return $this->canAccessOptionalFormScopedReport($request);
128 }
129
130 public function getFormsDropdown(Request $request)
131 {
132 return $this->canAccessDashboardReport($request);
133 }
134
135 public function netRevenue(Request $request)
136 {
137 return $this->canAccessOptionalFormScopedReport($request);
138 }
139
140 public function submissionsAnalysis(Request $request)
141 {
142 return $this->canAccessOptionalFormScopedReport($request);
143 }
144
145 private function resolveFormId(Request $request)
146 {
147 $route = $request->route();
148 $routeFormId = $route ? Arr::get($route->getParameter(), 'form_id') : null;
149 $routeFormId = Acl::normalizeFormId($routeFormId);
150
151 if ($routeFormId) {
152 return $routeFormId;
153 }
154
155 return Acl::normalizeFormId($request->get('form_id'));
156 }
157 }
158