コード例 #1
0
 public static HtmlBuilder HistoryCommands(this HtmlBuilder hb, SiteSettings ss)
 {
     return(hb.Div(
                css: "command-left",
                action: () => hb
                .Button(
                    text: Displays.Restore(),
                    controlCss: "button-icon",
                    onClick: "$p.send($(this));",
                    icon: "ui-icon-arrowreturnthick-1-n",
                    action: "RestoreFromHistory",
                    method: "post",
                    confirm: "ConfirmRestore",
                    _using: Parameters.History.Restore && ss.CanUpdate())
                .Button(
                    text: Displays.DeleteHistory(),
                    controlCss: "button-icon",
                    onClick: "$p.send($(this));",
                    icon: "ui-icon-closethick",
                    action: "DeleteHistory",
                    method: "delete",
                    confirm: "ConfirmPhysicalDelete",
                    _using: Parameters.History.PhysicalDelete && ss.CanManageSite()),
                _using: (Parameters.History.Restore || Parameters.History.PhysicalDelete) &&
                ss.Context.Controller == "items" &&
                (ss.CanUpdate() || ss.CanManageSite())));
 }
コード例 #2
0
        public static bool CanDelete(this SiteSettings ss, bool site = false)
        {
            switch (Routes.Controller())
            {
            case "depts":
                return(CanManageTenant());

            case "groups":
                return(CanEditGroup());

            case "users":
                return(CanManageTenant() &&
                       Sessions.UserId() != Routes.Id());

            default:
                if (ss.ReferenceType == "Sites")
                {
                    return(ss.CanManageSite());
                }
                else
                {
                    return(ss.Can(Types.Delete, site));
                }
            }
        }
コード例 #3
0
 /// <summary>
 /// Fixed:
 /// </summary>
 public static string Restore(SiteSettings ss)
 {
     if (ss.CanManageSite())
     {
         var selector = new GridSelector();
         var count    = 0;
         if (selector.All)
         {
             count = Restore(ss, selector.Selected, negative: true);
         }
         else
         {
             if (selector.Selected.Any())
             {
                 count = Restore(ss, selector.Selected);
             }
             else
             {
                 return(Messages.ResponseSelectTargets().ToJson());
             }
         }
         Summaries.Synchronize(ss);
         return("");
     }
     else
     {
         return(Messages.ResponseHasNotPermission().ToJson());
     }
 }
コード例 #4
0
        public static bool CanSendMail(this SiteSettings ss, bool site = false)
        {
            if (!Contract.Mail())
            {
                return(false);
            }
            switch (Routes.Controller())
            {
            case "depts":
                return(CanManageTenant());

            case "groups":
                return(CanEditGroup());

            case "users":
                return(CanManageTenant() || Sessions.UserId() == Routes.Id());

            default:
                if (ss.ReferenceType == "Sites")
                {
                    return(ss.CanManageSite());
                }
                else
                {
                    return(ss.Can(Types.SendMail, site));
                }
            }
        }
コード例 #5
0
 private static bool CanManageTrashBox(SiteSettings ss)
 {
     return((Parameters.Deleted.Restore || Parameters.Deleted.PhysicalDelete) &&
            ss.Context.Controller == "items" &&
            ss.CanManageSite() &&
            (ss.Context.Id != 0 || ss.Context.HasPrivilege));
 }
コード例 #6
0
 public static Error.Types OnSetSiteSettings(SiteSettings ss, out string data)
 {
     data = null;
     if (!ss.CanManageSite())
     {
         return(Error.Types.HasNotPermission);
     }
     foreach (var formData in Forms.All())
     {
         switch (formData.Key)
         {
         case "Format":
             try
             {
                 0.ToString(formData.Value, Sessions.CultureInfo());
             }
             catch (System.Exception)
             {
                 data = formData.Value;
                 return(Error.Types.BadFormat);
             }
             break;
         }
     }
     return(Error.Types.None);
 }
コード例 #7
0
 public static Error.Types OnSorting(SiteSettings ss)
 {
     if (ss.SiteId != 0 && !ss.CanManageSite())
     {
         return(Error.Types.HasNotPermission);
     }
     return(Error.Types.None);
 }
コード例 #8
0
 public static Error.Types OnUpdating(SiteSettings ss)
 {
     if (!ss.CanManageSite())
     {
         return(Error.Types.HasNotPermission);
     }
     return(Error.Types.None);
 }
