-
Notifications
You must be signed in to change notification settings - Fork 1
Expand file tree
/
Copy pathArtsHandler.php
More file actions
115 lines (93 loc) · 2.79 KB
/
Copy pathArtsHandler.php
File metadata and controls
115 lines (93 loc) · 2.79 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
<?php
namespace APP\plugins\generic\arts;
use PKP\handler\APIHandler;
use PKP\security\Role;
use PKP\security\authorization\ContextAccessPolicy;
require_once __DIR__ . '/Utils.php';
require_once __DIR__ . '/ArtsReportGenerator.php';
foreach (glob(__DIR__ . '/traits/*.php') as $filename) {
require_once $filename;
}
class ArtsHandler extends APIHandler
{
use \APP\plugins\generic\arts\traits\UserTrait;
use \APP\plugins\generic\arts\traits\AnnouncementTrait;
use \APP\plugins\generic\arts\traits\SubmissionTrait;
use \APP\plugins\generic\arts\traits\ContextTrait;
use \APP\plugins\generic\arts\traits\RepositoryTrait;
use \APP\plugins\generic\arts\traits\FilterTrait;
use \APP\plugins\generic\arts\traits\UtilityTrait;
use \APP\plugins\generic\arts\traits\ReportTrait;
use \APP\plugins\generic\arts\traits\AnnouncementTrait;
use \APP\plugins\generic\arts\traits\IssuesTrait;
use \APP\plugins\generic\arts\traits\SectionTrait;
public const DATA_OPERATIONS = [
'author',
'about',
'reviewers',
'journalIdentity',
'announcement',
'category',
'citation',
'decision',
'institution',
'submissionFile',
'userGroup',
'representation',
'submissions',
'publications',
'issues',
'urls',
'reviews',
'eventlogs',
'DAO',
'user',
'page',
'galley',
'section'
];
var $bannedFields = [
'password',
'apiKey',
'email',
// 'familyName',
// 'givenName',
'accessStatus'
];
var $customfilters = [];
private $plugin;
public function __construct($plugin)
{
$this->plugin = $plugin;
//PKPSiteAccessPolicy::SITE_ACCESS_ALL_ROLES
$this->_handlerPath = 'ARTS';
$headers = getallheaders();
if (!isset($headers['Authorization'])) {
$this->addRoleAssignment(
[
Role::ROLE_ID_MANAGER,
Role::ROLE_ID_SITE_ADMIN,
],
array_merge(self::DATA_OPERATIONS, [
'parseyaml',
'report',
'doQuery'
])
);
}
}
public function authorize($request, &$args, $roleAssignments)
{
$headers = getallheaders();
$this->read_env_file();
$api_token = getenv('API_TOKEN');
if (isset($headers['Authorization'])) {
if ($headers['Authorization'] != "Bearer $api_token") {
return "403";
}
} else {
$this->addPolicy(new ContextAccessPolicy($request, $roleAssignments));
}
return parent::authorize($request, $args, $roleAssignments);
}
}