This example shows how to configure the Dashboard control so that it works in the multi-user environment.
You can identify a user in the current session and return the following user-specific content:
Custom dashboard storage allows you to specify which dashboards the user can access, edit, and save.
API: IEditableDashboardStorage Interface
Files to review: CustomDashboardStorage.cs
Custom data source storage allows you to specify which data sources are available to the user.
API: IDataSourceStorage Interface
Files to review: CustomDataSourceStorage.cs
A custom data source schema provider allows you to filter the data source for different users to show only a part of the data source.
Files to review: CustomDBSchemaProvider.cs
A custom connection string provider allows you to specify connection strings depending on the user's access rights.
API: IDataSourceWizardConnectionStringsProvider Interface
Files to review: CustomConnectionStringProvider.cs
The Web Dashboard control can operate in ViewerOnly mode for unauthorized users. To do this, handle the DashboardConfigurator.VerifyClientTrustLevel event and set the e.ClientTrustLevel property to Restricted. This setting prevents inadvertent or unauthorized modifications of dashboards stored on a server. You can find more information in the following help section: Security Considerations - Working Mode Access Rights.
API: DashboardConfigurator.VerifyClientTrustLevel Event
Files to review: Dashboard.cshtml and DashboardConfig.cs
You can limit access to sensitive information depending on the current user's ID. Every custom store/provider reads the HttpContext.Current.Session["CurrentUser"] value from session state.
When the application starts, you see the Index view with a ComboBox in which you can select a user. When you click the Sign in button, the ID of the selected user is passed to the HttpContext.Current.Session["CurrentUser"] variable and you are redirected to the Dashboard view. In this view, the Web Dashboard control displays the features available to the selected user. Below is a table that illustrates the user IDs and their associated rights in this example:
| Role | Dashboard Storage | DataSource Storage | ConnectionString Provider | DBSchema Provider | Working Mode | Create/Edit |
|---|---|---|---|---|---|---|
| Admin | dashboard1_admin, dashboard2_admin | SqlDataSource, JsonDataSource | Northwind, CarsXtraScheduling | All (Categories, Products, Cars,...) | Designer, Viewer | Yes |
| User | dashboard1_user | SqlDataSource | CarsXtraScheduling | Cars | Designer, Viewer | No |
| Guest | dashboard1_guest | - | - | - | ViewerOnly | - |
| Unauthorized | - | - | - | - | ViewerOnly | - |
- Dashboard for MVC - How to load different data based on the current user
- Dashboard for MVC - How to use separate server-side settings for different views
- Dashboard for MVC - How to load and save dashboards from/to a database
- Dashboard for ASP.NET Core - How to implement multi-tenant Dashboard architecture
- Dashboard for ASP.NET Core - How to load different data based on the current user
- Dashboard for ASP.NET Core - How to implement authentication
(you will be redirected to DevExpress.com to submit your response)