[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [equinox-dev] Restrict access to view depending on a user profile
- From: Kimberly Horne <kim@xxxxxxxxxxxxx>
- Date: Tue, 26 Dec 2006 08:10:20 -0500
- Delivered-to: firstname.lastname@example.org
You have a couple of options in this case. All referenced examples
will be from my own private stash because it's Boxing Day and I'm too
lazy to look anything up. ;)
First off, the transformation work I did isn't really suited for this
problem. You're looking at altering the runtime dynamically while
it's engaged. The transformer stuff works primarily at startup.
While you could certainly write a transformer that supplied dynamic
content you would also have to have it tweak all places that use the
content for a refresh (providing they supported that at all). For
instance, you can transform the plug-in XMLs in your bundles but once
the extension registry has read them you'll need to run with -clean
to flush the extension cache - they wont reprocess the files if you
The first (and easiest) option is to define a set of activities to
filter components for you. See http://eclipse.pookzilla.net/2006/10/
context-capability-and-perspective.php for some details on how to
define the activities. Basically you'd hook up your user log in
(whatever that happens to be) to activate or deactivate activities as
appropriate. I threw together a simple example for Eclipsecon 2004
that shows how activities can be used in this way. Take a look at
activities/EclipseCon2005.KCH.AuthDemo/ for this.
The other option would be to partition your view contributions such
that the plug-ins that contain them can be loaded and unloaded when
users log in and out. With the above solution the views you're
trying to hide are still in the system - while no UI that we provide
will ever show them its still possible to activate them via API.
With this solution the plug-ins will really disappear. I have some
code that shows how to load and unload bundles dynamically located at
http://pookzilla.net/dynamic/dynamic.zip that should be able to help
you with this. Basically you'd need to establish a set of baseline
plug-ins that should be in the system prior to any user
authentication. When a user logs in you load all bundles associated
with them and when they log out you revert such that only the
baseline plug-ins are active. Extensions in the UI workbench plug-in
will respect dynamic loading and unloading by default - this includes
views, editors, actions, preference pages, etc. Any extension point
you write would have support dynamic loading and unloading as well -
a start point for this can be found at http://eclipse.pookzilla.net/
I hope that was helpful.
On Dec 25, 2006, at 5:27 PM, zouaoui anis wrote:
I'm trying to restrict access to some views on my RCP application
depending on user profile, users can have access to perspectives but
not to one view of the perspective.
I've tried with the ExtensionRegistry.removeExtension (...) method but
I found that with non master token I can just add/remove "non
persisted" extension from the ExtensionRegistry.
I sow that Eclipse 3.3 propose XSLT transformation on the OSGI Level
to filter the plugin.xml file, but it still in the incubator stage,
Is there any other "Eclipse compatible" way to restrict access to
my views ?
equinox-dev mailing list