diff --git a/src/In.ProjectEKA.HipService/UserAuth/UserAuthService.cs b/src/In.ProjectEKA.HipService/UserAuth/UserAuthService.cs index 45762bce..7cdd7eba 100644 --- a/src/In.ProjectEKA.HipService/UserAuth/UserAuthService.cs +++ b/src/In.ProjectEKA.HipService/UserAuth/UserAuthService.cs @@ -374,34 +374,14 @@ public async Task> HandleOnGenerateLinkT { healthId = getHealthId(accessToken); } - var authConfirm = new AuthConfirm(healthId, accessToken); - var savedAuthConfirm = userAuthRepository.Get(healthId).Result; - if (savedAuthConfirm.Equals(Option.Some(null))) + Tuple authConfirmResponse = await updateAuthConfirmRepository(healthId, accessToken); + if (authConfirmResponse.Item2 != null) { - var authConfirmResponse = await userAuthRepository.Add(authConfirm).ConfigureAwait(false); - if (!authConfirmResponse.HasValue) - { - return new Tuple(null, - new ErrorRepresentation(new Error(ErrorCode.DuplicateAuthConfirmRequest, - "Auth confirm request already exists"))); - } + return authConfirmResponse; } - else - { - userAuthRepository.Update(authConfirm); - } - var requestId = Guid.Parse(onGenerateTokenRequest.Response.RequestId); - UserAuthMap.RequestIdToAccessToken.Add(requestId, accessToken); - if (UserAuthMap.HealthIdToAccessToken.ContainsKey(healthId)) - { - UserAuthMap.HealthIdToAccessToken[healthId] = accessToken; - } - else - { - UserAuthMap.HealthIdToAccessToken.Add(healthId, accessToken); - } - return new Tuple(authConfirm, null); + updateUserAuthMaps(accessToken, healthId, requestId); + return authConfirmResponse; } public Error CheckAccessToken(string accessToken) @@ -424,5 +404,40 @@ public Error CheckAccessToken(string accessToken) } + private void updateUserAuthMaps(string accessToken, string healthId, Guid requestId) + { + UserAuthMap.RequestIdToAccessToken.Add(requestId, accessToken); + if (UserAuthMap.HealthIdToAccessToken.ContainsKey(healthId)) + { + UserAuthMap.HealthIdToAccessToken[healthId] = accessToken; + } + else + { + UserAuthMap.HealthIdToAccessToken.Add(healthId, accessToken); + } + } + + private async Task> updateAuthConfirmRepository(string healthId, string accessToken) + { + var authConfirm = new AuthConfirm(healthId, accessToken); + var savedAuthConfirm = userAuthRepository.Get(healthId).Result; + if (savedAuthConfirm.Equals(Option.Some(null))) + { + var authConfirmResponse = await userAuthRepository.Add(authConfirm).ConfigureAwait(false); + if (!authConfirmResponse.HasValue) + { + return new Tuple(null, + new ErrorRepresentation(new Error(ErrorCode.DuplicateAuthConfirmRequest, + "Auth confirm request already exists"))); + } + } + else + { + userAuthRepository.Update(authConfirm); + } + + return new Tuple(authConfirm, null); + } + } } \ No newline at end of file