Esempio n. 1
0
        public ActionResult AdminPagesEdit(int id)
        {
            BackEndAdminPagesEdit backEndAdminPagesEdit = new BackEndAdminPagesEdit();

            AdminPages adminPages = new AdminPages();
            AdminPage  adminPage  = adminPages.GetPageByPageId(id);

            if (adminPage.IsNotNull())
            {
                backEndAdminPagesEdit.PageId            = adminPage.PageId;
                backEndAdminPagesEdit.PageParentId      = adminPage.PageParentId;
                backEndAdminPagesEdit.PageName          = adminPage.PageName;
                backEndAdminPagesEdit.Target            = adminPage.Target;
                backEndAdminPagesEdit.Url               = adminPage.Url;
                backEndAdminPagesEdit.ShowInMenu        = adminPage.ShowInMenu;
                backEndAdminPagesEdit.IsActive          = adminPage.IsActive;
                backEndAdminPagesEdit.CssClass          = adminPage.CssClass;
                backEndAdminPagesEdit.GroupsPermissions = adminPage.GroupsPermissions;
            }
            else
            {
                ModelState.AddResult(ViewData, ModelStateResult.Error, Resources.Strings.ItemDoesNotExist);
                ViewData.IsFormVisible(false);
            }

            return(View(backEndAdminPagesEdit));
        }
Esempio n. 2
0
        public ActionResult IsPageBrowseAuthorized(string id)
        {
            AdminPages backEndPages = new AdminPages();
            AdminPage  backEndPage  = backEndPages.GetPageByAction(id);

            return(Content(backEndPages.IsPermissionGranted(backEndPage.PageId, PermissionCode.Browse).ToString(), "text/plain"));
        }
Esempio n. 3
0
        public ActionResult AdminPagesMoveDown(int postId)
        {
            AdminPages adminPages = new AdminPages();

            switch (adminPages.MoveDown(postId))
            {
            case 0:
                BackEndSessions.CurrentMenu = adminPages.GetMenuByGroupId(BackEndSessions.CurrentUser.GroupId);

                ModelState.AddResult(ViewData, ModelStateResult.Success, Resources.Strings.PageSuccessfullyMoved);
                break;

            case 2:
                ModelState.AddResult(ViewData, ModelStateResult.Error, Resources.Strings.ItemDoesNotExist);
                break;

            case 3:
                ModelState.AddResult(ViewData, ModelStateResult.Error, Resources.Strings.PageCannotBeMoved);
                break;

            default:
                ModelState.AddResult(ViewData, ModelStateResult.Error, Resources.Strings.UnexpectedError);
                break;
            }

            return(RedirectToAction("AdminPages"));
        }
Esempio n. 4
0
        public async Task <ActionResult <AdminPages> > PostAdminPages(AdminPages adminPages)
        {
            _context.AdminPages.Add(adminPages);
            await _context.SaveChangesAsync();

            return(CreatedAtAction("GetAdminPages", new { id = adminPages.PageId }, adminPages));
        }
Esempio n. 5
0
        public async Task <IActionResult> PutAdminPages(int id, AdminPages adminPages)
        {
            if (id != adminPages.PageId)
            {
                return(BadRequest());
            }

            _context.Entry(adminPages).State = EntityState.Modified;

            try
            {
                await _context.SaveChangesAsync();
            }
            catch (DbUpdateConcurrencyException)
            {
                if (!AdminPagesExists(id))
                {
                    return(NotFound());
                }
                else
                {
                    throw;
                }
            }

            return(NoContent());
        }
Esempio n. 6
0
        public override void OnActionExecuting(ActionExecutingContext filterContext)
        {
            string controller = filterContext.ActionDescriptor.ControllerDescriptor.ControllerName.ToLower();
            string action     = filterContext.ActionDescriptor.ActionName;

            if (BackEndSessions.CurrentUser.IsNull())
            {
                if (!(controller == "admin" && action.ToLower() == "login"))
                {
                    filterContext.Result = new RedirectToRouteResult(new RouteValueDictionary(new { action = "Login", controller = "Admin", ReturnUrl = HttpUtility.UrlEncode(filterContext.HttpContext.Request.Url.AbsoluteUri) }));
                }
            }
            else
            {
                AdminPages backEndPages = new AdminPages();
                AdminPage  backEndPage  = backEndPages.GetPageByAction(action);
                if (backEndPage.IsNotNull())
                {
                    if (backEndPages.IsPermissionGranted(backEndPage.PageId, PermissionCode.Browse))
                    {
                        if (controller == "admin" && action.ToLower() == "login")
                        {
                            filterContext.Result = new RedirectToRouteResult(new RouteValueDictionary(new { action = "Index", controller = "Admin" }));
                        }
                    }
                    else
                    {
                        filterContext.Result = new RedirectToRouteResult(
                            new RouteValueDictionary(
                                new
                        {
                            action       = "ErrorPage",
                            controller   = "Admin",
                            errorPage    = action,
                            errorMessage = Resources.Strings.PageAccessNotAuthorized
                        }
                                )
                            );
                    }
                }
                else
                {
                    filterContext.Result = new RedirectToRouteResult(
                        new RouteValueDictionary(
                            new
                    {
                        action       = "ErrorPage",
                        controller   = "Admin",
                        errorPage    = action,
                        errorMessage = Resources.Strings.Error404
                    }
                            )
                        );
                }
            }
        }
