예제 #1
0
        public async Task <ActionResult> ResetPassword(string id)
        {
            var context = new SphDataContext();
            var setting = await context.LoadOneAsync <Setting>(x => x.Id == id);

            var model = new ResetPaswordModel {
                IsValid = true, Id = id
            };

            if (null == setting)
            {
                model.IsValid = false;
                model.Mesage  = "The link is invalid";
                return(View(model));
            }

            model.Email = setting.UserName;
            if ((DateTime.Now - setting.CreatedDate).TotalMinutes > 10)
            {
                model.IsValid = false;
                model.Mesage  = "The link has expired";
                return(View(model));
            }
            var user = Membership.FindUsersByEmail(setting.UserName);

            if (user.Count == 0)
            {
                model.IsValid = false;
                model.Mesage  = "Cannot find any user with email  " + model.Email;
            }
            model.Email = setting.UserName;
            return(View(model));
        }
예제 #2
0
        public async Task <ActionResult> ResetPassword(ResetPaswordModel model)
        {
            var context = new SphDataContext();
            var key     = await context.LoadOneAsync <Setting>(x => x.Id == model.Id);

            if (null == key)
            {
                return(HttpNotFound("Cannot find any password reset key " + model.Id));
            }

            var username = Membership.GetUserNameByEmail(model.Email);

            if (model.Password != model.ConfirmPassword)
            {
                return(Json(new { success = false, status = "PASSWORD_DOESNOT_MATCH", message = "Kata laluan anda tidak sama" }));
            }
            if (string.IsNullOrWhiteSpace(username))
            {
                return(HttpNotFound("Cannot find any user registered with " + model.Email));
            }

            var user = Membership.GetUser(username);

            if (null == user)
            {
                throw new Exception("Cannot find any user with email " + model.Email);
            }


            var ok = AdminController.CheckPasswordComplexity(Membership.Provider, model.Password);

            if (!ok)
            {
                return(Json(new { success = false, status = "PASSWORD_COMPLEXITY", message = "Kata laluan anda tidak mengikut kesesuaian yang ditetapkan" }));
            }

            var temp = user.ResetPassword();

            user.ChangePassword(temp, model.Password);

            var profile = await context.LoadOneAsync <UserProfile>(u => u.UserName == username)
                          ?? new UserProfile
            {
                UserName = username,
                Email    = model.Email,
                HasChangedDefaultPassword = true,
                Id          = username,
                StartModule = ""
            };

            profile.HasChangedDefaultPassword = true;

            using (var session = context.OpenSession())
            {
                session.Attach(profile);
                await session.SubmitChanges("Change password");
            }

            if (Request.ContentType.Contains("application/json"))
            {
                this.Response.ContentType = "application/json; charset=utf-8";
                return(Content(JsonConvert.SerializeObject(new { success = true, status = "OK" })));
            }

            return(Redirect("/"));
        }