diff --git a/src/STS/Utils/MergeUtil.cs b/src/STS/Utils/MergeUtil.cs index 19ec9f170a7977546a4ce739f142f9454f3a880c..cbe4f048d343d4f02ef634c9d128f41d5379ddee 100644 --- a/src/STS/Utils/MergeUtil.cs +++ b/src/STS/Utils/MergeUtil.cs @@ -16,6 +16,7 @@ namespace Coscine.Api.STS.Utils private readonly ResourceModel _resourceModel; private readonly RoleModel _roleModel; private readonly TOSModel _tosModel; + private readonly ApiTokenModel _apiTokenModel; private readonly UserModel _userModel; private readonly UserDisciplineModel _userDisciplineModel; @@ -33,6 +34,7 @@ namespace Coscine.Api.STS.Utils _resourceModel = new ResourceModel(); _roleModel = new RoleModel(); _tosModel = new TOSModel(); + _apiTokenModel = new ApiTokenModel(); _userModel = new UserModel(); _userDisciplineModel = new UserDisciplineModel(); @@ -45,6 +47,7 @@ namespace Coscine.Api.STS.Utils MergeUserDiscipline(mergeIntoUser, mergeFromUser); MergeResourceOwner(mergeIntoUser, mergeFromUser); MergeTOSAccepted(mergeIntoUser, mergeFromUser); + MergeApiTokens(mergeIntoUser, mergeFromUser); MergeUserProperties(mergeIntoUser, mergeFromUser); // ExternalId gets merged last, in case something goes wrong MergeExternalId(mergeIntoUser, mergeFromUser); @@ -169,6 +172,15 @@ namespace Coscine.Api.STS.Utils } } + private void MergeApiTokens(User mergeIntoUser, User mergeFromUser) + { + foreach (var apiToken in _apiTokenModel.GetAllWhere((entry) => entry.UserId == mergeFromUser.Id)) + { + apiToken.UserId = mergeIntoUser.Id; + _apiTokenModel.Update(apiToken); + } + } + private void MergeUserProperties(User mergeIntoUser, User mergeFromUser) { if (string.IsNullOrEmpty(mergeIntoUser.EmailAddress) && !string.IsNullOrEmpty(mergeFromUser.EmailAddress))