Esempio n. 7
0
        protected override void Initialize(System.Web.Routing.RequestContext requestContext)
        {
            base.Initialize(requestContext);

            AdminPages backEndPages = new AdminPages();
            AdminPage  backEndPage  = backEndPages.GetPageByAction(RouteData.GetRequiredString("action")) ?? new AdminPage();

            backEndPage.IsModal = requestContext.HttpContext.Request["IsModal"].ConvertTo <bool>(false, true);

            ViewBag.AdminPage = backEndPage;
        }
Esempio n. 8
0
        public ActionResult AdminPages(BackEndAdminPagesList backEndAdminPagesList)
        {
            AdminPages adminPages = new AdminPages();

            backEndAdminPagesList.TreeTablePageList = adminPages.GetTreeTablePageList(backEndAdminPagesList.PageName);
            if (backEndAdminPagesList.TreeTablePageList.IsNull())
            {
                ModelState.AddResult(ViewData, ModelStateResult.Error, Resources.Strings.NoDataFound);
            }

            return(View(backEndAdminPagesList));
        }
Esempio n. 9
0
        /// <summary>
        /// Returns an edit button suitable for the GridView. It will be displayed only if the Edit PermissionCode is assigned to the page.
        /// </summary>
        /// <typeparam name="TModel"></typeparam>
        /// <param name="htmlHelper"></param>
        /// <param name="hrefValue"></param>
        /// <returns></returns>
        public static MvcHtmlString BootstrapButtonEdit <TModel>(this HtmlHelper <TModel> htmlHelper, string hrefValue)
        {
            AdminPages adminPages = new AdminPages();
            AdminPage  adminPage  = adminPages.GetPageByCurrentAction();

            if (adminPages.IsPermissionGranted(adminPage.PageId, PermissionCode.Edit))
            {
                return(new MvcHtmlString("<a href=\"" + hrefValue + "\" title=\"" + Resources.Strings.EditItem + "\" ><i class=\"fa fa-pencil\"></i></a>"));
            }
            else
            {
                return(new MvcHtmlString(""));
            }
        }
Esempio n. 10
0
        /// <summary>
        /// Returns a delete button suitable for the GridView. It will be displayed only if the Delete PermissionCode is assigned to the page.
        /// </summary>
        /// <typeparam name="TModel"></typeparam>
        /// <param name="htmlHelper"></param>
        /// <param name="hrefValue"></param>
        /// <param name="promptedValue"></param>
        /// <returns></returns>
        public static MvcHtmlString BootstrapButtonDelete <TModel>(this HtmlHelper <TModel> htmlHelper, string formActionValue, object idValue, string promptedValue)
        {
            AdminPages adminPages = new AdminPages();
            AdminPage  adminPage  = adminPages.GetPageByCurrentAction();

            if (adminPages.IsPermissionGranted(adminPage.PageId, PermissionCode.Delete))
            {
                return(new MvcHtmlString("<button type=\"submit\" data-action=\"" + formActionValue + "\" data-id=\"" + idValue + "\" title=\"" + Resources.Strings.DeleteItem + "\" class=\"btn-a action-delete\" data-action-delete-item=\"" + promptedValue + "\"><i class=\"fa fa-trash-o\"></i></button>"));
            }
            else
            {
                return(new MvcHtmlString(""));
            }
        }
