Пример #1
0
        //[ValidateAntiForgeryToken]
        public IActionResult RegisterUser([FromBody] UserRegisterModel model)
        {
            //this.ViewData["ReturnUrl"] = model.returnUrl;

            SwalMessage swal = new SwalMessage();

            List <string> errors = new List <string>();

            if (ModelState.IsValid)
            {
                if (!model.AcceptCondition)
                {
                    swal.MessageType = false;
                    swal.Message     = _localizer.GetString("web.Please Accept Terms and Conditions");
                    swal.Header      = _localizer.GetString("web.Error");
                    swal.SwalType    = "error";
                    return(Json(swal));
                }
                errors = _userRepository.GetByUserNameOrEmail(model.Email, model.Email);
                if (errors.Count > 0)
                {
                    swal.MessageType = false;
                    swal.Message     = _localizer.GetString("web.Duplicate Email");
                    swal.Header      = _localizer.GetString("web.Error");
                    swal.SwalType    = "error";
                    return(Json(swal));
                }

                if (model.Password.Length < 8)
                {
                    swal.MessageType = false;
                    swal.Message     = _localizer.GetString("web.Password Must At least 8 Charachters");
                    swal.Header      = _localizer.GetString("web.Error");
                    swal.SwalType    = "error";
                    return(Json(swal));
                }
                if (model.Password != model.ConfirmPassword)
                {
                    //swal.MessageType = false;
                    swal.MessageType = false;
                    swal.Message     = _localizer.GetString("web.Password does not match");
                    swal.Header      = _localizer.GetString("web.Error");
                    swal.SwalType    = "error";
                    return(Json(swal));
                }

                ////Regex pattern = new Regex(@"^([0]|[00]|[+] *\)?)[0-9]{11,13}$");
                Regex mobilePattern = new Regex(RegexStrings.MobileRegex);
                if (!mobilePattern.IsMatch(model.Mobile))
                {
                    swal.MessageType = false;
                    swal.Header      = _localization.GetString("web.Failed");
                    swal.Message     = _localization.GetString("web.Incorrect phone number must be 8 digits : 99999999");
                    swal.SwalType    = "error";
                    return(Json(swal));
                }

                bool isEmail = Regex.IsMatch(model.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);
                if (!isEmail)
                {
                    swal.MessageType = false;
                    swal.Header      = _localization.GetString("web.Failed");
                    swal.Message     = _localization.GetString("web.Incorrect Email Format");
                    swal.SwalType    = "error";
                    return(Json(swal));
                }

                if (string.IsNullOrEmpty(model.Email) & string.IsNullOrEmpty(model.Mobile) & string.IsNullOrEmpty(model.Name) & string.IsNullOrEmpty(model.Password))
                {
                    swal.MessageType = false;
                    swal.Header      = _localization.GetString("web.Failed");
                    swal.Message     = _localization.GetString("web.all fields  mandatory");
                    swal.SwalType    = "error";
                    return(Json(swal));
                }

                swal.MessageType = true;

                //model.returnUrl = "/Profile/profile";

                User currentUser = new User();
                currentUser            = _mapper.Map <UserRegisterModel, User>(model);
                currentUser.Activation = true;
                currentUser.IsDeleted  = false;
                currentUser.LangId     = _currentUser.CurrentUser.LangId;


                using (var algorithm = MD5.Create()) //or MD5 SHA256 etc.
                {
                    var hashedBytes = algorithm.ComputeHash(Encoding.UTF8.GetBytes(currentUser.Password));

                    currentUser.Password = BitConverter.ToString(hashedBytes).Replace("-", "").ToLower();
                }



                _userRepository.Create(currentUser);


                currentUser.fk_UserRoleMap.Add(_userRoleRepository.MapUserRole(currentUser, _userRoleRepository.GetById(7)));
                _userRepository.Update(currentUser);

                #region Login
                var claims = new List <Claim>
                {
                    new Claim("UserId", currentUser.Id.ToString()),
                    new Claim("CustomCache", "0")
                };
                ClaimsIdentity  userIdentity = new ClaimsIdentity(claims, "login");
                ClaimsPrincipal principal    = new ClaimsPrincipal(userIdentity);
                HttpContext.SignInAsync(principal);
                #endregion

                //#region Redirect To Profile
                if (!string.IsNullOrEmpty(model.returnUrl))
                // if (Url.IsLocalUrl(model.returnUrl))
                {
                    return(Redirect("/" + model.returnUrl));
                }
                //#endregion
                //return RedirectToAction("Profile", "Profile", new { Area = "", returnUrl = model.returnUrl });
                return(Json(swal));
            }
            swal.MessageType = false;
            swal.Header      = _localization.GetString("web.Failed");
            swal.Message     = _localization.GetString("web.all fields are mandatory");
            swal.SwalType    = "error";
            return(Json(swal));
        }
