Ejemplo n.º 1
0
        public override void OnActionExecuting(ActionExecutingContext filterContext)
        {
            base.OnActionExecuting(filterContext);

            Audit.Core.Configuration.DataProvider = (IOAuditLogDataProvider)HttpContext
                                                    .RequestServices.GetService(typeof(IOAuditLogDataProvider));
            Audit.Core.Configuration.CreationPolicy = Audit.Core.EventCreationPolicy.Manual;

            /*
             *      Управление на активния елемент на менюто
             *      ViewBag.MenuItemValue съдържа ключовата дума, отговорна за отварянето на менюто
             *      Ако не намери атрибут на action-а MenuItem("{keyword}"), се използва името на action-а
             *      Ако action-а е от вида List_Edit се подава list (отрязва до последния символ долна подчертавка)
             */
            ControllerActionDescriptor controllerActionDescriptor = filterContext.ActionDescriptor as ControllerActionDescriptor;

            if (controllerActionDescriptor != null)
            {
                ActionName     = controllerActionDescriptor.ActionName;
                ControllerName = controllerActionDescriptor.ControllerName;
                object currentMenuItem = null;
                var    menuAttrib      = controllerActionDescriptor
                                         .MethodInfo
                                         .CustomAttributes
                                         .FirstOrDefault(a => a.AttributeType == typeof(MenuItemAttribute));
                if (menuAttrib != null)
                {
                    currentMenuItem = menuAttrib.ConstructorArguments[0].Value;
                }
                if (currentMenuItem == null)
                {
                    var actionName = controllerActionDescriptor.ActionName;
                    if (actionName.Contains('_'))
                    {
                        currentMenuItem = actionName.Substring(0, actionName.LastIndexOf('_')).ToLower();
                    }
                    else
                    {
                        currentMenuItem = actionName.ToLower();
                    }
                }
                ViewBag.MenuItemValue = currentMenuItem;
                ViewBag.ActionName    = ActionName;
            }
            // ---------Управление на активния елемент на менюто, край

            var cultureInfo = HttpContext.Features.Get <IRequestCultureFeature>();

            LanguageCode = cultureInfo?.RequestCulture?.UICulture.TwoLetterISOLanguageName ?? "bg";
            CurrentContextModel currentContext = TempData.Peek <CurrentContextModel>(TempData_CurrentContext);

            if (currentContext != null)
            {
                ViewBag.AccessControl = (IAccessControl)currentContext;
            }
        }
Ejemplo n.º 2
0
        public void CurrentContext_SetOperation(string operation)
        {
            CurrentContextModel context = TempData.Peek <CurrentContextModel>(TempData_CurrentContext);

            if (context != null)
            {
                context.Info.Operation = operation;
                CurrentContext_Set(context);
            }
        }
Ejemplo n.º 3
0
 /// <summary>
 /// Добавя информация за текущия обект и правата върху него
 /// </summary>
 /// <param name="model"></param>
 /// <returns>true, ако потребителя има право да достъп върху него (model.CanAccess)</returns>
 public bool CurrentContext_Set(CurrentContextModel model)
 {
     model.LastController = this.ControllerName;
     CurrentContext       = model;
     if (CurrentContext.IsRead)
     {
         ViewBag.AccessControl = (IAccessControl)CurrentContext;
     }
     return(CurrentContext.CanAccess);
 }
Ejemplo n.º 4
0
        public bool CurrentContext_IsSame(int sourceType, object sourceId)
        {
            CurrentContextModel context = TempData.Peek <CurrentContextModel>(TempData_CurrentContext);

            if (context != null)
            {
                if (context.Info.SourceType == sourceType && context.Info.SourceId == sourceId.ToString())
                {
                    return(true);
                }
            }
            return(false);
        }