예제 #1
0
        public async Task <IActionResult> Logout()
        {
            var user = await _userManager.FindByNameAsync(User.Identity.Name);

            await _signInManager.SignOutAsync();

            _logger.LogInformation("User logged out.");
            GlobalContext.GlobalCache.RemoveNccUserFromCache(user.Id);
            var roles = await _userManager.GetRolesAsync(user);

            var returnUrl = NccUrlHelper.AddLanguageToUrl(CurrentLanguage, "/CmsHome");
            var rsp       = FireEvent(UserActivity.Type.Logedout, user.Email, user, roles, NccUrlHelper.AddLanguageToUrl(CurrentLanguage, "/CmsHome"));

            if (rsp != null)
            {
                returnUrl = rsp.ReturnUrl;
            }
            return(Redirect(returnUrl));
        }
예제 #2
0
        private static string ListItemHtml(NccMenuItem item, string currentLanguage)
        {
            var url       = "/";
            var urlPrefix = "";
            var data      = "";

            if (item.MenuActionType == NccMenuItem.ActionType.BlogCategory)
            {
                //urlPrefix = "/Category/";
                url = item.Url;
                url = NccUrlHelper.AddLanguageToUrl(currentLanguage, url);
                return("<li><a href=\"" + url + "\" target=\"" + item.Target + "\">" + item.Name + "</a></li>");
            }
            else if (item.MenuActionType == NccMenuItem.ActionType.BlogPost)
            {
                url = item.Url;
                url = NccUrlHelper.AddLanguageToUrl(currentLanguage, url);
                return("<li><a href=\"" + url + "\" target=\"" + item.Target + "\">" + item.Name + "</a></li>");
            }
            else if (item.MenuActionType == NccMenuItem.ActionType.Module)
            {
                //urlPrefix = "/" + item.Controller + "/" + item.Action + "/";
                url = item.Url;
                url = NccUrlHelper.AddLanguageToUrl(currentLanguage, url);
                return("<li><a href=\"" + url + "\" target=\"" + item.Target + "\">" + item.Name + "</a></li>");
            }
            else if (item.MenuActionType == NccMenuItem.ActionType.Page)
            {
                //urlPrefix = "";/*/CmsHome/CmsPage/View/*/
                //item.Url = item.Url.StartsWith("/") == true ? item.Url : "/" + item.Url;
                //item.Url = NccUrlHelper.AddLanguageToUrl(currentLanguage, item.Url);
                //return "<li><a href=\"" + item.Url + "\" target=\"" + item.Target + "\">" + item.Name + "  </a></li>";
                url = item.Url;
                url = NccUrlHelper.AddLanguageToUrl(currentLanguage, url);
                return("<li><a href=\"" + url + "\" target=\"" + item.Target + "\">" + item.Name + "</a></li>");
            }
            else if (item.MenuActionType == NccMenuItem.ActionType.Tag)
            {
                url = item.Url;
                url = NccUrlHelper.AddLanguageToUrl(currentLanguage, url);
                return("<li><a href=\"" + url + "\" target=\"" + item.Target + "\">" + item.Name + "</a></li>");
            }
            else if (item.MenuActionType == NccMenuItem.ActionType.Url)
            {
                urlPrefix = "";
            }

            if (!string.IsNullOrEmpty(item.Data))
            {
                data = "?slug=" + item.Data;
            }

            url = urlPrefix + item.Url + data;
            if (!string.IsNullOrEmpty(currentLanguage) && GlobalContext.WebSite.IsMultiLangual && !IsExternalUrl(url))
            {
                url = "/" + currentLanguage + url;
            }

            var li = "<li><a href=\"" + url + "\" target=\"" + item.Target + "\">" + item.Name + "  </a></li>";

            return(li);
        }
