PluginProbe
Fluent Support – Helpdesk & Customer Support Ticket System / 1.10.2
Fluent Support – Helpdesk & Customer Support Ticket System v1.10.2
2.4.0 2.3.2 2.3.1 2.3.0 2.2.1 2.2.0 trunk 1.10.0 1.10.1 1.10.2 1.10.3 1.10.4 1.10.5 1.4.0 1.4.1 1.4.2 1.4.5 1.4.6 1.4.7 1.5.0 1.5.1 1.5.2 1.5.3 1.5.4 1.5.5 All 68 releases
fluent-support / app / Http / Policies / PortalPolicy.php

PortalPolicy.php in Fluent Support – Helpdesk & Customer Support Ticket System 1.10.2, at app/Http/Policies/PortalPolicy.php

105 lines 2.8 KB
No matching file
Up and down to move Enter to open Esc to close
Raw Download Zip
1 <?php
2
3 namespace FluentSupport\App\Http\Policies;
4
5 use FluentSupport\App\Models\Ticket;
6 use FluentSupport\App\Modules\PermissionManager;
7 use FluentSupport\App\Services\Helper;
8 use FluentSupport\Framework\Request\Request;
9 use FluentSupport\Framework\Foundation\Policy;
10
11 class PortalPolicy extends Policy
12 {
13 /**
14 * Check user permission for any method
15 * @param \FluentSupport\Framework\Request\Request $request
16 * @return Boolean
17 */
18 public function verifyRequest(Request $request)
19 {
20 if ($request->get('on_behalf')) {
21 return PermissionManager::currentUserCan('fst_sensitive_data') || PermissionManager::currentUserCan('fst_manage_other_tickets');
22 }
23
24 $hasAccess = !!get_current_user_id();
25
26 if (!$hasAccess) {
27 return false;
28 }
29
30 /*
31 * Filter portal access settings
32 *
33 * @since v1.0.0
34 * @param array $canAccess
35 */
36 $canAccess = apply_filters('fluent_support/user_portal_access_config', [
37 'status' => true,
38 'message' => __('You do not have permission', 'fluent-support')
39 ]);
40
41 return $canAccess['status'];
42 }
43
44 /**
45 * @param \FluentSupport\Framework\Request\Request $request
46 * @return Boolean
47 */
48 public function getTicket(Request $request)
49 {
50 return $this->maybePublicSignedRequest($request);
51 }
52
53 public function createResponse(Request $request)
54 {
55 return $this->maybePublicSignedRequest($request);
56 }
57
58 public function closeTicket(Request $request)
59 {
60 return $this->maybePublicSignedRequest($request);
61 }
62
63 public function reOpenTicket(Request $request)
64 {
65 return $this->maybePublicSignedRequest($request);
66 }
67
68 public function uploadTicketFiles(Request $request)
69 {
70 if ($person = Helper::getCurrentAgent()) {
71 return true;
72 }
73
74 return $this->maybePublicSignedRequest($request);
75 }
76
77 public function getCountries(Request $request)
78 {
79 if ($person = Helper::getCurrentAgent()) {
80 return true;
81 }
82
83 return $this->maybePublicSignedRequest($request);
84 }
85
86 /**
87 * @param \FluentSupport\Framework\Request\Request $request
88 * @return Boolean
89 */
90
91 protected function maybePublicSignedRequest($request)
92 {
93 if ($request->get('intended_ticket_hash') && Helper::isPublicSignedTicketEnabled()) {
94 $ticketHash = sanitize_text_field($request->get('intended_ticket_hash'));
95 if ($ticketHash != 'undefined') {
96 $ticketId = absint($request->get('ticket_id'));
97 return !!Ticket::where('hash', $ticketHash)->find($ticketId);
98 }
99 }
100
101 return $this->verifyRequest($request);
102 }
103
104 }
105