con->select('SELECT user_id FROM ' . DC_DBPREFIX . 'user'); while ($rs->fetch()) { $id = html::escapeHTML($rs->user_id); $users_combo[$id] = $id; } dcCore::app()->admin->users_combo = $users_combo; } /** * Processes the request(s). */ public static function process() { dcCore::app()->admin->user_id = ''; dcCore::app()->admin->make_super = false; dcCore::app()->admin->show_password = false; if (isset($_POST['act_reset'])) { dcCore::app()->admin->user_id = (string) $_POST['user_id']; dcCore::app()->admin->make_super = !empty($_POST['make_super']); } if (dcCore::app()->admin->user_id !== '' && in_array(dcCore::app()->admin->user_id, dcCore::app()->admin->users_combo)) { dcCore::app()->admin->user_pwd = crypt::createPassword(); $cur = dcCore::app()->con->openCursor(DC_DBPREFIX . 'user'); $cur->user_pwd = dcCore::app()->auth->crypt(dcCore::app()->admin->user_pwd); $cur->user_status = 1; $cur->user_recover_key = null; if (dcCore::app()->admin->make_super) { $cur->user_super = 1; } $sql = new dcUpdateStatement(); $sql->where('user_id = ' . $sql->quote(dcCore::app()->admin->user_id)); $sql->update($cur); dcCore::app()->admin->show_password = true; } } /** * Renders the page. */ public static function render() { $head = << <?php echo %s; ?> HTML_HEAD; $body = <<

%s
HTML_BODY; $form = ''; if (dcCore::app()->admin->show_password) { $form = (new formFieldset()) ->fields([ (new formLegend(__('Your new password'))), (new formPara()) ->items([ (new formText('strong'))->text(__('Username:')), (new formText())->text(html::escapeHTML(dcCore::app()->admin->user_id)), ]), (new formPara()) ->items([ (new formText('strong'))->text(__('Password:')), (new formText())->text(html::escapeHTML(dcCore::app()->admin->user_pwd)), ]), ]) ->render() . (new formPara()) ->items([ (new formLink()) ->href(dcCore::app()->adminurl->get('admin.auth')) ->text(__('Back to login screen')), ]) ->render(); } else { $form = (new formForm('reset')) ->action(http::getSelfURI()) ->method('post') ->fields([ (new formFieldset()) ->fields([ (new formLegend(__('Password reset'))), (new formPara()) ->class('field') ->items([ (new formSelect('user_id')) ->label(new formLabel(__('User:'))) ->items(dcCore::app()->admin->users_combo) ->default(dcCore::app()->admin->user_id), ]), (new formPara()) ->items([ (new formCheckbox('make_super')) ->value(1) ->label((new formLabel(__('Super administrator'), formLabel::INSIDE_TEXT_AFTER)) ->class('classic')), ]), ]), (new formPara()) ->items([ (new formSubmit('act_reset', __('Change your password'))), ]), (new formHidden('xd_check', dcCore::app()->getNonce())), ]) ->render(); } echo sprintf($head, __('Password reset')) . sprintf($body, html::escapeHTML(DC_VENDOR_NAME), $form); } } adminPassword::init(); adminPassword::process(); adminPassword::render();