コード例 #9
0
 private static HtmlBuilder NavigationMenu(
     this HtmlBuilder hb,
     SiteSettings ss,
     long siteId,
     string referenceType,
     bool useNavigationMenu)
 {
     return(hb.Ul(
                id: "NavigationMenu",
                action: () => hb
                .Li(
                    action: () => hb
                    .Div(action: () => hb
                         .A(
                             href: NewHref(ss),
                             attributes: SiteIndex(ss)
                                 ? new HtmlAttributes()
                             .OnClick("$p.openTemplateDialog($(this));")
                             .DataAction("OpenTemplateDialog")
                             .DataMethod("post")
                                 : null,
                             action: () => hb
                             .Span(css: "ui-icon ui-icon-plus")
                             .Text(text: Displays.New()))),
                    _using: ss.ReferenceType == "Sites" && Routes.Action() == "index"
                     ? ss.CanManageSite()
                     : ss.CanCreate() && ss.ReferenceType != "Wikis")
                .Li(
                    css: "sub-menu",
                    action: () => hb
                    .Div(
                        attributes: new HtmlAttributes().DataId("ViewModeMenu"),
                        action: () => hb
                        .Span(css: "ui-icon ui-icon-triangle-1-e")
                        .Text(text: Displays.View()))
                    .ViewModeMenu(ss: ss),
                    _using: Def.ViewModeDefinitionCollection
                    .Any(o => o.ReferenceType == referenceType))
                .Li(
                    css: "sub-menu",
                    action: () => hb
                    .Div(
                        attributes: new HtmlAttributes().DataId("SettingsMenu"),
                        action: () => hb
                        .Span(css: "ui-icon ui-icon-gear")
                        .Text(text: Displays.Setting()))
                    .SettingsMenu(siteId: siteId, ss: ss))
                .Li(
                    css: "sub-menu",
                    action: () => hb
                    .Div(
                        attributes: new HtmlAttributes().DataId("AccountMenu"),
                        action: () => hb
                        .Span(css: "ui-icon ui-icon-person")
                        .Text(text: SiteInfo.UserName((
                                                          Sessions.UserId()))))
                    .AccountMenu())));
 }
コード例 #10
0
 public static Error.Types OnDeleting(SiteSettings ss, SiteModel siteModel)
 {
     if (ss.Title != Forms.Data("DeleteSiteTitle") || !Authenticate())
     {
         return(Error.Types.IncorrectSiteDeleting);
     }
     return(ss.CanManageSite()
         ? Error.Types.None
         : Error.Types.HasNotPermission);
 }
コード例 #11
0
 public static Error.Types OnEditing(SiteSettings ss, SiteModel siteModel)
 {
     return
         (ss.CanManageSite() &&
          siteModel.AccessStatus != Databases.AccessStatuses.NotFound
             ? Error.Types.None
             : siteModel.MethodType == BaseModel.MethodTypes.New
                 ? Error.Types.HasNotPermission
                 : Error.Types.NotFound);
 }
コード例 #12
0
 public static Error.Types OnDeleting(SiteSettings ss, SiteModel siteModel)
 {
     if (ss.Title != Forms.Data("DeleteSiteTitle") || !Authentications.Try(
             Forms.Data("Users_LoginId"), Forms.Data("Users_Password").Sha512Cng()))
     {
         return(Error.Types.IncorrectSiteDeleting);
     }
     return(ss.CanManageSite()
         ? Error.Types.None
         : Error.Types.HasNotPermission);
 }
コード例 #13
0
        public static Error.Types OnCreating(SiteSettings ss, SiteModel siteModel)
        {
            if (!ss.CanManageSite())
            {
                return(Error.Types.HasNotPermission);
            }
            ss.SetColumnAccessControls(siteModel.Mine());
            foreach (var controlId in Forms.Keys())
            {
                switch (controlId)
                {
                case "Sites_Title":
                    if (!ss.GetColumn("Title").CanCreate)
                    {
                        return(Error.Types.HasNotPermission);
                    }
                    break;

                case "Sites_Body":
                    if (!ss.GetColumn("Body").CanCreate)
                    {
                        return(Error.Types.HasNotPermission);
                    }
                    break;

                case "Sites_ReferenceType":
                    if (!ss.GetColumn("ReferenceType").CanCreate)
                    {
                        return(Error.Types.HasNotPermission);
                    }
                    break;

                case "Sites_InheritPermission":
                    if (!ss.GetColumn("InheritPermission").CanCreate)
                    {
                        return(Error.Types.HasNotPermission);
                    }
                    break;

                case "Comments":
                    if (!ss.GetColumn("Comments").CanCreate)
                    {
                        return(Error.Types.HasNotPermission);
                    }
                    break;
                }
            }
            return(Error.Types.None);
        }
