Example #1
0
        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 }));
            }
        }
Example #2
0
        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));
        }
Example #4
0
        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"));
        }