public async Task <JsonResult> OnPostAsync([FromBody] ClientRegisterVM input) { var user = new IdentityUser { UserName = input.User.Email.ToLower(), Email = input.User.Email }; var result = await _userManager.CreateAsync(user, input.User.Password); var errorList = new List <string>(); dynamic jsonResponse = new JObject(); if (result.Succeeded) { SystemUser sysUser = new SystemUser() { Email = input.User.Email, Role = "Client" }; Client client = new Client { ClientName = input.Client.ClientName, ClientEmail = input.User.Email, ClientPhoneNumber = input.Client.ClientPhoneNumber, ClientCity = input.Client.ClientCity, ClientState = input.Client.ClientState, ClientDescription = input.Client.ClientDescription }; _context.SystemUser.Add(sysUser); sysUser.Client.Add(client); _context.SaveChanges(); AuthRepo registerRepo = new AuthRepo(_signInManager, _config, _serviceProvider, _context); var tokenString = registerRepo.GenerateJSONWebToken(user); jsonResponse.token = tokenString; jsonResponse.status = "OK"; jsonResponse.role = "Client"; jsonResponse.email = sysUser.Email; jsonResponse.id = client.ClientId; jsonResponse.name = client.ClientName; return(Json(jsonResponse)); } foreach (IdentityError error in result.Errors) { errorList.Add(error.Description); } jsonResponse.status = 422; jsonResponse.description = errorList[0]; jsonResponse.token = ""; return(Json(jsonResponse)); }
public async Task <IActionResult> ClientRegister([FromBody] ClientRegisterVM model) { model.ReturnUrl = PayPingOauthConsentUrl; try { //Check Existance of User Email var request = new RestRequest("EmailExist", Method.GET); request.AddQueryParameter("Email", model.Email); var result = await _client.ExecuteTaskAsync <ResultVM>(request); //If result is FALSE, then you can register user if (result.StatusCode == HttpStatusCode.OK && !result.Data.exist) { var registerRequest = new RestRequest("ClientRegisterInit", Method.POST); registerRequest.AddJsonBody(model); var resultId = await _client.ExecuteTaskAsync <ResultVM>(registerRequest); //If user Registered successfully, then redirect it to this url(PayPing Dashboard) //then user must click on notification to redirect itself to the Oauth Consent page if (resultId.StatusCode == HttpStatusCode.OK && !string.IsNullOrEmpty(resultId.Data.Id)) { return(Ok("https://oauth.payping.ir/client/ClientRegister?registerId=" + resultId.Data.Id)); } else { return(BadRequest("مشکلی در دریافت آیدی ثبت نام وجود دارد")); } } else { return(BadRequest("مشکلی در ایمیل وارد شده وجود دارد")); } } catch (System.Exception ex) { return(BadRequest(ex.Message)); } }