| 
							- <?php
 - 
 - namespace dokuwiki\Ui;
 - 
 - use dokuwiki\Extension\AuthPlugin;
 - use dokuwiki\Form\Form;
 - use dokuwiki\JWT;
 - 
 - /**
 -  * DokuWiki User Profile Interface
 -  *
 -  * @package dokuwiki\Ui
 -  */
 - class UserProfile extends Ui
 - {
 -     /**
 -      * Display the User Profile Form Panel
 -      *
 -      * @return void
 -      * @author   Andreas Gohr <andi@splitbrain.org>
 -      *
 -      */
 -     public function show()
 -     {
 -         /** @var AuthPlugin $auth */
 -         global $auth;
 -         global $INFO;
 -         global $INPUT;
 - 
 -         $userinfo = [
 -             'user' => $_SERVER['REMOTE_USER'],
 -             'name' => $INPUT->post->str('fullname', $INFO['userinfo']['name'], true),
 -             'mail' => $INPUT->post->str('email', $INFO['userinfo']['mail'], true),
 - 
 -         ];
 - 
 -         echo p_locale_xhtml('updateprofile');
 -         echo '<div class="centeralign">';
 - 
 -         echo $this->updateProfileForm($userinfo)->toHTML('UpdateProfile');
 -         echo $this->tokenForm($userinfo['user'])->toHTML();
 -         if ($auth->canDo('delUser') && actionOK('profile_delete')) {
 -             $this->deleteProfileForm()->toHTML('ProfileDelete');
 -         }
 - 
 -         echo '</div>';
 -     }
 - 
 -     /**
 -      * Add the password confirmation field to the form if configured
 -      *
 -      * @param Form $form
 -      * @return void
 -      */
 -     protected function addPasswordConfirmation(Form $form)
 -     {
 -         global $lang;
 -         global $conf;
 - 
 -         if (!$conf['profileconfirm']) return;
 -         $form->addHTML("<br>\n");
 -         $attr = ['size' => '50', 'required' => 'required'];
 -         $input = $form->addPasswordInput('oldpass', $lang['oldpass'])->attrs($attr)
 -             ->addClass('edit');
 -         $input->getLabel()->attr('class', 'block');
 -         $form->addHTML("<br>\n");
 -     }
 - 
 -     /**
 -      * Create the profile form
 -      *
 -      * @return Form
 -      */
 -     protected function updateProfileForm($userinfo)
 -     {
 -         global $lang;
 -         /** @var AuthPlugin $auth */
 -         global $auth;
 - 
 -         $form = new Form(['id' => 'dw__register']);
 -         $form->addTagOpen('div')->addClass('no');
 -         $form->addFieldsetOpen($lang['profile']);
 -         $form->setHiddenField('do', 'profile');
 -         $form->setHiddenField('save', '1');
 - 
 -         $attr = ['size' => '50', 'disabled' => 'disabled'];
 -         $input = $form->addTextInput('login', $lang['user'])
 -             ->attrs($attr)
 -             ->addClass('edit')
 -             ->val($userinfo['user']);
 -         $input->getLabel()->attr('class', 'block');
 -         $form->addHTML("<br>\n");
 - 
 -         $attr = ['size' => '50'];
 -         if (!$auth->canDo('modName')) $attr['disabled'] = 'disabled';
 -         $input = $form->addTextInput('fullname', $lang['fullname'])
 -             ->attrs($attr)
 -             ->addClass('edit')
 -             ->val($userinfo['name']);
 -         $input->getLabel()->attr('class', 'block');
 -         $form->addHTML("<br>\n");
 - 
 -         $attr = ['type' => 'email', 'size' => '50'];
 -         if (!$auth->canDo('modMail')) $attr['disabled'] = 'disabled';
 -         $input = $form->addTextInput('email', $lang['email'])
 -             ->attrs($attr)
 -             ->addClass('edit')
 -             ->val($userinfo['mail']);
 -         $input->getLabel()->attr('class', 'block');
 -         $form->addHTML("<br>\n");
 - 
 -         if ($auth->canDo('modPass')) {
 -             $attr = ['size' => '50'];
 -             $input = $form->addPasswordInput('newpass', $lang['newpass'])->attrs($attr)->addClass('edit');
 -             $input->getLabel()->attr('class', 'block');
 -             $form->addHTML("<br>\n");
 - 
 -             $input = $form->addPasswordInput('passchk', $lang['passchk'])->attrs($attr)->addClass('edit');
 -             $input->getLabel()->attr('class', 'block');
 -             $form->addHTML("<br>\n");
 -         }
 - 
 -         $this->addPasswordConfirmation($form);
 - 
 -         $form->addButton('', $lang['btn_save'])->attr('type', 'submit');
 -         $form->addButton('', $lang['btn_reset'])->attr('type', 'reset');
 - 
 -         $form->addFieldsetClose();
 -         $form->addTagClose('div');
 - 
 -         return $form;
 -     }
 - 
 -     /**
 -      * Create the profile delete form
 -      *
 -      * @return Form
 -      */
 -     protected function deleteProfileForm()
 -     {
 -         global $lang;
 - 
 -         $form = new Form(['id' => 'dw__profiledelete']);
 -         $form->addTagOpen('div')->addClass('no');
 -         $form->addFieldsetOpen($lang['profdeleteuser']);
 -         $form->setHiddenField('do', 'profile_delete');
 -         $form->setHiddenField('delete', '1');
 - 
 -         $form->addCheckbox('confirm_delete', $lang['profconfdelete'])
 -             ->attrs(['required' => 'required'])
 -             ->id('dw__confirmdelete')
 -             ->val('1');
 - 
 -         $this->addPasswordConfirmation($form);
 - 
 -         $form->addButton('', $lang['btn_deleteuser'])->attr('type', 'submit');
 -         $form->addFieldsetClose();
 -         $form->addTagClose('div');
 -         return $form;
 -     }
 - 
 -     /**
 -      * Get the authentication token form
 -      *
 -      * @param string $user
 -      * @return Form
 -      */
 -     protected function tokenForm($user)
 -     {
 -         global $lang;
 - 
 -         $token = JWT::fromUser($user);
 - 
 -         $form = new Form(['id' => 'dw__profiletoken', 'action' => wl(), 'method' => 'POST']);
 -         $form->setHiddenField('do', 'authtoken');
 -         $form->setHiddenField('id', 'ID');
 -         $form->addFieldsetOpen($lang['proftokenlegend']);
 -         $form->addHTML('<p>' . $lang['proftokeninfo'] . '</p>');
 -         $form->addHTML('<p><code style="display: block; word-break: break-word">' . $token->getToken() . '</code></p>');
 -         $form->addButton('regen', $lang['proftokengenerate']);
 -         $form->addFieldsetClose();
 - 
 -         return $form;
 -     }
 - }
 
 
  |