コード例 #14
0
 /// <summary>
 /// Fixed:
 /// </summary>
 public static Error.Types OnUploadingSiteImage(SiteSettings ss, byte[] file)
 {
     if (!ss.CanManageSite())
     {
         return(Error.Types.HasNotPermission);
     }
     if (file == null)
     {
         return(Error.Types.SelectFile);
     }
     try
     {
         System.Drawing.Image.FromStream(new System.IO.MemoryStream(file));
     }
     catch (System.Exception)
     {
         return(Error.Types.IncorrectFileFormat);
     }
     return(Error.Types.None);
 }
コード例 #15
0
 public static Error.Types OnMoving(
     long currentId,
     long destinationId,
     SiteSettings current,
     SiteSettings source,
     SiteSettings destination)
 {
     if (currentId != 0 && !current.CanManageSite())
     {
         return(Error.Types.HasNotPermission);
     }
     if (!source.CanManageSite())
     {
         return(Error.Types.HasNotPermission);
     }
     if (destinationId != 0 && !destination.CanManageSite())
     {
         return(Error.Types.HasNotPermission);
     }
     return(Error.Types.None);
 }
コード例 #16
0
 public static string DeleteHistory(SiteSettings ss, long wikiId)
 {
     if (!Parameters.History.PhysicalDelete)
     {
         return(Error.Types.InvalidRequest.MessageJson());
     }
     if (ss.CanManageSite())
     {
         var selector = new GridSelector();
         var selected = selector
                        .Selected
                        .Select(o => o.ToInt())
                        .ToList();
         var count = 0;
         if (selector.All)
         {
             count = DeleteHistory(ss, wikiId, selected, negative: true);
         }
         else
         {
             if (selector.Selected.Any())
             {
                 count = DeleteHistory(ss, wikiId, selected);
             }
             else
             {
                 return(Messages.ResponseSelectTargets().ToJson());
             }
         }
         return(Histories(
                    ss: ss,
                    wikiId: wikiId,
                    message: Messages.HistoryDeleted(count.ToString())));
     }
     else
     {
         return(Messages.ResponseHasNotPermission().ToJson());
     }
 }
コード例 #17
0
 private static HtmlBuilder SettingsMenu(
     this HtmlBuilder hb, SiteSettings ss, long siteId)
 {
     return(hb.Ul(id: "SettingsMenu", css: "menu", action: () => hb
                  .Li(
                      action: () => hb
                      .A(
                          href: Locations.ItemEdit(siteId),
                          action: () => hb
                          .Span(css: "ui-icon ui-icon-gear")
                          .Text(text: Displays.SiteSettings())),
                      _using: siteId != 0 && ss.CanManageSite(site: true))
                  .Li(
                      action: () => hb
                      .A(
                          href: Locations.Index("Depts"),
                          action: () => hb
                          .Span(css: "ui-icon ui-icon-gear")
                          .Text(text: Displays.DeptAdmin())),
                      _using: Permissions.CanManageTenant())
                  .Li(
                      action: () => hb
                      .A(
                          href: Locations.Index("Groups"),
                          action: () => hb
                          .Span(css: "ui-icon ui-icon-gear")
                          .Text(text: Displays.GroupAdmin())))
                  .Li(
                      action: () => hb
                      .A(
                          href: Locations.Index("Users"),
                          action: () => hb
                          .Span(css: "ui-icon ui-icon-gear")
                          .Text(text: Displays.UserAdmin())),
                      _using: Permissions.CanManageTenant())));
 }
