resources/views/password-reset-page.phtml
<?php
declare(strict_types=1);
use Fisharebest\Webtrees\Http\RequestHandlers\PasswordResetAction;
use Fisharebest\Webtrees\I18N;
use Fisharebest\Webtrees\Tree;
use Fisharebest\Webtrees\User;
/**
* @var string $title
* @var string $token
* @var Tree|null $tree
* @var User $user
*/
?>
<h2 class="wt-page-title">
<?= $title ?>
</h2>
<form method="post" action="<?= e(route(PasswordResetAction::class, ['token' => $token, 'tree' => $tree?->name()])) ?>" class="wt-page-options wt-page-options-login">
<div class="row">
<label class="col-sm-3 col-form-label wt-page-options-label" for="username">
<?= I18N::translate('Username') ?>
</label>
<div class="col-sm-9 wt-page-options-value">
<input class="form-control" type="text" id="username" name="username" value="<?= e($user->userName()) ?>" disabled>
</div>
</div>
<div class="row">
<label class="col-sm-3 col-form-label wt-page-options-label" for="password">
<?= I18N::translate('Password') ?>
</label>
<div class="col-sm-9 wt-page-options-value">
<input class="form-control" type="password" id="password" name="password" autocomplete="new-password" pattern=".{8,}" required="required" data-wt-show-password-text="<?= e(I18N::translate('show')) ?>" data-wt-show-password-title="<?= e(I18N::translate('Show password')) ?>" data-wt-hide-password-text="<?= e(I18N::translate('hide')) ?>" data-wt-hide-password-title="<?= e(I18N::translate('Hide password')) ?>">
<div class="form-text" id="password-description">
<?= I18N::translate('Passwords must be at least 8 characters long and are case-sensitive, so that “secret” is different from “SECRET”.') ?>
</div>
</div>
</div>
<div class="row">
<div class="col-sm-3 col-form-label wt-page-options-label">
</div>
<div class="col-sm-9 wt-page-options-value">
<button class="btn btn-primary" type="submit">
<?= /* I18N: A button label. */
I18N::translate('continue') ?>
</button>
</div>
</div>
<?= csrf_field() ?>
</form>