private async Task <ReturnSignUserResponse> MakeDecisionAsync(User user, bool isExternal, ReturnUrlRequest?returnUrl, CancellationToken token) { if (user.PhoneNumberConfirmed) { if (isExternal) { await _signInManager.SignInAsync(user, false); return(ReturnSignUserResponse.SignIn()); // return new ReturnSignUserResponse(false); } throw new ArgumentException(); } if (user.PhoneNumber != null) { var t1 = _signInManager.TempSignIn(user); var t2 = _client.SendSmsAsync(user, token); await Task.WhenAll(t1, t2); return(new ReturnSignUserResponse(RegistrationStep.RegisterVerifyPhone, new { phoneNumber = user.PhoneNumber })); } if (user.EmailConfirmed) { await _signInManager.TempSignIn(user); return(new ReturnSignUserResponse(RegistrationStep.RegisterSetPhone)); } await GenerateEmailAsync(user, returnUrl, token); return(new ReturnSignUserResponse(RegistrationStep.RegisterEmailConfirmed)); }
private async Task <RedirectToRouteResult> GoToStepAsync(User user, RegistrationStep step, string returnUrl) { await _signInManager.TempSignIn(user); var v = RedirectToRoute(RegisterController.RegisterRouteName, new { page = step.RoutePath, returnUrl = Url.IsLocalUrl(returnUrl) ? returnUrl : null }); return(v); }