public async Task <IActionResult> VerificationCodeSubmit([FromBody] VerificationCodeSubmitData data) { var jwt = await _cognizantIdentity.SubmitVerificationCodeAsync(data); if (jwt != null) { AddJwtToCookie(jwt); return(Ok(jwt)); } return(Unauthorized()); }
public async Task <string> SubmitVerificationCodeAsync(VerificationCodeSubmitData data) { string loginEmail = data.FacebookEmail != null ? data.FacebookEmail : data.GoogleEmail; UnauthorizedUserDto user = _userlogic.GetUnauthorizedUser(loginEmail); if (user.VerificationCode != data.VerificationCode) { return(null); } string originalLoginEmail = GetOriginalLoginEmail(loginEmail); _userlogic.VerifyUser(data.FacebookEmail != null, originalLoginEmail); var localUser = _userRepository.GetUserByEmail(EmailType.LOGIN, originalLoginEmail); var jwtIdentity = _jwtFactory.GenerateClaimsIdentity(localUser.UserName, localUser.Id); var jwt = await _jwtFactory.GenerateEncodedToken(localUser.UserName, jwtIdentity); return(jwt); }
public async Task SubmitVerificationCode_FacebookEmail_ReturnsNotNull() { string token = "token"; string facebookEmail = "*****@*****.**"; int verificationCode = 1; User user = new User { UserName = facebookEmail, CognizantEmail = "*****@*****.**" }; UserDto userDto = new UserDto { Email = facebookEmail, CognizantEmail = "*****@*****.**" }; UnauthorizedUserDto unauthorizedUser = new UnauthorizedUserDto { VerificationCode = verificationCode, Email = facebookEmail }; sgSettings.SetupGet(x => x.Value).Returns(new SendGridSettings { APIKey = "key" }); userRepository.Setup(x => x.GetUserByEmail(EmailType.LOGIN, facebookEmail)).Returns(user); userLogic.Setup(x => x.GetUserByEmail(EmailType.FACEBOOK, facebookEmail)).Returns(userDto); userLogic.Setup(x => x.GetUnauthorizedUser(facebookEmail)).Returns(unauthorizedUser); jwtFactory.Setup(x => x.GenerateEncodedToken(facebookEmail, It.IsAny <System.Security.Claims.ClaimsIdentity>())).Returns(Task.FromResult(token)); var cognizantIdentity = new CognizantIdentity(userLogic.Object, sgSettings.Object, userRepository.Object, jwtFactory.Object); var codeData = new VerificationCodeSubmitData { FacebookEmail = facebookEmail, VerificationCode = verificationCode }; Assert.AreEqual(await cognizantIdentity.SubmitVerificationCodeAsync(codeData), token); }