Пример #2
0
        public IActionResult UserLogin([FromBody] UserLoginView model)
        {
            this.ViewData["ReturnUrl"] = model.returnUrl;
            User currentUser = null;

            SwalMessage swal = new SwalMessage();

            CheckUserAccountModel data = _userRepository.CheckUserAccount(model.Email, model.Password);

            currentUser = data.user != null?_userRepository.GetById(data.user.Id) : null;

            UserViewModel _UserModel = _mapper.Map <User, UserViewModel>(currentUser);

            if (currentUser != null)
            {
                if (currentUser.Activation == true)
                {
                    var userrole = _mapper.Map <User, UserViewModel>(currentUser);

                    if (userrole.UserRoleName.FirstOrDefault() == "Register User")
                    {
                        var claims = new List <Claim>
                        {
                            new Claim("UserId", currentUser.Id.ToString()),
                            new Claim("CustomCache", "0")
                        };
                        ClaimsIdentity  userIdentity = new ClaimsIdentity(claims, "login");
                        ClaimsPrincipal principal    = new ClaimsPrincipal(userIdentity);
                        HttpContext.SignInAsync(principal);
                        HttpContext.User = principal;

                        _UserModel = _mapper.Map <User, UserViewModel>(currentUser);
                    }
                    else if (userrole.UserRoleName.FirstOrDefault() == UserRoleName.TicketingUser)
                    {
                        var claims = new List <Claim>
                        {
                            new Claim("UserId", currentUser.Id.ToString()),
                            new Claim("CustomCache", "0")
                        };
                        ClaimsIdentity  userIdentity = new ClaimsIdentity(claims, "login");
                        ClaimsPrincipal principal    = new ClaimsPrincipal(userIdentity);
                        HttpContext.SignInAsync(principal);
                        HttpContext.User = principal;

                        _UserModel = _mapper.Map <User, UserViewModel>(currentUser);
                    }
                    else
                    {
                        swal.MessageType = false;
                        swal.Header      = _localization.GetString("web.Failed");
                        swal.Message     = _localization.GetString("web.Go to Admin Login");
                        swal.SwalType    = "error";
                        return(Json(swal));
                    }
                }
                else
                {
                    swal.MessageType = false;
                    swal.Header      = _localization.GetString("web.Failed");
                    swal.Message     = _localization.GetString("web.InactiveAccount");
                    swal.SwalType    = "error";
                    return(Json(swal));
                }
            }
            else
            {
                ////ModelState.AddModelError("Login Failed.Please enter correct credentials")
                //ModelState.AddModelError("", data.ErrorMessage);
                swal.MessageType = false;
                swal.Header      = _localization.GetString("web.Failed");
                swal.Message     = _localization.GetString("web.Incorrect credentials");
                swal.SwalType    = "error";
                return(Json(swal));
            }

            if (_UserModel != null)
            {
                if (_UserModel.Id > 0)
                {
                    if (_UserModel.UserRoleName.FirstOrDefault() == UserRoleName.User)
                    {
                        if (!string.IsNullOrEmpty(model.returnUrl))
                        {
                            if (Url.IsLocalUrl(model.returnUrl))
                            {
                                swal.Url         = model.returnUrl;
                                swal.MessageType = true;
                                return(Json(swal));
                            }
                        }
                        // return Redirect("/" + model.returnUrl);
                    }
                    else if (_UserModel.UserRoleName.FirstOrDefault() == UserRoleName.TicketingUser)
                    {
                        if (!string.IsNullOrEmpty(model.returnUrl))
                        {
                            if (Url.IsLocalUrl(model.returnUrl))
                            {
                                swal.Url         = model.returnUrl;
                                swal.MessageType = true;
                                return(Json(swal));
                            }
                        }
                    }
                }
            }

            if (!string.IsNullOrEmpty(model.returnUrl))
            {
                if (Url.IsLocalUrl(model.returnUrl))
                {
                    return(Redirect(model.returnUrl));
                }
            }
            swal.MessageType = true;
            return(Json(swal));
        }