fixes on merge account
This commit is contained in:
parent
6d5b6f4859
commit
081e0fca11
|
@ -611,7 +611,28 @@ public class UserServiceImpl implements UserService {
|
||||||
}
|
}
|
||||||
|
|
||||||
public boolean doesTokenBelongToLoggedInUser(String token) throws IOException, InvalidApplicationException {
|
public boolean doesTokenBelongToLoggedInUser(String token) throws IOException, InvalidApplicationException {
|
||||||
UserEntity userToBeMerge = this.getUserEntityFromToken(token);
|
ActionConfirmationEntity action;
|
||||||
|
try {
|
||||||
|
this.entityManager.disableTenantFilters();
|
||||||
|
action = this.queryFactory.query(ActionConfirmationQuery.class).disableTracking().tokens(token).types(ActionConfirmationType.MergeAccount).isActive(IsActive.Active).first();
|
||||||
|
} finally {
|
||||||
|
this.entityManager.reloadTenantFilters();
|
||||||
|
}
|
||||||
|
if (action == null) throw new MyNotFoundException(this.messageSource.getMessage("General_ItemNotFound", new Object[]{token, ActionConfirmationEntity.class.getSimpleName()}, LocaleContextHolder.getLocale()));
|
||||||
|
|
||||||
|
this.checkActionState(action);
|
||||||
|
|
||||||
|
MergeAccountConfirmationEntity mergeAccountConfirmationEntity = this.xmlHandlingService.fromXmlSafe(MergeAccountConfirmationEntity.class, action.getData());
|
||||||
|
if (mergeAccountConfirmationEntity == null) throw new MyNotFoundException(this.messageSource.getMessage("General_ItemNotFound", new Object[]{action.getId(), MergeAccountConfirmationEntity.class.getSimpleName()}, LocaleContextHolder.getLocale()));
|
||||||
|
|
||||||
|
UserContactInfoEntity userContactInfoEntity = this.queryFactory.query(UserContactInfoQuery.class).disableTracking().values(mergeAccountConfirmationEntity.getEmail()).types(ContactInfoType.Email).first();
|
||||||
|
if (userContactInfoEntity == null) throw new MyNotFoundException(this.messageSource.getMessage("General_ItemNotFound", new Object[]{mergeAccountConfirmationEntity.getEmail(), User.class.getSimpleName()}, LocaleContextHolder.getLocale()));
|
||||||
|
|
||||||
|
UserEntity userToBeMerge = this.queryFactory.query(UserQuery.class).disableTracking().ids(userContactInfoEntity.getUserId()).isActive(IsActive.Active).first();
|
||||||
|
|
||||||
|
if (userToBeMerge == null) throw new MyNotFoundException(this.messageSource.getMessage("General_ItemNotFound", new Object[]{userContactInfoEntity.getUserId(), User.class.getSimpleName()}, LocaleContextHolder.getLocale()));
|
||||||
|
|
||||||
|
if (!this.userScope.getUserIdSafe().equals(userToBeMerge.getId())) throw new MyForbiddenException("Only requested user can approve");
|
||||||
|
|
||||||
return this.userScope.getUserIdSafe().equals(userToBeMerge.getId());
|
return this.userScope.getUserIdSafe().equals(userToBeMerge.getId());
|
||||||
}
|
}
|
||||||
|
@ -879,29 +900,4 @@ public class UserServiceImpl implements UserService {
|
||||||
throw new MyApplicationException("Token has expired!");
|
throw new MyApplicationException("Token has expired!");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private UserEntity getUserEntityFromToken(String token) throws MyForbiddenException, MyNotFoundException, InvalidApplicationException {
|
|
||||||
ActionConfirmationEntity action;
|
|
||||||
try {
|
|
||||||
this.entityManager.disableTenantFilters();
|
|
||||||
action = this.queryFactory.query(ActionConfirmationQuery.class).tokens(token).types(ActionConfirmationType.MergeAccount).isActive(IsActive.Active).first();
|
|
||||||
} finally {
|
|
||||||
this.entityManager.reloadTenantFilters();
|
|
||||||
}
|
|
||||||
if (action == null) throw new MyNotFoundException(this.messageSource.getMessage("General_ItemNotFound", new Object[]{token, ActionConfirmationEntity.class.getSimpleName()}, LocaleContextHolder.getLocale()));
|
|
||||||
|
|
||||||
this.checkActionState(action);
|
|
||||||
|
|
||||||
MergeAccountConfirmationEntity mergeAccountConfirmationEntity = this.xmlHandlingService.fromXmlSafe(MergeAccountConfirmationEntity.class, action.getData());
|
|
||||||
if (mergeAccountConfirmationEntity == null) throw new MyNotFoundException(this.messageSource.getMessage("General_ItemNotFound", new Object[]{action.getId(), MergeAccountConfirmationEntity.class.getSimpleName()}, LocaleContextHolder.getLocale()));
|
|
||||||
|
|
||||||
UserContactInfoEntity userContactInfoEntity = this.queryFactory.query(UserContactInfoQuery.class).values(mergeAccountConfirmationEntity.getEmail()).types(ContactInfoType.Email).first();
|
|
||||||
if (userContactInfoEntity == null) throw new MyNotFoundException(this.messageSource.getMessage("General_ItemNotFound", new Object[]{mergeAccountConfirmationEntity.getEmail(), User.class.getSimpleName()}, LocaleContextHolder.getLocale()));
|
|
||||||
|
|
||||||
UserEntity userToBeMerge = this.queryFactory.query(UserQuery.class).ids(userContactInfoEntity.getUserId()).isActive(IsActive.Active).first();
|
|
||||||
|
|
||||||
if (userToBeMerge == null) throw new MyNotFoundException(this.messageSource.getMessage("General_ItemNotFound", new Object[]{userContactInfoEntity.getUserId(), User.class.getSimpleName()}, LocaleContextHolder.getLocale()));
|
|
||||||
|
|
||||||
return userToBeMerge;
|
|
||||||
}
|
|
||||||
}
|
}
|
|
@ -297,8 +297,7 @@ public class UserController {
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
@GetMapping("mine/get-permission/token/{token}")
|
@GetMapping("mine/allow-merge-account/token/{token}")
|
||||||
@Transactional
|
|
||||||
public Boolean getUserTokenPermission(@PathVariable("token") String token) throws InvalidApplicationException, IOException {
|
public Boolean getUserTokenPermission(@PathVariable("token") String token) throws InvalidApplicationException, IOException {
|
||||||
logger.debug(new MapLogEntry("confirm merge account to user").And("token", token));
|
logger.debug(new MapLogEntry("confirm merge account to user").And("token", token));
|
||||||
|
|
||||||
|
|
|
@ -118,7 +118,7 @@ export class UserService {
|
||||||
}
|
}
|
||||||
|
|
||||||
getUserTokenPermission(token: Guid): Observable<boolean> {
|
getUserTokenPermission(token: Guid): Observable<boolean> {
|
||||||
const url = `${this.apiBase}/mine/get-permission/token/${token}`;
|
const url = `${this.apiBase}/mine/allow-merge-account/token/${token}`;
|
||||||
|
|
||||||
return this.http
|
return this.http
|
||||||
.get<boolean>(url).pipe(
|
.get<boolean>(url).pipe(
|
||||||
|
|
|
@ -4,7 +4,7 @@
|
||||||
<div class="col merge-account-title">{{'MERGE-ACCOUNT.TITLE' | translate}}</div>
|
<div class="col merge-account-title">{{'MERGE-ACCOUNT.TITLE' | translate}}</div>
|
||||||
</div>
|
</div>
|
||||||
<div *ngIf="showForm" class="row merge-account-content">
|
<div *ngIf="showForm" class="row merge-account-content">
|
||||||
<div *ngIf="isTokenValid" class="col">
|
<div class="col">
|
||||||
<div class="row justify-content-center">
|
<div class="row justify-content-center">
|
||||||
<div class="col-auto">
|
<div class="col-auto">
|
||||||
<span>
|
<span>
|
||||||
|
@ -20,9 +20,6 @@
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div *ngIf="!isTokenValid" class="col">
|
|
||||||
<span>{{'MERGE-ACCOUNT.MESSAGES.INVALID-TOKEN' | translate}}</span>
|
|
||||||
</div>
|
|
||||||
</div>
|
</div>
|
||||||
<ng-template #loading>
|
<ng-template #loading>
|
||||||
</ng-template>
|
</ng-template>
|
||||||
|
|
|
@ -43,15 +43,12 @@ export class MergeEmailConfirmation extends BaseComponent implements OnInit {
|
||||||
.subscribe(result => {
|
.subscribe(result => {
|
||||||
this.isTokenValid = result
|
this.isTokenValid = result
|
||||||
this.token = token;
|
this.token = token;
|
||||||
|
}, error => {
|
||||||
|
this.token = Guid.createEmpty();
|
||||||
|
this.onCallbackError(error);
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
},
|
|
||||||
error => {
|
|
||||||
this.isTokenValid = false;
|
|
||||||
this.token = Guid.createEmpty();
|
|
||||||
this.onCallbackError(error);
|
|
||||||
});
|
});
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
onConfirm(): void {
|
onConfirm(): void {
|
||||||
|
|
|
@ -28,7 +28,7 @@
|
||||||
"UNSUCCESSFUL-REMOVE-TEMPLATE": "Failed to remove template, one or more Descriptions of this Plan use this template",
|
"UNSUCCESSFUL-REMOVE-TEMPLATE": "Failed to remove template, one or more Descriptions of this Plan use this template",
|
||||||
"UNSUCCESSFUL-FINALIZE": "Unsuccessful Finalize",
|
"UNSUCCESSFUL-FINALIZE": "Unsuccessful Finalize",
|
||||||
"SUCCESSFUL-RESET": "Successful Reset",
|
"SUCCESSFUL-RESET": "Successful Reset",
|
||||||
"NOT-FOUND": "The page you are looking for doesn't exist.",
|
"NOT-FOUND": "Not found.",
|
||||||
"GENERIC-ERROR": "Something unexpected occurred. Please try again later.",
|
"GENERIC-ERROR": "Something unexpected occurred. Please try again later.",
|
||||||
"REDIRECT": "You're being redirected.",
|
"REDIRECT": "You're being redirected.",
|
||||||
"BAD-REQUEST": "There was a problem with your request. Please try again.",
|
"BAD-REQUEST": "There was a problem with your request. Please try again.",
|
||||||
|
|
Loading…
Reference in New Issue