Esempio n. 1
0
        protected override void Render(HtmlTextWriter writer)
        {
            if (RequiredPermission == Permission.None)
            {
                RequiredPermission = Page.GetType().GetCustomAttributes(typeof(IPermittable), true).OfType <IPermittable>()
                                     .Select(p => PermissionMap.GetMaximumPermission(p.RequiredPermission))
                                     .OrderByDescending(rp => rp)
                                     .FirstOrDefault();
            }

            var item = new SelectionUtility(this, Page.GetEngine()).SelectedItem;

            if (!Page.GetEngine().SecurityManager.IsAuthorized(Page.User, item, RequiredPermission))
            {
                var message = "User: "******"(" + GetUserRoles(Page.User.Identity.Name) + ")" +
                              "  Item:" + item.GetType().Name + "_" + item.ID + "_" + item.State + "_" + item.Title +
                              ",  RequiredPremission:" + RequiredPermission + ", AlteredPermissions:" +
                              item.AlteredPermissions + " , Write_Roles: (" + GetRolesForPermission(item, Permission.Write) + ")" +
                              " , Publish_Roles: (" + GetRolesForPermission(item, Permission.Publish) + ")" +
                              " , Admin_Roles: (" + GetRolesForPermission(item, Permission.Administer) + ")" +
                              GetAdditionalInfo(item, Page.User);
                Page.GetEngine().Resolve <IErrorNotifier>().Notify(new UnauthorizedAccessException(message));
                cv.IsValid = false;
                cv.RenderControl(writer);
            }
            else
            {
                base.Render(writer);
            }
        }