예제 #3
0
        public async Task <IActionResult> Login(LoginViewModel model, string returnUrl = null)
        {
            var languageEnabledReturnUrl = NccUrlHelper.AddLanguageToUrl(CurrentLanguage, "/CmsHome");

            if (string.IsNullOrEmpty(returnUrl))
            {
                returnUrl = languageEnabledReturnUrl;
            }

            ViewData["ReturnUrl"] = returnUrl;

            if (ModelState.IsValid)
            {
                // This doesn't count login failures towards account lockout
                // To enable password failures to trigger account lockout, set lockoutOnFailure: true
                var result = await _signInManager.PasswordSignInAsync(model.Email, model.Password, model.RememberMe, lockoutOnFailure : false);

                if (result.Succeeded)
                {
                    _logger.LogInformation("User logged in.");
                    var user = UserService.GetByUserName(model.Email);
                    if (user.IsRequireLogin)
                    {
                        user.IsRequireLogin = false;
                        UserService.Update(user);
                    }

                    GlobalContext.GlobalCache.SetNccUser(user);
                    //var roles = _nccPermissionService.LoadAll();
                    var rsp = FireEvent(UserActivity.Type.Logedin, model.Email, user, user.Permissions.Select(x => x.Permission.Name).ToList(), returnUrl);

                    if (rsp != null)
                    {
                        returnUrl = rsp.ReturnUrl;
                    }

                    if (returnUrl == languageEnabledReturnUrl)
                    {
                        foreach (var item in user.Roles)
                        {
                            if (item.Role.Name == NccCmsRoles.SuperAdmin)
                            {
                                return(RedirectToLocal("/Admin"));
                            }
                        }

                        var startups = _startupService.LoadAll();
                        foreach (var item in startups)
                        {
                            if (user.Permissions.Where(x => x.Permission.Name == item.Permission.Name).Count() > 0)
                            {
                                return(Redirect(item.StartupUrl));
                            }
                        }
                    }

                    return(RedirectToLocal(returnUrl));
                }
                if (result.RequiresTwoFactor)
                {
                    return(RedirectToAction(nameof(LoginWith2fa), new { returnUrl, model.RememberMe }));
                }
                if (result.IsLockedOut)
                {
                    _logger.LogWarning("User account locked out.");
                    return(RedirectToAction(nameof(Lockout)));
                }
                else
                {
                    ModelState.AddModelError(string.Empty, "Invalid login attempt.");
                    return(View(model));
                }
            }

            return(View(model));
        }
예제 #4
0
        private List <MenuItemViewModel> GetMenuItems(List <MenuItem> menuItems, IModule module)
        {
            var list = new List <MenuItemViewModel>();

            foreach (var item in menuItems)
            {
                string controller = "", action = "";
                //if (string.IsNullOrEmpty(item.Url) == false)
                //{
                //    var parts = item.Url.Split("/".ToArray(), StringSplitOptions.RemoveEmptyEntries);
                //    if (parts.Length > 1)
                //    {
                //        controller = parts[0];
                //        action = parts[1];
                //    }
                //    else if (parts.Length == 1) {
                //        controller = parts[0];
                //        action = "Index";
                //    }
                //}

                if (string.IsNullOrEmpty(item.Url) == false)
                {
                    (controller, action) = NccUrlHelper.GetControllerActionFromUrl(item.Url);
                }
                else
                {
                    controller = item.Controller;
                    action     = item.Action;
                }

                var mip = _permission?.PermissionDetails?.Where(x => x.ModuleName == module.ModuleName && x.Action == action && x.Controller == controller).FirstOrDefault();
                if (mip != null)
                {
                    var mi = new MenuItemViewModel()
                    {
                        Id         = mip.Id,
                        Area       = module.Area,
                        Action     = action,
                        Controller = controller,
                        Name       = mip.Name,
                        Order      = mip.Order,
                        IsChecked  = true,
                    };
                    list.Add(mi);
                }
                else
                {
                    var mi = new MenuItemViewModel()
                    {
                        Id         = 0,
                        Action     = action,
                        Controller = controller,
                        Name       = item.Name,
                        Order      = item.Order
                    };
                    list.Add(mi);
                }
            }
            return(list);
        }