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 */ ?>