コード例 #18
0
        private static HtmlBuilder NavigationMenu(
            this HtmlBuilder hb,
            SiteSettings ss,
            long siteId,
            string referenceType,
            bool useNavigationMenu)
        {
            var canManageGroups = Sessions.UserSettings().DisableGroupAdmin != true;
            var canManageSite   = siteId != 0 && ss.CanManageSite(site: true);
            var canManageDepts  = Permissions.CanManageTenant();
            var canManageUsers  = Permissions.CanManageTenant();

            return(hb.Ul(
                       id: "NavigationMenu",
                       action: () => hb
                       .Li(
                           action: () => hb
                           .Div(action: () => hb
                                .A(
                                    href: NewHref(ss),
                                    attributes: SiteIndex(ss)
                                        ? new HtmlAttributes()
                                    .OnClick("$p.templates($(this));")
                                    .DataAction("Templates")
                                    .DataMethod("post")
                                        : null,
                                    action: () => hb
                                    .Span(css: "ui-icon ui-icon-plus")
                                    .Text(text: Displays.New()))),
                           _using: ss.ReferenceType == "Sites" && Routes.Action() == "index"
                            ? ss.CanManageSite()
                            : ss.CanCreate() && ss.ReferenceType != "Wikis")
                       .Li(
                           css: "sub-menu",
                           action: () => hb
                           .Div(
                               attributes: new HtmlAttributes().DataId("ViewModeMenu"),
                               action: () => hb
                               .Span(css: "ui-icon ui-icon-triangle-1-e")
                               .Text(text: Displays.View()))
                           .ViewModeMenu(ss: ss),
                           _using: Def.ViewModeDefinitionCollection
                           .Any(o => o.ReferenceType == referenceType))
                       .Li(
                           css: "sub-menu",
                           action: () => hb
                           .Div(
                               attributes: new HtmlAttributes().DataId("SettingsMenu"),
                               action: () => hb
                               .Span(css: "ui-icon ui-icon-gear")
                               .Text(text: Displays.Manage()))
                           .SettingsMenu(
                               ss: ss,
                               siteId: siteId,
                               canManageSite: canManageSite,
                               canManageDepts: canManageDepts,
                               canManageGroups: canManageGroups,
                               canManageUsers: canManageUsers),
                           _using:
                           canManageSite ||
                           canManageDepts ||
                           canManageGroups ||
                           canManageUsers)
                       .Li(
                           css: "sub-menu",
                           action: () => hb
                           .Div(
                               attributes: new HtmlAttributes().DataId("AccountMenu"),
                               action: () => hb
                               .Span(css: "ui-icon ui-icon-person")
                               .Text(text: SiteInfo.UserName((
                                                                 Sessions.UserId()))))
                           .AccountMenu())));
        }
コード例 #19
0
        public static Error.Types OnUpdating(SiteSettings ss, SiteModel siteModel)
        {
            if (!ss.CanManageSite())
            {
                return(Error.Types.HasNotPermission);
            }
            ss.SetColumnAccessControls(siteModel.Mine());
            foreach (var controlId in Forms.Keys())
            {
                switch (controlId)
                {
                case "Sites_Title":
                    if (siteModel.Title_Updated() &&
                        !ss.GetColumn("Title").CanUpdate)
                    {
                        return(Error.Types.HasNotPermission);
                    }
                    break;

                case "Sites_Body":
                    if (siteModel.Body_Updated() &&
                        !ss.GetColumn("Body").CanUpdate)
                    {
                        return(Error.Types.HasNotPermission);
                    }
                    break;

                case "Sites_ReferenceType":
                    if (siteModel.ReferenceType_Updated() &&
                        !ss.GetColumn("ReferenceType").CanUpdate)
                    {
                        return(Error.Types.HasNotPermission);
                    }
                    break;

                case "Sites_InheritPermission":
                    if (siteModel.InheritPermission_Updated() &&
                        !ss.GetColumn("InheritPermission").CanUpdate)
                    {
                        return(Error.Types.HasNotPermission);
                    }
                    break;

                case "InheritPermission":
                    var type = InheritPermission(ss);
                    if (type != Error.Types.None)
                    {
                        return(type);
                    }
                    break;

                case "CurrentPermissionsAll":
                    if (!ss.CanManagePermission())
                    {
                        return(Error.Types.HasNotPermission);
                    }
                    if (!new PermissionCollection(
                            ss.SiteId, Forms.List("CurrentPermissionsAll")).InTenant())
                    {
                        return(Error.Types.InvalidRequest);
                    }
                    break;

                case "SearchPermissionElements":
                case "OpenPermissionsDialog":
                case "AddPermissions":
                case "DeletePermissions":
                    if (!ss.CanManagePermission())
                    {
                        return(Error.Types.HasNotPermission);
                    }
                    break;

                case "Comments":
                    if (!ss.GetColumn("Comments").CanUpdate)
                    {
                        return(Error.Types.HasNotPermission);
                    }
                    break;
                }
            }
            return(Error.Types.None);
        }
コード例 #20
0
 public static Error.Types OnReading(SiteSettings ss)
 {
     return(ss.CanManageSite()
         ? Error.Types.None
         : Error.Types.HasNotPermission);
 }