Esempio n. 11
0
        /// <summary>
        /// Returns an add button. It will be displayed only if the Add PermissionCode is assigned to the page.
        /// </summary>
        /// <typeparam name="TModel"></typeparam>
        /// <param name="htmlHelper"></param>
        /// <param name="hrefValue"></param>
        /// <returns></returns>
        public static MvcHtmlString BootstrapButtonAdd <TModel>(this HtmlHelper <TModel> htmlHelper, string hrefValue)
        {
            AdminPages adminPages = new AdminPages();
            AdminPage  adminPage  = adminPages.GetPageByCurrentAction();

            if (adminPages.IsPermissionGranted(adminPage.PageId, PermissionCode.Add))
            {
                return(new MvcHtmlString("<a href=\"" + hrefValue + "\" class=\"btn btn-success\"><i class=\"fa fa-plus\"></i> " + Resources.Strings.AddNewItem + "</a>"));
            }
            else
            {
                return(new MvcHtmlString(""));
            }
        }
Esempio n. 12
0
        public ActionResult Login(BackEndLogin backEndLogin, string ReturnUrl)
        {
            AdminPage backEndPage = new AdminPage();

            backEndPage.PageName = "Login";
            ViewBag.AdminPage    = backEndPage;
            if (ModelState.IsValidOrRefresh())
            {
                Users users = new Users();
                User  user  = users.GetUserByUserNameAndPassword(backEndLogin.Username, backEndLogin.Password);
                if (user.IsNotNull())
                {
                    ModelState.AddResult(ViewData, ModelStateResult.Success, Resources.Strings.SuccessfullyLoggedIn);
                    var tenant = users.GetTenantByUsername(backEndLogin.Username);
                    if (tenant != null)
                    {
                        // 1. Tạo người dùng (User) - UserName, Password
                        // 2. Quản lý công ty -> Tạo công ty (Tenant) - Tên, MST, ServerName, DbBName, DbUserName, DbPassword, UserName
                        // 3. Quản lý công ty -> Cập nhật lại thông tin UserName cho công ty (Tenant) nếu Tenant chưa có UserName
                        //
                        // Mỗi 1 công ty (Tenant) có duy nhất 1 mã số thuế (trùng với tên đăng nhập vào hệ thống)
                        // Mỗi 1 công ty (Tenant) có duy nhất 1 connection string = { ServerName, DbBName, DbUserName, DbPassword, DbPort (optional) }
                        // Mỗi 1 công ty (Tenant) có nhiều Đơn Vị Cơ Sở (dvcs)
                        // Khi Login xong thì connection string sẽ thay đổi theo mã số thuế { ServerName, DbBName, DbUserName, DbPassword, DbPort (optional) }
                        AdoHelper2.ConnectionString = DataHelper.BuildDynamicConnectionString(ConfigurationManager.ConnectionStrings["SM17ConnectionString"].ConnectionString, tenant);
                        user.Dvcs   = tenant.Dvcs;
                        user.Tenant = tenant;
                    }
                    BackEndSessions.CurrentUser = user;
                    AdminPages backEndPages = new AdminPages();
                    BackEndSessions.CurrentMenu = backEndPages.GetMenuByGroupId(user.GroupId);
                    if (ReturnUrl.IsNotEmptyOrWhiteSpace())
                    {
                        return(Redirect(HttpUtility.UrlDecode(ReturnUrl)));
                    }
                    else
                    {
                        return(RedirectToAction("Dashboard"));
                    }
                }
                else
                {
                    ModelState.AddResult(ViewData, ModelStateResult.Error, Resources.Strings.UsernameOrPasswordNotValid);
                }
            }

            return(View(backEndLogin));
        }
Esempio n. 13
0
        public ActionResult AdminPagesEdit(BackEndAdminPagesEdit backEndAdminPagesEdit, int id)
        {
            if (ModelState.IsValidOrRefresh())
            {
                string groupsPermissions = string.Empty;
                foreach (GroupPermission g in backEndAdminPagesEdit.GroupsPermissions)
                {
                    foreach (Permission p in g.Permissions)
                    {
                        if (p.PermissionValue)
                        {
                            groupsPermissions += g.GroupId + "," + p.PermissionCode.ToString().ToLower() + "|";
                        }
                    }
                }

                AdminPages adminPages = new AdminPages();
                int?       result     = adminPages.Edit(id, backEndAdminPagesEdit.PageParentId, backEndAdminPagesEdit.PageName, backEndAdminPagesEdit.Target, backEndAdminPagesEdit.Url, backEndAdminPagesEdit.ShowInMenu, backEndAdminPagesEdit.IsActive, backEndAdminPagesEdit.CssClass, groupsPermissions);
                switch (result)
                {
                case 0:
                    BackEndSessions.CurrentMenu = adminPages.GetMenuByGroupId(BackEndSessions.CurrentUser.GroupId);


                    ModelState.AddResult(ViewData, ModelStateResult.Success, Resources.Strings.ItemSuccessfullyEdited);
                    break;

                case 2:
                    ModelState.AddResult(ViewData, ModelStateResult.Error, Resources.Strings.ItemDoesNotExist);
                    ViewData.IsFormVisible(false);
                    break;

                case 3:
                    ModelState.AddResult(ViewData, ModelStateResult.Error, Resources.Strings.PageAlreadyExists);
                    break;

                default:
                    ModelState.AddResult(ViewData, ModelStateResult.Error, Resources.Strings.UnexpectedError);
                    break;
                }
            }

            return(View(backEndAdminPagesEdit));
        }
