using System; using System.Collections.Generic; using System.Text; using ScrewTurn.Wiki.AclEngine; namespace ScrewTurn.Wiki { /// /// Contains actions for resources. /// public static class Actions { /// /// The full control action. /// public const string FullControl = AclEntry.FullControlAction; /// /// Contains actions for global resources. /// public static class ForGlobals { /// /// The master prefix for global resources ('G'). /// public const string ResourceMasterPrefix = "G"; /// /// Manage user accounts. /// public const string ManageAccounts = "Man_Acc"; /// /// Manage user groups. /// public const string ManageGroups = "Man_Grp"; /// /// Manage pages and categories. /// public const string ManagePagesAndCategories = "Man_PgCat"; /// /// Manage page discussions. /// public const string ManageDiscussions = "Man_Disc"; /// /// Manage namespaces. /// public const string ManageNamespaces = "Man_Ns"; /// /// Manage configuration. /// public const string ManageConfiguration = "Man_Conf"; /// /// Manage providers. /// public const string ManageProviders = "Man_Prov"; /// /// Manage files. /// public const string ManageFiles = "Man_Files"; /// /// Manage snippets and templates. /// public const string ManageSnippetsAndTemplates = "Man_Snips_Temps"; /// /// Manage navigation paths. /// public const string ManageNavigationPaths = "Man_NavPath"; /// /// Manage meta-files. /// public const string ManageMetaFiles = "Man_MetaFiles"; /// /// Manage permissions. /// public const string ManagePermissions = "Man_Perms"; /// /// Gets an array containing all actions. /// public static readonly string[] All = new string[] { ManageAccounts, ManageGroups, ManagePagesAndCategories, ManageDiscussions, ManageNamespaces, ManageConfiguration, ManageProviders, ManageFiles, ManageSnippetsAndTemplates, ManageNavigationPaths, ManageMetaFiles, ManagePermissions }; /// /// Gets the full name of an action. /// /// The internal name. /// The full name. public static string GetFullName(string name) { if(name == FullControl) return Exchanger.ResourceExchanger.GetResource("Action_FullControl"); else return Exchanger.ResourceExchanger.GetResource("Action_" + name); } } /// /// Contains actions for namespaces. /// public static class ForNamespaces { /// /// The master prefix for namespaces ('N.'). /// public const string ResourceMasterPrefix = "N."; /// /// The local escalation policies. /// public static readonly Dictionary LocalEscalators = new Dictionary() { { ReadPages, new string[] { CreatePages, ModifyPages, DeletePages, ManagePages } }, { ModifyPages, new string[] { ManagePages } }, { DeletePages, new string[] { ManagePages } }, { CreatePages, new string[] { ManagePages } }, { ReadDiscussion, new string[] { PostDiscussion, ManageDiscussion } }, { PostDiscussion, new string[] { ManageDiscussion } }, { ManageDiscussion, new string[] { ManagePages } }, { DownloadAttachments, new string[] { UploadAttachments, DeleteAttachments } }, { UploadAttachments, new string[] { DeleteAttachments } } }; /// /// The global escalation policies. /// public static readonly Dictionary GlobalEscalators = new Dictionary() { { ReadPages, new string[] { Actions.ForGlobals.ManagePagesAndCategories, Actions.ForGlobals.ManageNamespaces } }, { CreatePages, new string[] { Actions.ForGlobals.ManagePagesAndCategories, Actions.ForGlobals.ManageNamespaces } }, { ModifyPages, new string[] { Actions.ForGlobals.ManagePagesAndCategories, Actions.ForGlobals.ManageNamespaces } }, { ReadDiscussion, new string[] { Actions.ForGlobals.ManageDiscussions } }, { PostDiscussion, new string[] { Actions.ForGlobals.ManageDiscussions } }, { ManageDiscussion, new string[] { Actions.ForGlobals.ManageDiscussions } }, { DeletePages, new string[] { Actions.ForGlobals.ManagePagesAndCategories, Actions.ForGlobals.ManageNamespaces } }, { ManagePages, new string[] { Actions.ForGlobals.ManagePagesAndCategories, Actions.ForGlobals.ManageNamespaces } }, { ManageCategories, new string[] { Actions.ForGlobals.ManagePagesAndCategories } }, { DownloadAttachments, new string[] { Actions.ForGlobals.ManageFiles } }, { UploadAttachments, new string[] { Actions.ForGlobals.ManageFiles } }, { DeleteAttachments, new string[] { Actions.ForGlobals.ManageFiles } } }; /// /// Read pages. /// public const string ReadPages = "Rd_Pg"; /// /// Create pages. /// public const string CreatePages = "Crt_Pg"; /// /// Modify pages. /// public const string ModifyPages = "Mod_Pg"; /// /// Delete pages. /// public const string DeletePages = "Del_Pg"; /// /// Manage pages. /// public const string ManagePages = "Man_Pg"; /// /// Read page discussions. /// public const string ReadDiscussion = "Rd_Disc"; /// /// Post messages in page discussions. /// public const string PostDiscussion = "Pst_Disc"; /// /// Manage messages in page discussions. /// public const string ManageDiscussion = "Man_Disc"; /// /// Manage categories. /// public const string ManageCategories = "Man_Cat"; /// /// Download attachments. /// public const string DownloadAttachments = "Down_Attn"; /// /// Upload attachments. /// public const string UploadAttachments = "Up_Attn"; /// /// Delete attachments. /// public const string DeleteAttachments = "Del_Attn"; /// /// Gets an array containing all actions. /// public static readonly string[] All = new string[] { ReadPages, CreatePages, ModifyPages, DeletePages, ManagePages, ReadDiscussion, PostDiscussion, ManageDiscussion, ManageCategories, DownloadAttachments, UploadAttachments, DeleteAttachments }; /// /// Gets the full name of an action. /// /// The internal name. /// The full name. public static string GetFullName(string name) { if(name == FullControl) return Exchanger.ResourceExchanger.GetResource("Action_FullControl"); else return Exchanger.ResourceExchanger.GetResource("Action_" + name); } } /// /// Contains actions for pages. /// public static class ForPages { /// /// The master prefix for pages ('P.'). /// public const string ResourceMasterPrefix = "P."; /// /// The local escalation policies. /// public static readonly Dictionary LocalEscalators = new Dictionary() { { ReadPage, new string[] { ModifyPage, ManagePage } }, { ModifyPage, new string[] { ManagePage } }, { ReadDiscussion, new string[] { PostDiscussion, ManageDiscussion } }, { PostDiscussion, new string[] { ManageDiscussion } }, { ManageDiscussion, new string[] { ManagePage } }, { DownloadAttachments, new string[] { UploadAttachments, DeleteAttachments } }, { UploadAttachments, new string[] { DeleteAttachments } } }; /// /// The namespace escalation policies. /// public static readonly Dictionary NamespaceEscalators = new Dictionary() { { ReadPage, new string[] { Actions.ForNamespaces.ReadPages, Actions.ForNamespaces.ModifyPages, Actions.ForNamespaces.ManagePages, Actions.ForNamespaces.CreatePages, Actions.ForNamespaces.DeletePages } }, { ModifyPage, new string[] { Actions.ForNamespaces.CreatePages, Actions.ForNamespaces.ModifyPages, Actions.ForNamespaces.ManagePages, Actions.ForNamespaces.CreatePages, Actions.ForNamespaces.DeletePages } }, { ManagePage, new string[] { Actions.ForNamespaces.ManagePages } }, { ReadDiscussion, new string[] { Actions.ForNamespaces.ReadDiscussion, Actions.ForNamespaces.PostDiscussion, Actions.ForNamespaces.ManageDiscussion } }, { PostDiscussion, new string[] { Actions.ForNamespaces.PostDiscussion, Actions.ForNamespaces.ManageDiscussion } }, { ManageDiscussion, new string[] { Actions.ForNamespaces.ManageDiscussion } }, { DownloadAttachments, new string[] { Actions.ForNamespaces.DownloadAttachments, Actions.ForNamespaces.UploadAttachments, Actions.ForNamespaces.DeleteAttachments } }, { ManageCategories, new string[] { Actions.ForNamespaces.ManageCategories } }, { UploadAttachments, new string[] { Actions.ForNamespaces.UploadAttachments } }, { DeleteAttachments, new string[] { Actions.ForNamespaces.DeleteAttachments } } }; /// /// The global escalation policies. /// public static readonly Dictionary GlobalEscalators = new Dictionary() { { ReadPage, new string[] { Actions.ForGlobals.ManagePagesAndCategories, Actions.ForGlobals.ManageNamespaces } }, { ModifyPage, new string[] { Actions.ForGlobals.ManagePagesAndCategories, Actions.ForGlobals.ManageNamespaces } }, { ManagePage, new string[] { Actions.ForGlobals.ManagePagesAndCategories, Actions.ForGlobals.ManageNamespaces } }, { ReadDiscussion, new string[] { Actions.ForGlobals.ManageDiscussions } }, { PostDiscussion, new string[] { Actions.ForGlobals.ManageDiscussions } }, { ManageDiscussion, new string[] { Actions.ForGlobals.ManageDiscussions } }, { ManageCategories, new string[] { Actions.ForGlobals.ManagePagesAndCategories } }, { DownloadAttachments, new string[] { Actions.ForGlobals.ManageFiles } }, { UploadAttachments, new string[] { Actions.ForGlobals.ManageFiles } }, { DeleteAttachments, new string[] { Actions.ForGlobals.ManageFiles } } }; /// /// Read the page. /// public const string ReadPage = "Rd_1Pg"; /// /// Modify the page. /// public const string ModifyPage = "Mod_1Pg"; /// /// Manage the page. /// public const string ManagePage = "Man_1Pg"; /// /// Read page discussion. /// public const string ReadDiscussion = "Rd_1Disc"; /// /// Post messages in page discussion. /// public const string PostDiscussion = "Pst_1Disc"; /// /// Manage page discussion. /// public const string ManageDiscussion = "Man_1Disc"; /// /// Manage the categories of the page. /// public const string ManageCategories = "Man_1Cat"; /// /// Download attachments. /// public const string DownloadAttachments = "Down_1Attn"; /// /// Upload attachments. /// public const string UploadAttachments = "Up_1Attn"; /// /// Delete attachments. /// public const string DeleteAttachments = "Del_1Attn"; /// /// Gets an array containing all actions. /// public static readonly string[] All = new string[] { ReadPage, ModifyPage, ManagePage, ReadDiscussion, PostDiscussion, ManageDiscussion, ManageCategories, DownloadAttachments, UploadAttachments, DeleteAttachments }; /// /// Gets the full name of an action. /// /// The internal name. /// The full name. public static string GetFullName(string name) { if(name == FullControl) return Exchanger.ResourceExchanger.GetResource("Action_FullControl"); else return Exchanger.ResourceExchanger.GetResource("Action_" + name); } } /// /// Contains actions for file directories. /// public static class ForDirectories { /// /// The master prefix for directories ('D.'). /// public const string ResourceMasterPrefix = "D."; /// /// The local escalation policies. /// public static readonly Dictionary LocalEscalators = new Dictionary() { { List, new string[] { DownloadFiles, UploadFiles, DeleteFiles, CreateDirectories, DeleteDirectories } }, { DownloadFiles, new string[] { UploadFiles, DeleteFiles, CreateDirectories, DeleteDirectories } }, { UploadFiles, new string[] { DeleteFiles } }, { CreateDirectories, new string[] { DeleteDirectories } } }; /// /// The global escalation policies. /// public static readonly Dictionary GlobalEscalators = new Dictionary() { { List, new string[] { Actions.ForGlobals.ManageFiles } }, { DownloadFiles, new string[] { Actions.ForGlobals.ManageFiles } }, { UploadFiles, new string[] { Actions.ForGlobals.ManageFiles } }, { DeleteFiles, new string[] { Actions.ForGlobals.ManageFiles } }, { CreateDirectories, new string[] { Actions.ForGlobals.ManageFiles } }, { DeleteDirectories, new string[] { Actions.ForGlobals.ManageFiles } } }; /// /// List files and directories. /// public const string List = "List"; /// /// Download files. /// public const string DownloadFiles = "Down_Files"; /// /// Upload files. /// public const string UploadFiles = "Up_Files"; /// /// Delete files. /// public const string DeleteFiles = "Del_Files"; /// /// Create directories. /// public const string CreateDirectories = "Crt_Dirs"; /// /// Delete directories. /// public const string DeleteDirectories = "Del_Dirs"; /// /// Gets an array containing all actions. /// public static readonly string[] All = new string[] { List, DownloadFiles, UploadFiles, DeleteFiles, CreateDirectories, DeleteDirectories }; /// /// Gets the full name of an action. /// /// The internal name. /// The full name. public static string GetFullName(string name) { if(name == FullControl) return Exchanger.ResourceExchanger.GetResource("Action_FullControl"); else return Exchanger.ResourceExchanger.GetResource("Action_" + name); } } } }