diff --git a/src/app/core/data/eperson-registration.service.ts b/src/app/core/data/eperson-registration.service.ts
index 436291f34a..1cef67cd57 100644
--- a/src/app/core/data/eperson-registration.service.ts
+++ b/src/app/core/data/eperson-registration.service.ts
@@ -14,7 +14,7 @@ import { RemoteData } from './remote-data';
import { RemoteDataBuildService } from '../cache/builders/remote-data-build.service';
import { HttpOptions } from '../dspace-rest/dspace-rest.service';
import { HttpHeaders } from '@angular/common/http';
-import {HttpParams} from '@angular/common/http';
+import { HttpParams } from '@angular/common/http';
@Injectable({
providedIn: 'root',
@@ -70,7 +70,10 @@ export class EpersonRegistrationService {
headers = headers.append('x-recaptcha-token', captchaToken);
}
options.headers = headers;
- options.params = type ? new HttpParams({fromString:'type=' + type}) : new HttpParams();
+
+ if (hasValue(type)) {
+ options.params = type ? new HttpParams({ fromString: 'type=' + type }) : new HttpParams();
+ }
href$.pipe(
find((href: string) => hasValue(href)),
diff --git a/src/app/forgot-password/forgot-password-email/forgot-email.component.html b/src/app/forgot-password/forgot-password-email/forgot-email.component.html
index 263f142c2e..8be86f17ae 100644
--- a/src/app/forgot-password/forgot-password-email/forgot-email.component.html
+++ b/src/app/forgot-password/forgot-password-email/forgot-email.component.html
@@ -1,3 +1,3 @@
-
\ No newline at end of file
+ [MESSAGE_PREFIX]="'forgot-email.form'" [typeRequest]="'forgot'">
+
diff --git a/src/app/register-email-form/register-email-form.component.spec.ts b/src/app/register-email-form/register-email-form.component.spec.ts
index cf3b4b13d2..1e5fbbdb1f 100644
--- a/src/app/register-email-form/register-email-form.component.spec.ts
+++ b/src/app/register-email-form/register-email-form.component.spec.ts
@@ -19,7 +19,7 @@ import { GoogleRecaptchaService } from '../core/google-recaptcha/google-recaptch
import { CookieService } from '../core/services/cookie.service';
import { CookieServiceMock } from '../shared/mocks/cookie.service.mock';
-describe('RegisterEmailComponent', () => {
+describe('RegisterEmailFormComponent', () => {
let comp: RegisterEmailFormComponent;
let fixture: ComponentFixture;
@@ -105,7 +105,7 @@ describe('RegisterEmailComponent', () => {
comp.form.patchValue({email: 'valid@email.org'});
comp.register();
- expect(epersonRegistrationService.registerEmail).toHaveBeenCalledWith('valid@email.org');
+ expect(epersonRegistrationService.registerEmail).toHaveBeenCalledWith('valid@email.org', null, null);
expect(notificationsService.success).toHaveBeenCalled();
expect(router.navigate).toHaveBeenCalledWith(['/home']);
});
@@ -115,7 +115,7 @@ describe('RegisterEmailComponent', () => {
comp.form.patchValue({email: 'valid@email.org'});
comp.register();
- expect(epersonRegistrationService.registerEmail).toHaveBeenCalledWith('valid@email.org');
+ expect(epersonRegistrationService.registerEmail).toHaveBeenCalledWith('valid@email.org', null, null);
expect(notificationsService.error).toHaveBeenCalled();
expect(router.navigate).not.toHaveBeenCalled();
});
@@ -133,7 +133,7 @@ describe('RegisterEmailComponent', () => {
comp.form.patchValue({email: 'valid@email.org'});
comp.register();
tick();
- expect(epersonRegistrationService.registerEmail).toHaveBeenCalledWith('valid@email.org', 'googleRecaptchaToken');
+ expect(epersonRegistrationService.registerEmail).toHaveBeenCalledWith('valid@email.org', 'googleRecaptchaToken', null);
expect(notificationsService.success).toHaveBeenCalled();
expect(router.navigate).toHaveBeenCalledWith(['/home']);
}));
@@ -144,7 +144,7 @@ describe('RegisterEmailComponent', () => {
comp.register();
tick();
- expect(epersonRegistrationService.registerEmail).toHaveBeenCalledWith('valid@email.org', 'googleRecaptchaToken');
+ expect(epersonRegistrationService.registerEmail).toHaveBeenCalledWith('valid@email.org', 'googleRecaptchaToken', null);
expect(notificationsService.error).toHaveBeenCalled();
expect(router.navigate).not.toHaveBeenCalled();
}));
diff --git a/src/app/register-email-form/register-email-form.component.ts b/src/app/register-email-form/register-email-form.component.ts
index 0da026ac1a..a494a81c35 100644
--- a/src/app/register-email-form/register-email-form.component.ts
+++ b/src/app/register-email-form/register-email-form.component.ts
@@ -37,6 +37,12 @@ export class RegisterEmailFormComponent implements OnInit {
@Input()
MESSAGE_PREFIX: string;
+ /**
+ * Type of register request to be done, register new email or forgot password (same endpoint)
+ */
+ @Input()
+ typeRequest: string = null;
+
public AlertTypeEnum = AlertType;
/**
@@ -155,13 +161,9 @@ export class RegisterEmailFormComponent implements OnInit {
* Registration of an email address
*/
registration(captchaToken = null) {
- let typeMap = new Map([
- ['register-page.registration', 'register'],
- ['forgot-email.form', 'forgot']
- ]);
let registerEmail$ = captchaToken ?
- this.epersonRegistrationService.registerEmail(this.email.value, captchaToken, typeMap.get(this.MESSAGE_PREFIX)) :
- this.epersonRegistrationService.registerEmail(this.email.value, null, typeMap.get(this.MESSAGE_PREFIX));
+ this.epersonRegistrationService.registerEmail(this.email.value, captchaToken, this.typeRequest) :
+ this.epersonRegistrationService.registerEmail(this.email.value, null, this.typeRequest);
registerEmail$.subscribe((response: RemoteData) => {
if (response.hasSucceeded) {
this.notificationService.success(this.translateService.get(`${this.MESSAGE_PREFIX}.success.head`),
diff --git a/src/app/register-page/register-email/register-email.component.html b/src/app/register-page/register-email/register-email.component.html
index a60dc4c31e..80b6885272 100644
--- a/src/app/register-page/register-email/register-email.component.html
+++ b/src/app/register-page/register-email/register-email.component.html
@@ -1,3 +1,3 @@
+ [MESSAGE_PREFIX]="'register-page.registration'" [typeRequest]="'register'">