public async Task <IActionResult> RegisterUser(string phone) { UserModel userModel = new UserModel { Email = "*****@*****.**", CountryCode = "+84", PhoneNumber = phone }; var authyId = await _authy.RegisterUserAsync(userModel).ConfigureAwait(false); if (string.IsNullOrEmpty(authyId)) { return(Json(new { success = false })); } else { //update authyId in database Customer khachHang = _context.Customer.SingleOrDefault(kh => kh.PhoneNumber == phone); if (khachHang != null) { khachHang.AuthyId = authyId; _context.SaveChanges(); } return(Json(new { success = true, authyId = authyId })); } }
public async Task <IActionResult> Register([Bind("UserName", "Password", "FirstName", "LastName", "Sex", "Address", "Email", "PhoneNumber")] UserRegister userRegister, [Bind("TwoFactorCheck")] bool TwoFactorCheck, [Bind("fFile")] IFormFile fFile) { Customer customerSimilar = _ctx.Customer.AsNoTracking().FirstOrDefault(p => p.UserName == userRegister.UserName); if (customerSimilar == null) { Customer customer = _mapper.Map <UserRegister, Customer>(userRegister); if (ModelState.IsValid) { //thiếu check mail, phone,... customer.Password = MyHashTool.GetMd5Hash(customer.Password); //thêm ảnh đại diện string fileName = UploadAnh(fFile); if (fileName != null) { customer.Image = fileName; } else { customer.Image = ""; } customer.IsActive = true; Roles role = _ctx.Roles.AsNoTracking().SingleOrDefault(p => p.RoleName == "Customer"); customer.Role = role.RoleId; customer.PhoneNumberConfirmed = false; UserModel userModel = new UserModel { Email = customer.Email, CountryCode = "+84", PhoneNumber = (customer.PhoneNumber.Length > 9) ? customer.PhoneNumber.Substring(1) : customer.PhoneNumber }; //Lấy authy id var authyId = await _authy.RegisterUserAsync(userModel).ConfigureAwait(false); _ctx.Add(customer); _ctx.SaveChanges(); if (string.IsNullOrEmpty(authyId)) { //return Json(new { success = false }); ViewBag.RegisterResult = "Đăng ký thành công"; ViewBag.RegisterSMS = "Xác thực số điện thoại thất bại"; return(View("Login")); } else { //update authyId in database customer.AuthyId = authyId; _ctx.Update(customer); await _ctx.SaveChangesAsync(); if (TwoFactorCheck == true) { ViewBag.CustomerId = customer.CustomerId; // Gửi sms mã xác nhận var sendSMSResponse = await _authy.SendSmsAsync(customer.AuthyId).ConfigureAwait(false); if (sendSMSResponse.StatusCode == HttpStatusCode.OK) { var smsVerificationSucceedObject = JsonConvert.DeserializeObject <AccessCodeVerifyResult>(await sendSMSResponse.Content.ReadAsStringAsync()); if (smsVerificationSucceedObject.Success) { ViewBag.CustomerId = customer.CustomerId; ViewBag.ResultSMS = "Gửi mã thành công!"; //Send SMS success return(View("VerifyUser")); } else { ViewBag.ResultSMS = "Gửi mã thất bại!"; ViewBag.CustomerId = customer.CustomerId; //Fail return(View("VerifyUser")); } } else { ViewBag.ResultSMS = "Gửi mã thất bại!"; return(View("Login")); } } else { ViewBag.RegisterResult = "Đăng ký thành công"; return(View("Login")); } } } } ViewBag.RegisterResult = "Trùng tên đăng nhập hoặc mật khẩu"; return(View()); }
public async Task <JsonResult> VerifyAndCompletePhoneRegistration(TokenVerificationModel tokenVerification) { var verificationRequest = HttpContext.Session.Get <PhoneVerificationRequestModel>("phone_verification_request"); if (verificationRequest == null) { var response = new ResultModel(); response.Errors.Add(new ErrorModel(string.Empty, "A request to send the token to the phone was not made")); response.Errors.Add(new ErrorModel(string.Empty, $"To start, call: {nameof(StartRegisterBySendingVerificationRequest)}")); return(Json(response)); } if (!ModelState.IsValid) { return(JsonModelStateErrors()); } var validationResult = await _authy.VerifyPhoneTokenAsync( verificationRequest.PhoneNumber, verificationRequest.CountryCode, tokenVerification.Token ); if (!validationResult.IsSuccess) { return(Json(validationResult)); } var phone = _authy.NormalizePhoneNumber(verificationRequest.CountryCode, verificationRequest.PhoneNumber); var addNewUserRequest = await _authy.RegisterUserAsync(new RegisterViewModel { CountryCode = verificationRequest.CountryCode, PhoneNumber = verificationRequest.PhoneNumber, Password = verificationRequest.Pin, UserName = verificationRequest.PhoneNumber }); if (!addNewUserRequest.IsSuccess) { return(Json(addNewUserRequest)); } var user = new GearUser { PhoneNumber = phone, UserName = phone, IsEditable = true, PhoneNumberConfirmed = true }; var createRequest = await _userManager.CreateUserAsync(user, verificationRequest.Pin); if (!createRequest.IsSuccess) { return(!createRequest.IsSuccess ? Json(createRequest) : Json(validationResult)); } var setTokenResult = await _userManager .UserManager .SetAuthenticationTokenAsync(user, PhoneVerificationResources.LOGIN_PROVIDER_NAME, PhoneVerificationResources.AUTHY_TOKEN, addNewUserRequest.Result); if (setTokenResult.Succeeded) { return(!createRequest.IsSuccess ? Json(createRequest) : Json(validationResult)); } var tokenResponse = new ResultModel(); tokenResponse.AppendIdentityErrors(setTokenResult.Errors); return(Json(tokenResponse)); }
public async Task <IActionResult> DoiTT() { string hoten = HttpContext.Request.Form["hoten"].ToString(); string gioi = HttpContext.Request.Form["gioi"].ToString(); string diachi = HttpContext.Request.Form["diachi"].ToString(); string ngaysinh = HttpContext.Request.Form["ngaysinh"].ToString(); string sdt = HttpContext.Request.Form["sdt"].ToString(); //Check number is valid in Vietnam (Ex: 0977666333 is valid, 01234567899 is not valid) bool isSdt = Regex.IsMatch(sdt, @"(3\d{8}|5\d{8}|7\d{8}|8\d{8}|9\d{8})", RegexOptions.IgnoreCase); string email = HttpContext.Request.Form["email"].ToString(); //Check email is valid? bool isEmail = Regex.IsMatch(email, @"\A(?:[a-z0-9!#$%&'*+/=?^_`{|}~-]+(?:\.[a-z0-9!#$%&'*+/=?^_`{|}~-]+)*@(?:[a-z0-9](?:[a-z0-9-]*[a-z0-9])?\.)+[a-z0-9](?:[a-z0-9-]*[a-z0-9])?)\Z", RegexOptions.IgnoreCase); bool check_email_changed = false; try { KhachHang kh = HttpContext.Session.Get <KhachHang>("TaiKhoan"); Encrytion ecr = new Encrytion(); var query = from info in db.KhachHang where info.MaKh == kh.MaKh select info; foreach (KhachHang ds in query) { //ds.HoTen = ecr.EncryptString(hoten, key); ds.HoTen = hoten; kh.HoTen = ds.HoTen; if (gioi == "False") { ds.GioiTinh = false; kh.GioiTinh = ds.GioiTinh; } else { ds.GioiTinh = true; kh.GioiTinh = ds.GioiTinh; } //ds.DiaChi = ecr.EncryptString(diachi, key); ds.DiaChi = diachi; kh.DiaChi = ds.DiaChi; ds.NgaySinh = Convert.ToDateTime(ngaysinh); kh.NgaySinh = ds.NgaySinh; if (isSdt) { //ds.DienThoai = ecr.EncryptString(sdt, key); ds.DienThoai = sdt; kh.DienThoai = ds.DienThoai; } else { throw (new UserDefException("Số điện thoại không hợp lệ!")); } if (isEmail) { if (email != kh.Email) { check_email_changed = true; } //ds.Email = ecr.EncryptString(email, key); ds.Email = email; kh.Email = ds.Email; } else { throw new UserDefException("Email không hợp lệ!"); } } if (check_email_changed) { UserModel userModel = new UserModel { Email = kh.Email, CountryCode = "+84", PhoneNumber = kh.DienThoai }; var authyId = await _authy.RegisterUserAsync(userModel).ConfigureAwait(false); if (string.IsNullOrEmpty(authyId)) { //return Json(new { success = false }); throw new UserDefException("Số điện thoại chưa chuẩn?"); } else { //update authyId in database //khachHang = db.KhachHang.SingleOrDefault(kh => kh.PhoneNumber == phonenum); if (kh != null) { kh.AuthyId = authyId; /*kh.PhoneNumberConfirmed = false; * db.Add(kh); * await db.SaveChangesAsync();*/ } //return Json(new { success = true, authyId = authyId }); } SmsMessage model = new SmsMessage { NameTo = kh.HoTen, NumberFrom = "+84352326234", NumberTo = "+84" + kh.DienThoai, Body = "Bạn đã thay đổi email lúc" + DateTime.Now.ToString() + ". Nếu có vấn đề vui lòng liên hệ Admin.", Greeting = "Thanh", Signature = "Cosmetic Project" }; await _smsService.Send(model); } HttpContext.Session.Set("TaiKhoan", kh); ViewBag.Result2 = "Đã cập nhật thông tin thành công!"; db.SaveChanges(); return(View("Index")); } catch (UserDefException e) { ViewBag.Result2 = e.Message; } catch (Exception e) { ViewBag.Result2 = e.Message; } return(View("Index")); }