Customizable Dashboards

Is it possible to create a collection of panels (or widgets) that users can select from to then build a dashboard that meets their individual needs? It would need to be persistent across sessions and not allow them to edit anything other than what appears on their own personal dashboard.