diff --git a/feature-libs/user/profile/occ/adapters/config/default-occ-user-profile-endpoint.config.ts b/feature-libs/user/profile/occ/adapters/config/default-occ-user-profile-endpoint.config.ts index b2b4a7bc457..f2904946b49 100644 --- a/feature-libs/user/profile/occ/adapters/config/default-occ-user-profile-endpoint.config.ts +++ b/feature-libs/user/profile/occ/adapters/config/default-occ-user-profile-endpoint.config.ts @@ -12,6 +12,7 @@ export const defaultOccUserProfileConfig: OccConfig = { endpoints: { userRegister: 'users', userForgotPassword: 'forgottenpasswordtokens', + userRestoreToken: 'passwordRestoreToken', userResetPassword: 'resetpassword', userUpdateLoginId: 'users/${userId}/login', userUpdatePassword: 'users/${userId}/password', diff --git a/feature-libs/user/profile/occ/adapters/config/occ-user-profile-endpoint.model.ts b/feature-libs/user/profile/occ/adapters/config/occ-user-profile-endpoint.model.ts index 501bcd60eb4..3943f4842c6 100644 --- a/feature-libs/user/profile/occ/adapters/config/occ-user-profile-endpoint.model.ts +++ b/feature-libs/user/profile/occ/adapters/config/occ-user-profile-endpoint.model.ts @@ -22,6 +22,11 @@ export interface UserProfileOccEndpoints { */ userForgotPassword?: string | OccEndpoint; + /** + * Request an email to reset the password + */ + userRestoreToken?: string | OccEndpoint; + /** * Reset the password once the email is received. */ diff --git a/feature-libs/user/profile/occ/adapters/occ-user-profile.adapter.spec.ts b/feature-libs/user/profile/occ/adapters/occ-user-profile.adapter.spec.ts index cb227f91912..21ebafb1ad3 100644 --- a/feature-libs/user/profile/occ/adapters/occ-user-profile.adapter.spec.ts +++ b/feature-libs/user/profile/occ/adapters/occ-user-profile.adapter.spec.ts @@ -233,16 +233,15 @@ describe('OccUserProfileAdapter', () => { .subscribe((result) => expect(result).toEqual('')); const mockReq = httpMock.expectOne((req) => { - return ( - req.method === 'POST' && - req.serializeBody() === `userId=${testUserId}` - ); + return req.method === 'POST' && req.url === '/userRestoreToken'; }); + expect(occEndpointsService.buildUrl).toHaveBeenCalledWith( - 'userForgotPassword' + 'userRestoreToken' ); expect(mockReq.cancelled).toBeFalsy(); + expect(mockReq.request.body).toEqual({ loginId: testUserId }); mockReq.flush(''); }); }); @@ -301,18 +300,12 @@ describe('OccUserProfileAdapter', () => { const currentPassword = 'Qwe123!'; const newUserId = 'tester@sap.com'; - let result: Object; - occUserAdapter .updateEmail(userId, currentPassword, newUserId) - .subscribe((value) => (result = value)); + .subscribe(); const mockReq = httpMock.expectOne((req) => { - return ( - req.method === 'PUT' && - req.serializeBody() === - `password=${currentPassword}&newLogin=${newUserId}` - ); + return req.method === 'POST' && req.url === '/userUpdateLoginId'; }); expect(occEndpointsService.buildUrl).toHaveBeenCalledWith( @@ -320,9 +313,11 @@ describe('OccUserProfileAdapter', () => { { urlParams: { userId } } ); expect(mockReq.cancelled).toBeFalsy(); - + expect(mockReq.request.body).toEqual({ + newLoginId: newUserId, + password: currentPassword, + }); mockReq.flush(''); - expect(result).toEqual(''); }); }); @@ -332,17 +327,12 @@ describe('OccUserProfileAdapter', () => { const oldPassword = 'OldPass123!'; const newPassword = 'NewPass456!'; - let result: Object; - occUserAdapter .updatePassword(userId, oldPassword, newPassword) - .subscribe((value) => (result = value)); + .subscribe(); const mockReq = httpMock.expectOne((req) => { - return ( - req.method === 'PUT' && - req.serializeBody() === `old=${oldPassword}&new=${newPassword}` - ); + return req.method === 'POST' && req.url === '/userUpdatePassword'; }); expect(occEndpointsService.buildUrl).toHaveBeenCalledWith( @@ -351,8 +341,11 @@ describe('OccUserProfileAdapter', () => { ); expect(mockReq.cancelled).toBeFalsy(); + expect(mockReq.request.body).toEqual({ + oldPassword: oldPassword, + newPassword: newPassword, + }); mockReq.flush(''); - expect(result).toEqual(''); }); }); diff --git a/feature-libs/user/profile/occ/adapters/occ-user-profile.adapter.ts b/feature-libs/user/profile/occ/adapters/occ-user-profile.adapter.ts index d456efafe8e..1dd95092eac 100644 --- a/feature-libs/user/profile/occ/adapters/occ-user-profile.adapter.ts +++ b/feature-libs/user/profile/occ/adapters/occ-user-profile.adapter.ts @@ -96,16 +96,11 @@ export class OccUserProfileAdapter implements UserProfileAdapter { } requestForgotPasswordEmail(userEmailAddress: string): Observable { - const url = this.occEndpoints.buildUrl('userForgotPassword'); - const httpParams: HttpParams = new HttpParams().set( - 'userId', - userEmailAddress - ); - let headers = new HttpHeaders({ - ...CONTENT_TYPE_URLENCODED_HEADER, - }); + const url = this.occEndpoints.buildUrl('userRestoreToken'); + const body = { loginId: userEmailAddress }; + let headers = new HttpHeaders(CONTENT_TYPE_JSON_HEADER); headers = InterceptorUtil.createHeader(USE_CLIENT_TOKEN, true, headers); - return this.http.post(url, httpParams, { headers }).pipe( + return this.http.post(url, body, { headers }).pipe( catchError((error) => { throw normalizeHttpError(error, this.logger); }) @@ -134,13 +129,12 @@ export class OccUserProfileAdapter implements UserProfileAdapter { const url = this.occEndpoints.buildUrl('userUpdateLoginId', { urlParams: { userId }, }); - const httpParams: HttpParams = new HttpParams() - .set('password', currentPassword) - .set('newLogin', newUserId); - const headers = new HttpHeaders({ - ...CONTENT_TYPE_URLENCODED_HEADER, - }); - return this.http.put(url, httpParams, { headers }).pipe( + const body = { + newLoginId: newUserId, + password: currentPassword, + }; + const headers = new HttpHeaders(CONTENT_TYPE_JSON_HEADER); + return this.http.post(url, body, { headers }).pipe( catchError((error) => { throw normalizeHttpError(error, this.logger); }) @@ -155,13 +149,12 @@ export class OccUserProfileAdapter implements UserProfileAdapter { const url = this.occEndpoints.buildUrl('userUpdatePassword', { urlParams: { userId }, }); - const httpParams: HttpParams = new HttpParams() - .set('old', oldPassword) - .set('new', newPassword); - const headers = new HttpHeaders({ - ...CONTENT_TYPE_URLENCODED_HEADER, - }); - return this.http.put(url, httpParams, { headers }).pipe( + const body = { + oldPassword: oldPassword, + newPassword: newPassword, + }; + const headers = new HttpHeaders(CONTENT_TYPE_JSON_HEADER); + return this.http.post(url, body, { headers }).pipe( catchError((error) => { throw normalizeHttpError(error, this.logger); })