Exemplo n.º 1
0
        public ActionResult InsertDropdown(string dropdownViewModel)
        {
            DropdownViewModel viewModel = JsonConvert.DeserializeObject <DropdownViewModel>(dropdownViewModel);

            viewModel.AccountID = this.Identity.ToAccountID();
            foreach (DropdownValueViewModel dvvm in viewModel.DropdownValuesList)
            {
                dvvm.AccountID = viewModel.AccountID;
                if (dvvm.IsNewField)
                {
                    dvvm.DropdownValueID = 0;
                }
            }
            InsertDropdownRequest request = new InsertDropdownRequest();

            request.DropdownViewModel = viewModel;
            dropdownValuesService.InsertDropdownValue(request);
            cachingService.AddDropdownValues(this.Identity.ToAccountID());
            return(Json(new { success = true, response = "" }, JsonRequestBehavior.AllowGet));
        }
Exemplo n.º 2
0
        public async Task <ActionResult> Login(LoginViewModel model, string returnUrl)
        {
            Logger.Current.Informational("In Login View Model");
            if (!string.IsNullOrEmpty(returnUrl) && returnUrl.ToLower().Contains("logoff"))
            {
                returnUrl = null;
            }
            LoginViewModel loginViewModel = model;

            ViewBag.Page = "Login";
            Logger.Current.Informational("Are these LoginViewModel fields valid : " + ModelState.IsValid);
            if (ModelState.IsValid)
            {
                try
                {
                    var userName = loginViewModel.Email + "|" + loginViewModel.AccountId;
                    var user     = await UserManager.FindAsync(userName, loginViewModel.Password);

                    if (user != null)
                    {
                        Logger.Current.Informational("Based on credentials UserId is :" + user.Id);
                        var tokenEndpoint = string.Format("{0}/token", ConfigurationManager.AppSettings["WEBSERVICE_URL"]);
                        var sw            = new System.Diagnostics.Stopwatch();
                        sw.Start();
                        var clientId    = System.Web.Configuration.WebConfigurationManager.AppSettings["SMARTTOUCH_APIKEY"].ToString();
                        var client      = new OAuth2Client(new Uri(tokenEndpoint), clientId, "");
                        var accessToken = client.RequestResourceOwnerPasswordAsync(userName, loginViewModel.Password).Result.AccessToken;
                        sw.Stop();
                        var timeelapsed = sw.Elapsed;
                        Logger.Current.Informational("time elapsed to fetch token:" + timeelapsed);
                        if (!string.IsNullOrEmpty(accessToken))
                        {
                            if (this.Response.Cookies["accessToken"] == null)
                            {
                                this.Response.Cookies.Add(new HttpCookie("accessToken", accessToken));
                            }
                            else
                            {
                                this.Response.Cookies.Set(new HttpCookie("accessToken", accessToken));
                            }
                            await SignInAsync(user, loginViewModel.RememberMe);

                            int userID;
                            int.TryParse(user.Id, out userID);
                            string IP = Request.UserHostAddress;
                            UserManager.InsertLoginAudit(userID, (int)model.AccountId, IP, SignInActivity.SignIn);
                            cachingService.AddAccountPermissions((int)model.AccountId);
                            cachingService.AddUserPermissions((int)model.AccountId);
                            cachingService.AddDropdownValues(model.AccountId);
                            bool showTC = accountService.ShowTC(new ShowTCRequest()
                            {
                                AccountId = (int)model.AccountId
                            }).ShowTC;
                            UserSettings userSettings = accountService.GetFirstLoginUserSettings(new GetFirstLoginUserSettingsRequest()
                            {
                                RequestedBy = userID
                            }).UserSettings;
                            if (userSettings != null && !userSettings.HasAcceptedTC && showTC)
                            {
                                AddCookie("ShowTC", "1", 1);
                            }
                            else
                            {
                                AddCookie("ShowTC", "0", 1);
                            }
                            if (user.HasTourCompleted.HasValue && user.HasTourCompleted.Value)
                            {
                                AddCookie("IsFirstLogin", 1.ToString(), 1);
                            }
                            else if (user.HasTourCompleted == null || (user.HasTourCompleted.HasValue && !user.HasTourCompleted.Value))
                            {
                                AddCookie("IsFirstLogin", 0.ToString(), 1);
                            }
                            return(RedirectToLocal(returnUrl, user.RoleID, (int)model.AccountId, model.Email, model.Password));
                        }
                        else
                        {
                            Logger.Current.Informational("Invalid API Key.");
                            ModelState.AddModelError("", "[|Invalid API Key.|]");
                            return(RedirectToAction("Login", new RouteValueDictionary(new
                            {
                                controller = "Login",
                                action = "Login",
                                modelMessage = "[|Invalid API Key.|]"
                            })));
                        }
                    }
                    else
                    {
                        Logger.Current.Informational("Requested user not found");
                        ModelState.AddModelError("", "[|Invalid username or password.|]");
                        return(RedirectToAction("Login", new RouteValueDictionary(new
                        {
                            controller = "Login",
                            action = "Login",
                            modelMessage = "[|Invalid username or password.|]"
                        })));
                    }
                }
                catch (Exception ex)
                {
                    ExceptionHandler.Current.HandleException(ex, DefaultExceptionPolicies.LOG_ONLY_POLICY);
                    ModelState.AddModelError("", "[|An error occurred, please try again later.|]");
                    return(RedirectToAction("Login", new RouteValueDictionary(new
                    {
                        controller = "Login",
                        action = "Login",
                        modelMessage = "[|An error occurred, please try again later.|]"
                    })));
                }
            }
            else
            {
                ModelState.AddModelError("", "[|Invalid details|]");
                return(RedirectToAction("Login", new RouteValueDictionary(new
                {
                    controller = "Login",
                    action = "Login",
                    modelMessage = "[|Invalid details|]"
                })));
            }
        }