diff --git a/src/app/components/login/forgot-pw/forgot-pw.component.html b/src/app/components/login/forgot-pw/forgot-pw.component.html
index 6b7d8ee..cded837 100644
--- a/src/app/components/login/forgot-pw/forgot-pw.component.html
+++ b/src/app/components/login/forgot-pw/forgot-pw.component.html
@@ -43,7 +43,9 @@
} @else { @if (mail.touched &&
!isEmailValid(pwResetData.mail.toLowerCase())) {
{{ "register.errorMail1" | translate }}
- } }
+ } } @if(errorMessage) {
+ {{ "forgotPW.guestPwChange" | translate }}
+ }
diff --git a/src/app/components/login/forgot-pw/forgot-pw.component.ts b/src/app/components/login/forgot-pw/forgot-pw.component.ts
index 83094bc..edc8db0 100644
--- a/src/app/components/login/forgot-pw/forgot-pw.component.ts
+++ b/src/app/components/login/forgot-pw/forgot-pw.component.ts
@@ -8,6 +8,7 @@ import { TranslateModule } from '@ngx-translate/core';
import { BtnBackComponent } from '../../../shared/components/buttons/btn-back/btn-back.component';
import { ButtonStateService } from '../../../services/button-state.service';
import { AuthService } from '../../../services/auth.service';
+import { environment } from '../../../../environments/environment';
@Component({
selector: 'app-forgot-pw',
@@ -25,6 +26,7 @@ import { AuthService } from '../../../services/auth.service';
styleUrl: './forgot-pw.component.scss',
})
export class ForgotPwComponent {
+ errorMessage = false;
pwResetData = {
mail: '',
};
@@ -34,27 +36,44 @@ export class ForgotPwComponent {
private authService: AuthService
) {}
- async onSubmit(ngForm: NgForm) {
+ async onSubmit(ngForm: NgForm): Promise {
this.buttonStateService.disableButton();
+ if (this.checkGuestEmail()) return;
+
if (ngForm.submitted && ngForm.form.valid) {
try {
await this.authService.resetPassword(
this.pwResetData.mail.toLowerCase()
);
- this.buttonStateService.enableButton();
} catch (error) {
this.buttonStateService.enableButton();
+ } finally {
+ this.buttonStateService.enableButton();
}
} else {
this.buttonStateService.enableButton();
}
}
- isButtonDisabled() {
+ checkGuestEmail(): boolean {
+ this.errorMessage = false;
+
+ if (
+ this.pwResetData.mail.toLowerCase() ===
+ environment.guestEmail.toLowerCase()
+ ) {
+ this.errorMessage = true;
+ this.buttonStateService.enableButton();
+ return true;
+ }
+ return false;
+ }
+
+ isButtonDisabled(): boolean {
return this.buttonStateService.isButtonDisabled;
}
- isEmailValid(emailValue: string) {
+ isEmailValid(emailValue: string): boolean {
return /^[\w.%+-]+@[\w.-]+\.[a-zA-Z]{2,}$/.test(emailValue);
}
}
diff --git a/src/app/components/login/forgot-pw/pw-reset/pw-reset.component.ts b/src/app/components/login/forgot-pw/pw-reset/pw-reset.component.ts
index 2f38432..ce7501b 100644
--- a/src/app/components/login/forgot-pw/pw-reset/pw-reset.component.ts
+++ b/src/app/components/login/forgot-pw/pw-reset/pw-reset.component.ts
@@ -68,16 +68,16 @@ export class PwResetComponent implements OnInit, OnDestroy {
this.buttonStateService.disableButton();
if (ngForm.submitted && ngForm.form.valid) {
try {
- console.log(this.uidb64, this.token);
await this.authService.resetPasswordConfirm(
this.pwResetData.password,
this.uidb64,
this.token
);
- this.buttonStateService.enableButton();
} catch (error: any) {
this.errorHttpMessage = error.message;
this.buttonStateService.enableButton();
+ } finally {
+ this.buttonStateService.enableButton();
}
} else {
this.buttonStateService.enableButton();
diff --git a/src/app/components/login/login.component.ts b/src/app/components/login/login.component.ts
index 15e148a..3969f39 100644
--- a/src/app/components/login/login.component.ts
+++ b/src/app/components/login/login.component.ts
@@ -13,6 +13,7 @@ import { TokenService } from '../../services/token.service';
import { ButtonStateService } from '../../services/button-state.service';
import { PasswordVisibilityService } from '../../services/password-visibility.service';
import { Subject, takeUntil } from 'rxjs';
+import { environment } from '../../../environments/environment';
@Component({
selector: 'app-login',
@@ -86,9 +87,10 @@ export class LoginComponent implements OnInit, OnDestroy {
this.loginData.email = this.loginData.email.toLowerCase();
try {
await this.authService.login(this.loginData, this.checkboxRememberMe);
- this.buttonStateService.enableButton();
} catch (error) {
this.buttonStateService.enableButton();
+ } finally {
+ this.buttonStateService.enableButton();
}
} else {
this.buttonStateService.enableButton();
@@ -96,8 +98,8 @@ export class LoginComponent implements OnInit, OnDestroy {
}
guestLogin() {
- this.loginData.email = 'guest@guestaccount.com';
- this.loginData.password = 'guest@guestaccount.com';
+ this.loginData.email = environment.guestEmail.toLowerCase();
+ this.loginData.password = environment.guestPassword.toLowerCase();
this.isPasswordIconVisible = !this.isPasswordIconVisible;
this.onSubmit({ submitted: true, form: { valid: true } } as NgForm);
}
diff --git a/src/app/components/login/register/register.component.ts b/src/app/components/login/register/register.component.ts
index d4bc443..a179ca0 100644
--- a/src/app/components/login/register/register.component.ts
+++ b/src/app/components/login/register/register.component.ts
@@ -56,10 +56,11 @@ export class RegisterComponent {
this.registerData.email = this.registerData.email.toLowerCase();
try {
await this.authService.register(this.registerData);
- this.buttonStateService.enableButton();
} catch (error: any) {
this.errorHttpMessage = error.message;
this.buttonStateService.enableButton();
+ } finally {
+ this.buttonStateService.enableButton();
}
} else {
this.buttonStateService.enableButton();
diff --git a/src/assets/i18n/de.json b/src/assets/i18n/de.json
index 8f95678..42d40cc 100644
--- a/src/assets/i18n/de.json
+++ b/src/assets/i18n/de.json
@@ -20,6 +20,7 @@
"email": "Ihre E-Mail",
"sendMail": "E-Mail senden",
"pwChange": "Passwort ändern",
+ "guestPwChange": "Das Passwort für das Gastkonto kann nicht geändert werden",
"invalidLink": "Dieser Link zum Zurücksetzen Ihres Passworts ist ungültig",
"notice": "Wir senden Ihnen eine E-Mail, über die Sie Ihr Passwort ändern können"
},
@@ -153,7 +154,7 @@
"categorySelection": "Kategorie wählen",
"subtask": "Unteraufgaben",
"subtaskFormField": "Unteraufgabe hinzufügen",
- "edit": "Barbeiten",
+ "edit": "Bearbeiten",
"clear": "Leeren",
"delete": "Löschen",
"update": "Aktualisieren",
diff --git a/src/assets/i18n/en.json b/src/assets/i18n/en.json
index 7dc89da..e82049e 100644
--- a/src/assets/i18n/en.json
+++ b/src/assets/i18n/en.json
@@ -20,6 +20,7 @@
"email": "Your Email",
"sendMail": "Send Mail",
"pwChange": "Change Password",
+ "guestPwChange": "Guest account password cannot be changed",
"invalidLink": "This link to reset your password is invalid",
"notice": "We will send you an email to change your password."
},
diff --git a/src/environments/environment.example.ts b/src/environments/environment.example.ts
index 6fab359..fd80f6f 100755
--- a/src/environments/environment.example.ts
+++ b/src/environments/environment.example.ts
@@ -10,4 +10,10 @@ export const environment = {
* For example: 'http://localhost:8000' or 'https://api.example.com'
*/
apiUrl: 'https://your-api-url.here',
+
+ /**
+ * Default email and password for guest accounts.
+ */
+ guestEmail: 'guest@guestaccount.com',
+ guestPassword: 'guest@guestaccount.com',
};