Open Journal Systems  3.3.0
APIProfileForm.inc.php
1 <?php
2 
16 use \Firebase\JWT\JWT;
17 
18 import('lib.pkp.classes.user.form.BaseProfileForm');
19 
21 
26  public function __construct($user) {
27  parent::__construct('user/apiProfileForm.tpl', $user);
28  }
29 
33  public function initData() {
34  $user = $this->getUser();
35  $this->setData('apiKeyEnabled', (bool) $user->getData('apiKeyEnabled'));
36  }
37 
41  public function readInputData() {
42  parent::readInputData();
43 
44  $this->readUserVars(array(
45  'apiKeyEnabled', 'generateApiKey',
46  ));
47  }
48 
54  public function fetch($request, $template = null, $display = false) {
55  $user = $request->getUser();
56  $secret = Config::getVar('security', 'api_key_secret', '');
57  if ($secret === '') {
58  $notificationManager = new NotificationManager();
59  $notificationManager->createTrivialNotification(
60  $user->getId(), NOTIFICATION_TYPE_WARNING, array(
61  'contents' => __('user.apiKey.secretRequired'),
62  ));
63  } elseif ($user->getData('apiKey')) {
64  $templateMgr = TemplateManager::getManager($request);
65  $templateMgr->assign(array(
66  'apiKey' => JWT::encode($user->getData('apiKey'), $secret, 'HS256'),
67  ));
68  }
69  return parent::fetch($request, $template, $display);
70  }
71 
75  function execute(...$functionArgs) {
76  $request = Application::get()->getRequest();
77  $user = $request->getUser();
78 
79  $apiKeyEnabled = (bool) $this->getData('apiKeyEnabled');
80  $user->setData('apiKeyEnabled', $apiKeyEnabled);
81 
82  // remove api key if exists
83  if (!$apiKeyEnabled) {
84  $user->setData('apiKeyEnabled', null);
85  }
86 
87  // generate api key
88  if ($apiKeyEnabled && !is_null($this->getData('generateApiKey'))) {
89  $secret = Config::getVar('security', 'api_key_secret', '');
90  if ($secret) {
91  $user->setData('apiKey', sha1(time()));
92  }
93  }
94 
95  parent::execute(...$functionArgs);
96  }
97 }
APIProfileForm\readInputData
readInputData()
Definition: APIProfileForm.inc.php:41
APIProfileForm\initData
initData()
Definition: APIProfileForm.inc.php:33
Form\setData
setData($key, $value=null)
Definition: Form.inc.php:229
Form\readUserVars
readUserVars($vars)
Definition: Form.inc.php:378
Form\getData
getData($key)
Definition: Form.inc.php:220
APIProfileForm\execute
execute(... $functionArgs)
Definition: APIProfileForm.inc.php:75
Config\getVar
static getVar($section, $key, $default=null)
Definition: Config.inc.php:35
PKPTemplateManager\getManager
static & getManager($request=null)
Definition: PKPTemplateManager.inc.php:1239
APIProfileForm
Form to edit user's API key settings.
Definition: APIProfileForm.inc.php:20
APIProfileForm\fetch
fetch($request, $template=null, $display=false)
Definition: APIProfileForm.inc.php:54
BaseProfileForm
Base form to edit an aspect of user profile.
Definition: BaseProfileForm.inc.php:18
NotificationManager
Definition: NotificationManager.inc.php:19
APIProfileForm\__construct
__construct($user)
Definition: APIProfileForm.inc.php:26
BaseProfileForm\getUser
getUser()
Definition: BaseProfileForm.inc.php:44
PKPApplication\get
static get()
Definition: PKPApplication.inc.php:235