예제 #1
0
        public ActionResult Login(MemberLoginVM model)
        {
            if (!ModelState.IsValid)
            {
                return(View(model));
            }

            bool isValid = false;

            using (Db db = new Db()) {
                MemberFeatures passwordHash = new MemberFeatures();
                string         hashPassword = passwordHash.HashPassword(model.Password);

                if (db.Members.Any(x => x.Account.Equals(model.UserName) && x.Password.Equals(hashPassword)))
                {
                    isValid = true;
                }

                if (!isValid)
                {
                    ModelState.AddModelError("", "帳號或密碼錯誤");
                    return(View(model));
                }
                else
                {
                    FormsAuthentication.SetAuthCookie(model.UserName, model.RememberMe);
                    return(Redirect(FormsAuthentication.GetRedirectUrl(model.UserName, model.RememberMe)));
                }
            }
        }
예제 #2
0
        public ActionResult Register(MemberVM model)
        {
            if (!ModelState.IsValid)
            {
                return(View("register", model));
            }

            if (!model.Password.Equals(model.ConfirmPassword))
            {
                ModelState.AddModelError("", "密碼不一致");
                return(View("register", model));
            }

            using (Db db = new Db()) {
                if (db.Members.Any(x => x.Account.Equals(model.Account)))
                {
                    ModelState.AddModelError("", "Account" + model.Account + "is taken!");
                    model.Account = "";
                    return(View("register", model));
                }

                MemberFeatures passwordHash = new MemberFeatures();
                string         hashPassword = passwordHash.HashPassword(model.Password);

                MemberDTO memberDTO = new MemberDTO()
                {
                    Name     = model.Name,
                    Email    = model.Email,
                    Account  = model.Account,
                    Password = hashPassword
                };

                db.Members.Add(memberDTO);
                db.SaveChanges();

                // Add User Role
                int id = memberDTO.UID;

                UserRoleDTO userRoleDTO = new UserRoleDTO()
                {
                    UserId = id,
                    RoleId = 2
                };

                db.UserRoles.Add(userRoleDTO);
                db.SaveChanges();
            }

            return(Redirect("~/member/login"));
        }
예제 #3
0
        public ActionResult MemberProfile(MemberProfileVM model)
        {
            if (!ModelState.IsValid)
            {
                return(View("MemberProfile", model));
            }

            if (!string.IsNullOrWhiteSpace(model.Password))
            {
                if (!model.Password.Equals(model.ConfirmPassword))
                {
                    ModelState.AddModelError("", "密碼不符");
                    return(View("MemberProfile", model));
                }
            }

            using (Db db = new Db()) {
                string account = User.Identity.Name;

                // Check account is unique
                if (db.Members.Where(x => x.UID != model.UID).Any(x => x.Account == account))
                {
                    ModelState.AddModelError("", "帳號 " + model.Account + " 已存在!");
                    model.Account = "";
                    return(View("MemberProfile", model));
                }

                // Edit
                MemberDTO dto = db.Members.Find(model.UID);

                MemberFeatures passwordHash = new MemberFeatures();
                string         hashPassword = passwordHash.HashPassword(model.Password);

                dto.Name    = model.Name;
                dto.Email   = model.Email;
                dto.Account = model.Account;
                if (!string.IsNullOrWhiteSpace(model.Password))
                {
                    dto.Password = hashPassword;
                }

                db.SaveChanges();
            }

            return(Redirect("~/member/MemberProfile"));
        }