コード例 #1
0
        public ActionResult auth_login(string email, string password)
        {
            var user       = _context.User.Where(i => i.Email == email).SingleOrDefault();
            var returnData = "";

            if (user != null)
            {
                if (password != null)
                {
                    password = _CLSR.EncodeHMAC_SHA512(password);

                    //Login success
                    if (email.Equals(user.Email) && password.Equals(user.Password) && user.Wrong_Password_Count < 5 && user.User_Status == "Y" && user.User_isLock == "N")
                    {
                        returnData = "AUTH_PASS";
                        Login(email, password);
                    }
                    //Email==Email, Pass== Pass but Account locked
                    else if (email.Equals(user.Email) && password.Equals(user.Password) && user.Wrong_Password_Count >= 5)
                    {
                        returnData = "AUTH_LOCK";
                        using (IDbContextTransaction dbTran = _context.Database.BeginTransaction())
                        {
                            try
                            {
                                user.User_Status = "N";
                                user.User_isLock = "Y";

                                _context.Update(user);
                                _context.SaveChanges();

                                dbTran.Commit();
                            }
                            catch (Exception e)
                            {
                                TempData["msg"] = _CLSR.GetAlert("Error: " + e.Message);
                                return(RedirectToAction("Index", "Home"));
                            }
                        }
                    }
                    //Email == email but Pass is not and password count 5+
                    else if (email.Equals(user.Email) && password != user.Password && user.Wrong_Password_Count >= 5)
                    {
                        returnData = "AUTH_LOCK";
                    }
                    //Email != email, Pass != pass
                    else
                    {
                        returnData = "AUTH_NOT";
                        using (IDbContextTransaction dbTran = _context.Database.BeginTransaction())
                        {
                            try
                            {
                                user.Wrong_Password_Count = user.Wrong_Password_Count + 1;

                                _context.Update(user);
                                _context.SaveChanges();

                                dbTran.Commit();
                            }
                            catch (Exception e)
                            {
                                TempData["msg"] = _CLSR.GetAlert("Error: " + e.Message);
                                return(RedirectToAction("Index", "Home"));
                            }
                        }
                    }
                }
                else
                {
                }
            }
            else
            {
                returnData = "USER_NOT_FOUND";
            }

            return(Json(returnData));
        }
コード例 #2
0
        public async Task <IActionResult> Create([Bind("User_ID,Role_ID,Email,Password,First_Name,Last_Name,Birthdate,Wrong_Password_Count,Last_Login,Last_Update,Gender,User_Status,User_isLock")] User user)
        {
            if (ModelState.IsValid)
            {
                int userID = 1;
                try
                {
                    userID = _context.User.Max(p => p.User_ID) + 1;
                }
                catch
                {
                    //ไม่เจอ ID สักอันแสดงว่า Table นี้ว่างอยู่ให้เริ่มที่ 1
                    userID = 1;
                }

                var checkUserIsAlready = _context.User.Where(i => i.Email == user.Email).Count();

                //Email is already exist!
                if (checkUserIsAlready > 0)
                {
                    TempData["msg"] = _CLSR.GetScriptAlertPopUp("Error", "Please contact Administrator", "", "E");
                    return(RedirectToAction("Create", "Users"));
                }
                else
                {
                    if (user.Email != null && user.Password != null && user.First_Name != null)
                    {
                        //ควรเปิด Transaction ทุกครั้งที่มีการเปลี่ยนแปลงข้อมูลใน Table
                        using (IDbContextTransaction dbTran = _context.Database.BeginTransaction())
                        {
                            user.Password = _CLSR.EncodeHMAC_SHA512(user.Password);

                            String cDate = _CLSR.GetDateNow("");
                            String cTime = _CLSR.GetTimeNow("");



                            //ROLE ID 1 คือ Admin
                            //ROLE ID 2 คือ Normal User
                            user.Role_ID              = 2;
                            user.Birthdate            = _CLSR.ConvertDatePicker(user.Birthdate);
                            user.Wrong_Password_Count = 0;
                            user.Last_Login           = cDate;
                            user.Last_Update          = cDate;
                            user.User_Status          = "Y";
                            user.User_isLock          = "N";



                            _context.Add(user);

                            await _context.SaveChangesAsync();


                            Trees basic_Tree = new Trees();

                            basic_Tree.User_ID      = user.User_ID;
                            basic_Tree.Tree_Level   = 1;
                            basic_Tree.Tree_EXP     = 0;
                            basic_Tree.Tree_Type_ID = 1;
                            basic_Tree.Tree_Name    = "Basic Tree";
                            basic_Tree.Tree_HP      = 100;
                            basic_Tree.Plant_Date   = cDate;
                            basic_Tree.Create_Date  = cDate;
                            basic_Tree.Update_Date  = cDate;
                            basic_Tree.Tree_Status  = "S";
                            basic_Tree.Tree_isDead  = "N";

                            _context.Add(basic_Tree);
                            await _context.SaveChangesAsync();

                            //ถ้าบันทึกข้อมูลเสร็จ ให้ Commit เพื่อยืนยันการเซฟข้อมูล
                            dbTran.Commit();

                            //ถ้าไม่สำเร็จให้ RollBack();

                            //try
                            //{
                            //    HCON.Login(user.Email, user.Password);
                            //}
                            //catch (Exception e)
                            //{
                            //    TempData["msg"] = "<script>alert('"+ e.Message +"')</script>";

                            //    return RedirectToAction("Index", "Home");
                            //}
                            TempData["msg"] = "<script>alert('Sign Up successfully')</script>";
                            //Temp Message เพื่อขึ้น Alert ป๊อปอัพแสดง
                            //TempData["msg"] = _CLSR.GetScriptAlertPopUp("Success", "Register Successfully!", "", "S");
                        }
                    }
                    else
                    {
                        TempData["msg"] = _CLSR.GetScriptAlertPopUp("Error", "Please contact Administrator", "", "E");
                        return(RedirectToAction("Create", "Users"));
                    }
                }
            }
            return(View(user));
        }