DNN Platform Role-Based Control Panels

More details about this project may be found on my blog.

Description

The DotNetNuke content management system exposes a control panel to administrators, allowing for site and (in the case of host users) installation administration. Historically some components of these administrative tasks (the "Admin" menu) were displayed alongside the main site navigation, however, after version 6.0 this component was moved out of this navigation area and consolidated into a single interface. This served to reduce the layout differences between ordinary and administrative user, and greatly enhances the user experience.

However, while in previous versions it was possible to assign access permissions to some administrative components (e.g. access on the "Admin" menu or page-editing permissions) to users who were not members of the Administrators group, some delegation-related use-cases were deprecated in version 6.0. While users who have specific permissions (e.g. the ability to edit a specific page or module) may be granted access to some subcomponents of this enhanced control panel, some functionality is restricted only to those in the "Administrators" role. Stated another way, in order to view the control panel an individual must be (i) in the Administrators role, (ii) visiting a page that is editable by that user, or (iii) visiting a page with a module that is editable by that user. It is not possible to display the "Admin" control panel option to users who have permission but do not meet the criteria above.

Additionally, the ability to present a "control panel-like" interface on a site-wide basis is an interesting use-case. For example, Facebook presents a toolbar to authenticated users that is visually similar to the DotNetNuke control panel. The ability to display a control of this type to authorized users would enable this sort of functionality not presently possibly without tedious workarounds (e.g. including an additional module on each page).

Accordingly, this project is designed to expose the ability to instantiate a control panel on a per-role basis, with the intention that functionality delegated to non-administrators may be exposed via an alternate control panel that contains only that functionality relevant to those users.

Goals

  • Seamless integration of alternate control panels to non-administrators, with existing administrators (and hosts) remaining unaffected.
  • Per-request, role-based identification of the most-suitable control panel for a given user
  • The ability to specify associate various controls with roles via metadata
  • A demonstration control that displays only the "Admin" menu to authorized users
  • Require no core changes and utilize only existing DotNetNuke extension points

Installation and Documentation

See the documentation page for details on installing the extension and associating an alternate control panel with a role. Note that, by default and for security reasons, no initial control panel associations are made when installing this extension. Nothing will change in an existing installation without additional metadata changes!

Feedback, Reviews, and Ratings Appreciated!

Feedback about your experiences is needed, and greatly appreciated!

Last edited Apr 23 at 8:14 PM by BrandonHaynes, version 5