Esempio n. 14
0
        public ActionResult Impersonate(BackEndImpersonate backEndImpersonate)
        {
            if (ModelState.IsValidOrRefresh())
            {
                BackEndSessions.CurrentUser = new Users().GetUserByUserName(backEndImpersonate.Username);

                AdminPages backEndPages = new AdminPages();
                BackEndSessions.CurrentMenu = backEndPages.GetMenuByGroupId(BackEndSessions.CurrentUser.GroupId);

                //Remove other specific sessions
                List <string> sessionsToRemove = Session.Keys.Cast <string>().Where(key => key.StartsWith("Data_") || key.StartsWith("Querystring_")).ToList();
                foreach (string key in sessionsToRemove)
                {
                    Session.Remove(key);
                }
            }

            return(PartialView(backEndImpersonate));
        }
Esempio n. 15
0
        public ActionResult Login(BackEndLogin backEndLogin, string ReturnUrl)
        {
            AdminPage backEndPage = new AdminPage();

            backEndPage.PageName = "Login";
            ViewBag.AdminPage    = backEndPage;

            if (ModelState.IsValidOrRefresh())
            {
                Users users = new Users();
                User  user  = users.GetUserByUserNameAndPassword(backEndLogin.Username, backEndLogin.Password);
                if (user.IsNotNull())
                {
                    ModelState.AddResult(ViewData, ModelStateResult.Success, Resources.Strings.SuccessfullyLoggedIn);

                    BackEndSessions.CurrentUser = user;

                    AdminPages backEndPages = new AdminPages();
                    BackEndSessions.CurrentMenu = backEndPages.GetMenuByGroupId(user.GroupId);

                    if (ReturnUrl.IsNotEmptyOrWhiteSpace())
                    {
                        return(Redirect(HttpUtility.UrlDecode(ReturnUrl)));
                    }
                    else
                    {
                        return(RedirectToAction("Index"));
                    }
                }
                else
                {
                    ModelState.AddResult(ViewData, ModelStateResult.Error, Resources.Strings.UsernameOrPasswordNotValid);
                }
            }

            return(View(backEndLogin));
        }
