public async Task <ActionResult> ChangePhone([FromForm] PostChangePhoneRequest request, CancellationToken ct) { if (request.OldPhone.Trim().ToLower() == request.NewPhone.Trim().ToLower()) { var getChangePhoneRequest = new GetChangePhoneRequest { OldPhone = request.OldPhone, NewPhone = request.NewPhone, IsPhoneNotChanged = true }; return(RedirectToAction("ChangePhone", getChangePhoneRequest)); } var isPhoneExists = await _identityStatusService.IsPhoneExistsAsync(request.NewPhone, ct); if (isPhoneExists) { var getChangePhoneRequest = new GetChangePhoneRequest { OldPhone = request.OldPhone, NewPhone = request.NewPhone, IsPhoneExists = true }; return(RedirectToAction("ChangePhone", getChangePhoneRequest)); } var response = await _phoneChangeService.ChangeAsync( request.Country, request.OldPhone, request.NewPhone, request.Password, IpAddress, UserAgent, ct); if (response.IsInvalidCredentials) { var getChangeEmailRequest = new GetChangePhoneRequest { OldPhone = request.OldPhone, NewPhone = request.NewPhone, IsInvalidCredentials = true }; return(RedirectToAction("ChangePhone", getChangeEmailRequest)); } var getVerifyPhoneRequest = new GetVerifyPhoneRequest { TokenId = response.TokenId, IsInvalidCode = false }; return(RedirectToAction("VerifyPhone", getVerifyPhoneRequest)); }
public ActionResult VerifyPhone(GetVerifyPhoneRequest request) { var model = new VerifyPhoneViewModel( request.TokenId, request.CallbackUri, request.Code, request.IsInvalidCode); return(View("~/OAuth/Views/VerifyPhone.cshtml", model)); }
public async Task <ActionResult> VerifyPhone([FromForm] PostVerifyPhoneRequest request, CancellationToken ct) { var isVerified = await _phoneVerificationService.VerifyAsync(request.TokenId, request.Code, ct); if (!isVerified) { var getVerifyPhoneRequest = new GetVerifyPhoneRequest { TokenId = request.TokenId, CallbackUri = request.CallbackUri, IsInvalidCode = true }; return(RedirectToAction("VerifyPhone", getVerifyPhoneRequest)); } if (request.CallbackUri.IsEmpty()) { return(View("~/OAuth/Views/PhoneVerified.cshtml")); } return(Redirect(request.CallbackUri)); }
public async Task <ActionResult> Register([FromForm] PostRegisterRequest request, CancellationToken ct) { var client = await _ioAuthClientsService.GetByClientIdAsync(request.client_id, ct); if (!client.IsValid()) { return(BadRequest("Client not found")); } if (!client.IsMatchRedirectUri(request)) { return(BadRequest("Invalid redirect uri")); } if (!client.IsScopesInclude(request.scope)) { return(BadRequest("Invalid scopes")); } if (request.Password != request.PasswordConfirmation) { var newRegisterRequest = new GetRegisterRequest { client_id = request.client_id, response_type = request.response_type, scope = request.scope, state = request.state, redirect_uri = request.redirect_uri, Surname = request.Surname, Name = request.Name, Login = request.Login, Email = request.Email, Phone = request.Phone, IsPasswordsNotEqual = true }; return(RedirectToAction("Register", newRegisterRequest)); } var isLoginExists = await _identityStatusService.IsLoginExistsAsync(request.Login, ct); var isEmailExists = await _identityStatusService.IsEmailExistsAsync(request.Email, ct); var isPhoneExists = await _identityStatusService.IsPhoneExistsAsync(request.Phone, ct); if (isLoginExists || isEmailExists || isPhoneExists) { var newRegisterRequest = new GetRegisterRequest { client_id = request.client_id, response_type = request.response_type, scope = request.scope, state = request.state, redirect_uri = request.redirect_uri, Surname = request.Surname, Name = request.Name, Login = request.Login, Email = request.Email, Phone = request.Phone, IsLoginExists = isLoginExists, IsEmailExists = isEmailExists, IsPhoneExists = isPhoneExists }; return(RedirectToAction("Register", newRegisterRequest)); } var phoneIdentityTokenId = await _registrationService.RegisterAsync( request.Country, request.Surname, request.Name, request.Login, request.Email, request.Phone, request.Password, IpAddress, UserAgent, ct); var authorizeResponse = await _oauthService.AuthorizeAsync( request.Country, request.Login, request.Password, request.response_type, request.redirect_uri, request.state, IpAddress, UserAgent, request.scope.ToScopeList(), client.Audience, ct); if (authorizeResponse.IsInvalidCredentials) { var newAuthorizeRequest = new GetAuthorizeRequest { client_id = request.client_id, response_type = request.response_type, scope = request.scope, state = request.state, redirect_uri = request.redirect_uri, IsInvalidCredentials = true }; return(RedirectToAction("Authorize", newAuthorizeRequest)); } var getVerifyPhoneRequest = new GetVerifyPhoneRequest { TokenId = phoneIdentityTokenId, CallbackUri = authorizeResponse.CallbackUri, IsInvalidCode = false }; if (_webHostEnvironment.IsDevelopment()) { var phoneIdentityToken = await _identityTokensService.GetAsync(phoneIdentityTokenId, ct); getVerifyPhoneRequest.Code = phoneIdentityToken?.Value; } return(RedirectToAction("VerifyPhone", getVerifyPhoneRequest)); }