예제 #1
0
        public JsonResult UpdatePassword()
        {
            var crypto = new TokenCryptography();

            try
            {
                var userId          = Request["userId"];
                var serializer      = new JavaScriptSerializer();
                var headers         = new Dictionary <string, object>();
                var newPassword     = HttpContext.Request["newpassword"];
                var confirmPassword = HttpContext.Request["confirmpassword"];

                var ipAddress         = Request.UserHostAddress;
                var encryptedPassword = crypto.Encrypt(newPassword, ipAddress);
                headers.Add("newpassword", Convert.ToBase64String(Encoding.UTF8.GetBytes(encryptedPassword)));
                var responseObj =
                    serializer.Deserialize <ApiResponse>(_apiHandler.ApiProcessor("/api/accounts/changepassword",
                                                                                  headers,
                                                                                  new Dictionary <string, object>
                {
                    { "userId", userId }
                }));
            }
            catch (Exception)
            {
                var result = new { status = false, key = "error", value = "Password updation has been failed." };
                return(Json(new { Data = result }));
            }

            var finalResult = new { status = true, key = "success", value = "Password has been updated successfully." };

            return(Json(new { Data = finalResult }));
        }
예제 #2
0
        public ActionResult Login(string username, string password, string remember, string returnUrl)
        {
            var tokenCryptography = new TokenCryptography();

            if (username != null && password != null)
            {
                var ipAddress         = Request.UserHostAddress;
                var encryptedUsername = tokenCryptography.Encrypt(username, ipAddress);
                var encryptedPassword = tokenCryptography.Encrypt(password, ipAddress);
                LogExtension.LogInfo("Login Encryption done", MethodBase.GetCurrentMethod(), " UserName - " + username + " Password - " + password + " Remember - " + remember + " ReturnUrl - " + returnUrl);

                var headers = new Dictionary <string, object>
                {
                    {
                        "Authorization",
                        Convert.ToBase64String(Encoding.UTF8.GetBytes(encryptedUsername + ":" + encryptedPassword))
                    }
                };
                LogExtension.LogInfo("Login API requested", MethodBase.GetCurrentMethod());
                var apiResponse = _javaScriptSerializer.Deserialize <ApiResponse>(_apiHandler.ApiProcessor("/api/accounts/login", headers,
                                                                                                           new Dictionary <string, object>()));

                var apiData = DictionaryHelper.GetObject(apiResponse.Data as Dictionary <string, object>, typeof(ApiData)) as ApiData;

                LogExtension.LogInfo("Login API Data received", MethodBase.GetCurrentMethod(), " UserName - " + username + " Password - " + password + " Remember - " + remember + " ReturnUrl - " + returnUrl);
                LogExtension.LogInfo("Login result is " + apiData.StatusText, MethodBase.GetCurrentMethod(), " UserName - " + username + " Password - " + password + " Remember - " + remember + " ReturnUrl - " + returnUrl);

                var isValid = apiData.StatusText;

                switch (isValid.ToLower())
                {
                case "validuser":
                    var userDetail = _userManagement.FindUserByUserName(username);

                    FormsAuthentication.SetAuthCookie(userDetail.UserId.ToString(), remember != null && remember.ToLower().Trim() == "on");

                    GlobalAppSettings.SetTimeZone(userDetail.UserId);

                    HttpContext.Session["displayname"] = userDetail.DisplayName;
                    HttpContext.Session["firstname"]   = userDetail.FirstName;
                    HttpContext.Session["lastname"]    = userDetail.LastName;
                    HttpContext.Session["IsAdmin"]     = GlobalAppSettings.IsAdmin(userDetail.UserId);

                    _userManagement.UpdateLoginTime(userDetail.UserId, DateTime.UtcNow);

                    if (String.IsNullOrWhiteSpace(returnUrl))
                    {
                        return(RedirectToAction("reports", "reports"));
                    }

                    return(Redirect(returnUrl));

                case "invalidpassword":
                    TempData["currentValue"]        = username;
                    TempData["errorUserName"]       = "";
                    TempData["errorPassword"]       = apiData.Message;
                    TempData["errorUserStatus"]     = "";
                    TempData["errorPasswordStatus"] = "inline-block";
                    return(View());

                case "throttleduser":
                    TempData["errorUserName"] = "";
                    TempData["errorPassword"] = "";
                    TempData["User"]          = apiData.Message;
                    return(View());

                case "invalidusername":
                    TempData["currentValue"]        = username;
                    TempData["errorUserName"]       = apiData.Message;
                    TempData["errorPassword"]       = "";
                    TempData["errorUserStatus"]     = "inline-block";
                    TempData["errorPasswordStatus"] = "";
                    return(View());

                case "deactivateduser":
                    TempData["errorUserName"]   = "";
                    TempData["errorPassword"]   = "";
                    TempData["errorUserStatus"] = "inline-block";
                    TempData["User"]            = apiData.Message;
                    return(View());

                default:
                    TempData["errorUserName"]   = "";
                    TempData["errorPassword"]   = "";
                    TempData["errorUserStatus"] = "inline-block";
                    TempData["User"]            = apiData.Message;
                    return(View());
                }
            }
            return(View());
        }