Esempio n. 16
0
        public HelperResult GetExtendedHtml(
            string tableStyle          = "table table-striped table-bordered table-hover footable toggle-square",
            string headerStyle         = "webgrid-header",
            string footerStyle         = "webgrid-footer",
            string rowStyle            = null,
            string alternatingRowStyle = null,
            string selectedRowStyle    = null,
            string caption             = null,
            bool displayHeader         = true,
            bool fillEmptyRows         = false,
            string emptyRowCellValue   = null,
            IEnumerable <WebGridColumnHelper> columns = null,
            IEnumerable <string> exclusions           = null,
            WebGridPagerModes mode = WebGridPagerModes.Numeric | WebGridPagerModes.NextPrevious,
            string firstText       = null,
            string previousText    = null,
            string nextText        = null,
            string lastText        = null,
            int numericLinksCount  = 5,
            Object htmlAttributes  = null,
            bool displayTotalItems = true,
            string totalItemsText  = "Total items")
        {
            HtmlString result;

            AdminPages adminPages = new AdminPages();
            AdminPage  adminPage  = adminPages.GetPageByCurrentAction();

            if (adminPages.IsPermissionGranted(adminPage.PageId, PermissionCode.Read))
            {
                WebGrid     webGrid     = this;
                IHtmlString webGridHtml = webGrid.GetHtml(tableStyle, headerStyle, footerStyle, rowStyle, alternatingRowStyle, selectedRowStyle, caption, displayHeader, fillEmptyRows, emptyRowCellValue, columns, exclusions, mode, firstText, previousText, nextText, lastText, numericLinksCount, htmlAttributes);

                string webGridHtmlString = webGridHtml.ToString();

                HtmlDocument htmlDocument = new HtmlDocument();

                //TH Attributes
                htmlDocument.LoadHtml(webGridHtmlString);
                HtmlNodeCollection htmlNodeCollection = htmlDocument.DocumentNode.SelectSingleNode("//thead/tr").SelectNodes("th");
                int i = 0;
                foreach (WebGridColumnHelper c in columns)
                {
                    if (c.ThAttributes.IsNotNull())
                    {
                        HtmlNode htmlNodeTh = HtmlNode.CreateNode(htmlNodeCollection[i].OuterHtml.Insert(3, " " + c.ThAttributes + " "));
                        htmlNodeCollection[i].ParentNode.ReplaceChild(htmlNodeTh, htmlNodeCollection[i]);
                    }
                    if (c.DataHide.IsNotNull())
                    {
                        HtmlNode htmlNodeTh = HtmlNode.CreateNode(htmlNodeCollection[i].OuterHtml.Insert(3, " data-hide=\"" + c.DataHide.ToString().ToLower().Split('_').ToCSV(',') + "\" "));
                        htmlNodeCollection[i].ParentNode.ReplaceChild(htmlNodeTh, htmlNodeCollection[i]);
                    }
                    i++;
                }
                webGridHtmlString = htmlDocument.DocumentNode.OuterHtml;

                //Sort icon
                if (webGrid.SortColumn.IsNotEmptyOrWhiteSpace())
                {
                    htmlDocument.LoadHtml(webGridHtmlString);
                    HtmlNode htmlNodeAnchor = htmlDocument.DocumentNode.SelectSingleNode("//a[contains(@href,'sort=" + webGrid.SortColumn + "')]");
                    if (htmlNodeAnchor != null)
                    {
                        string imgSortDirection;
                        if (webGrid.SortDirection == SortDirection.Ascending)
                        {
                            imgSortDirection = "imgSortDirectionASC";
                        }
                        else
                        {
                            imgSortDirection = "imgSortDirectionDESC";
                        }
                        HtmlNode htmlNodeIcon = HtmlNode.CreateNode("<div class=\"" + imgSortDirection + "\"></div>");

                        htmlNodeAnchor.ParentNode.AppendChild(htmlNodeIcon);

                        // Fix a bug http://stackoverflow.com/questions/759355/image-tag-not-closing-with-htmlagilitypack
                        if (HtmlNode.ElementsFlags.ContainsKey("img"))
                        {
                            HtmlNode.ElementsFlags["img"] = HtmlElementFlag.Closed;
                        }
                        else
                        {
                            HtmlNode.ElementsFlags.Add("img", HtmlElementFlag.Closed);
                        }

                        webGridHtmlString = htmlDocument.DocumentNode.OuterHtml;
                    }
                }

                //Total Row Count
                htmlDocument.LoadHtml(webGridHtmlString);
                HtmlNode htmlNodeTFoot = htmlDocument.DocumentNode.SelectSingleNode("//tfoot/tr/td");
                if (htmlNodeTFoot != null)
                {
                    string pager = webGrid.Pager(numericLinksCount: 10, mode: WebGridPagerModes.All).ToString();
                    if (displayTotalItems)
                    {
                        pager = "<span class=\"pager-total-items-text\">" + totalItemsText + ":</span> <span class=\"pager-total-items-value\">" + webGrid.TotalRowCount.ToString() + "</span><span class=\"pager-pagination\">" + pager + "</span>";
                    }

                    htmlNodeTFoot.InnerHtml = pager;

                    // Fix a bug http://stackoverflow.com/questions/759355/image-tag-not-closing-with-htmlagilitypack
                    if (HtmlNode.ElementsFlags.ContainsKey("img"))
                    {
                        HtmlNode.ElementsFlags["img"] = HtmlElementFlag.Closed;
                    }
                    else
                    {
                        HtmlNode.ElementsFlags.Add("img", HtmlElementFlag.Closed);
                    }

                    webGridHtmlString = htmlDocument.DocumentNode.OuterHtml;
                }

                result = new HtmlString(webGridHtmlString);
            }
            else
            {
                result = new HtmlString("<span class=\"label label-danger\">" + Resources.Strings.InsufficientPermissions + "</span>");
            }

            return(new HelperResult(writer =>
            {
                writer.Write(result);
            }));
        }