diff --git a/module/fid/config/username-change-form.php b/module/fid/config/username-change-form.php index 75ac717b6a862512ecfb7193f0c4ddb59fafc102..9139e55b080c8b2780e32640170fd0c37ec3dc6a 100644 --- a/module/fid/config/username-change-form.php +++ b/module/fid/config/username-change-form.php @@ -46,7 +46,7 @@ return [ 'usernameConfirmation' => [ 'spec' => [ 'name' => 'usernameConfirmation', - 'type' => Text::class, + 'type' => Email::class, 'options' => [ 'label' => 'label_newusername_confirmation', ], diff --git a/module/fid/src/Controller/UserController.php b/module/fid/src/Controller/UserController.php index 2e8d89f664e26f06036cca1126cc77fb048f42f7..7eb04a7da71cacdf802bfdbbe83e0ee5798ecb07 100644 --- a/module/fid/src/Controller/UserController.php +++ b/module/fid/src/Controller/UserController.php @@ -458,6 +458,12 @@ class UserController extends AbstractBase $form = $this->serviceLocator->get(PasswordResetModel::class); $forwarded = $this->params()->fromRoute('forwarded', false); + if($this->getUser()) { + $form->get('username')->setAttribute('disabled', 'true'); + $form->get('username')->setValue($this->client->requestUserDetails()->getUsername()); + $form->setValidationGroup(['submit']); + } + if ($submitted = $this->formWasSubmitted()) { $form->setData($request->getPost()); if (!$forwarded && $form->isValid()) { @@ -474,11 +480,15 @@ class UserController extends AbstractBase protected function sendResetPassword(Form $form) { - /** @var PasswordResetModel $model */ $messenger = $this->getMessenger(); - $model = $form->getHydrator()->hydrate( - $form->getData(), new PasswordResetModel()); - $username = $model->getUsername(); + if ($this->getUser()) { + $username = $this->client->requestUserDetails()->getUsername(); + } else { + /** @var PasswordResetModel $model */ + $model = $form->getHydrator()->hydrate( + $form->getData(), new PasswordResetModel()); + $username = $model->getUsername(); + } try { /** @noinspection PhpUndefinedFieldInspection */ diff --git a/module/fid/src/Hydrator/Strategy/UserDataStrategy.php b/module/fid/src/Hydrator/Strategy/UserDataStrategy.php index 0195938ebcdfa2bb8ece5abf8256f4390dc9de16..e16fd25bfaf1769a8b23bb4c9848a1e541fec855 100644 --- a/module/fid/src/Hydrator/Strategy/UserDataStrategy.php +++ b/module/fid/src/Hydrator/Strategy/UserDataStrategy.php @@ -62,6 +62,6 @@ class UserDataStrategy implements StrategyInterface $result[$name] = $this->hydrate($val); } - return $result; + return $result ?? []; } } \ No newline at end of file diff --git a/module/fid/src/Service/Client.php b/module/fid/src/Service/Client.php index 7ab06dd735130a855bed4b87ac6f544c36965614..10cf3a2e32918ac475fd70cf6d73cbee4e37efdf 100644 --- a/module/fid/src/Service/Client.php +++ b/module/fid/src/Service/Client.php @@ -461,11 +461,18 @@ class Client * @throws UserNotLoggedinException * @throws UserNotAuthorizedException */ - protected function authorize(String $permission,User $user = null) { + protected function authorize(String $permission, User $user = null) + { + try { + $logon = $this->restoreLogon(); + } catch (ClientException $exception) { + throw new UserNotLoggedinException(); + } - if (!$this->isLoggedOn()) { + if (!$logon || !$logon->getOwnerId()) { throw new UserNotLoggedinException(); } + $user = $this->requestUserDetails(); if (!$user->hasPermission($permission)) { throw new UserNotAuthorizedException(); diff --git a/themes/fid/languages/fid/de.ini b/themes/fid/languages/fid/de.ini index e7b1639af596f31c2a0d757737f8c3934dce3f75..9e3e16e570023de702f87ef9f4375039a72b6988 100644 --- a/themes/fid/languages/fid/de.ini +++ b/themes/fid/languages/fid/de.ini @@ -6,8 +6,10 @@ user_init_form_title = "Registrierung" user_create_form_title = "Registrierung abschließen" user_update_form_title = "Profildaten editieren." password_reset_form_title = "Passwort zurücksetzen" +password_reset_form_information = "Bitte geben Sie die E-Mail-Adresse ein, mit der Sie sich registriert haben. Wir senden Ihnen einen Link per E-Mail, über den Sie Ihr Passwort ändern können." password_change_form_title = "Neues Passwort speichern" username_change_form_title = "E-Mail-Adresse ändern" +username_change_form_information = "Bitte geben Sie Ihre neue E-Mail-Adresse ein. Wir senden Ihnen einen Link per E-Mail, über den Sie Ihre neue E-Mail-Adresse bestätigen müssen. Danach können Sie sich mit Ihrer neuen E-Mail-Adresse anmelden." label_username = "E-Mail-Adresse" label_newusername = "Neue E-Mail-Adresse" @@ -21,12 +23,15 @@ label_salutation_mrs = "Frau" label_academic_title = "Akademischer Titel" label_home_library = "Heimatbibliothek" label_year_of_birth = "Geburtsjahr" -label_job_title = "Berufsbezeichnung" label_college = "Hochschule" label_phone = Telefon label_password = "Passwort" label_password_confirmation = "Passwort wiederholen" -label_access_level = "Ich gehöre folgender Nutzergruppe an" + +label_job_title = "Ich gehöre folgender Nutzergruppe an" +job_title_0 = "HochschullehrerInnen, wissenschaftliche MitarbeiterInnen, Mitglied einer Fachgesellschaft, DoktorandInnen, StipendiatInnen oder externe WissenschaftlerInnen (z. B. Lehrbeauftragte)" +job_title_1 = "Studierende, Sonstige" + label_access_level_full_access = "HochschullehrerInnen, wissenschaftliche MitarbeiterInnen, Mitglied einer Fachgesellschaft, DoktorandInnen, StipendiatInnen oder externe WissenschaftlerInnen (z. B. Lehrbeauftragte)" label_access_level_limited_access = "Studierende, Sonstige" label_access_level_read_user_list = "Nutzerverwaltung: Nutzerliste lesen" @@ -41,11 +46,11 @@ permission_status_granted = bewilligt label_delivery_address = "Privatadresse als Lieferadresse verwenden" Business = "Dienstadresse" Private = "Privatadresse" -label_address_line_1 = "Adresse" -label_address_line_2 = "Adresszusatz" -label_address_zip = "Postleitzahl" -label_address_city = "Ort" -label_address_country = "Land" +label_address_0_line_1 = "Adresse" +label_address_0_line_2 = "Adresszusatz" +label_address_0_zip = "Postleitzahl" +label_address_0_city = "Ort" +label_address_0_country = "Land" label_submit = "Abschicken" label_update_submit = Ändern terms = "Nutzungsbedingungen" diff --git a/themes/fid/languages/fid/en.ini b/themes/fid/languages/fid/en.ini index 43525129d74f447ae216ef83115e97b337d84ec8..45291196faabba6997c7f74c11b2270f9cfc5687 100644 --- a/themes/fid/languages/fid/en.ini +++ b/themes/fid/languages/fid/en.ini @@ -6,8 +6,10 @@ user_init_form_title = "Registration" user_create_form_title = "Complete registration" user_update_form_title = "Profile data" password_reset_form_title = "Reset password" +password_reset_form_information = "Please enter the e-mail address by which you registered your user account. We will send you a link to change your password." password_change_form_title = "Save new password" username_change_form_title = "Update email address" +username_change_form_information = "Please enter your new e-mail address. We will send you a link to confirm your new email address. Then you can login with your new e-mail address." label_username = "Email address" label_newusername = "New email address" @@ -23,10 +25,12 @@ label_firstname = "First name" label_lastname = "Last name" label_home_library = "Home library" label_year_of_birth = "Year of birth (YYYY)" -label_job_title = "Occupation" label_college = "University" label_phone = Phone -label_access_level = "Please select your membership level" +label_job_title = "Please select your membership level" +job_title_0 = "Professor, Research Associate/Assistant, Member of an Academic Association, PhD Student (also Scholarships), (Visiting) Lecturer" +job_title_1 = "Student, Other" + label_access_level_full_access = "Professor, Research Associate/Assistant, Member of an Academic Association, PhD Student (also Scholarships), (Visiting) Lecturer" label_access_level_limited_access = "Student, Other" label_access_level_read_user_list = "User Administration: Read User List" @@ -41,11 +45,11 @@ permission_status_granted = granted label_delivery_address = "Use the following address for deliveries" Business = "Office Address" Private = "Private Address" -label_address_line_1 = "Address" -label_address_line_2 = "Address addition" -label_address_zip = "Zip code" -label_address_city = "City" -label_address_country = "Country" +label_address_0_line_1 = "Address" +label_address_0_line_2 = "Address addition" +label_address_0_zip = "Zip code" +label_address_0_city = "City" +label_address_0_country = "Country" label_submit = "Submit" label_update_submit = Change terms = "Terms of Use" diff --git a/themes/fid/templates/Auth/AbstractBase/loginfields.phtml b/themes/fid/templates/Auth/AbstractBase/loginfields.phtml new file mode 100644 index 0000000000000000000000000000000000000000..9001e9f97ed1bd1eb337474a8bf87b40e708ddc7 --- /dev/null +++ b/themes/fid/templates/Auth/AbstractBase/loginfields.phtml @@ -0,0 +1,8 @@ +<div class="form-group"> + <label class="control-label" for="login_<?=$this->escapeHtmlAttr($topClass)?>_username"><?=$this->transEsc('Username')?>:</label> + <input type="email" name="username" id="login_<?=$this->escapeHtmlAttr($topClass)?>_username" value="<?=$this->escapeHtmlAttr($this->request->get('username'))?>" class="form-control"/> +</div> +<div class="form-group"> + <label class="control-label" for="login_<?=$this->escapeHtmlAttr($topClass)?>_password"><?=$this->transEsc('Password')?>:</label> + <input type="password" name="password" id="login_<?=$this->escapeHtmlAttr($topClass)?>_password" class="form-control"/> +</div> \ No newline at end of file diff --git a/themes/fid/templates/fid/user/address-fieldset.phtml b/themes/fid/templates/fid/user/address-fieldset.phtml index c26c1973cd3a033b54fcd5d552dec601d94e68ee..865287dfcacaa0a5062fa8bc7895ecd1bca9a7da 100644 --- a/themes/fid/templates/fid/user/address-fieldset.phtml +++ b/themes/fid/templates/fid/user/address-fieldset.phtml @@ -27,8 +27,6 @@ use Zend\Form\Element; $address = $this->address; ?> -<h3><?= $this->translate('fid::' . $address->getLabel()) ?></h3> - <? /* id */ ?> <?php $elemId = $address->get('id'); diff --git a/themes/fid/templates/fid/user/password-reset.phtml b/themes/fid/templates/fid/user/password-reset.phtml index 3bf4994ed40108c5a67ae37625d5a333745c156f..02cb1122f8b6b725b91a335cc9131575041139ad 100644 --- a/themes/fid/templates/fid/user/password-reset.phtml +++ b/themes/fid/templates/fid/user/password-reset.phtml @@ -53,6 +53,7 @@ $this->headTitle($this->translate("fid::password_reset_form_title")); ?> <h2><?= $this->translate("fid::password_reset_form_title") ?></h2> <?= $this->flashmessages() ?> +<?= $this->translate("fid::password_reset_form_information") ?> <?= $this->form()->openTag($form) ?> <br/> <?php /* username */ ?> diff --git a/themes/fid/templates/fid/user/username-change.phtml b/themes/fid/templates/fid/user/username-change.phtml index 4d9f6945dfcb05cf80734001916971165d550969..80331a37350bed8bd9c2178bd8ffe066d0311e2e 100644 --- a/themes/fid/templates/fid/user/username-change.phtml +++ b/themes/fid/templates/fid/user/username-change.phtml @@ -54,12 +54,8 @@ $this->headTitle($this->translate("fid::username_change_form_title")); ?> <h2><?= $this->translate("fid::username_change_form_title") ?></h2> - -<div class="subito-pg"> - * <?=$this->transEsc("This field is required")?> -</div> - <?= $this->flashmessages() ?> +<?= $this->translate("fid::username_change_form_information") ?> <?= $this->form()->openTag($form) ?> <br/> <? /* username */ ?>