Here is my take:
1) roles should define an action that can be peformed, example: CREATEACCOUNT,
ADDACCOUNT, SEARCHACCOUNT, etc... If you want to group users, do that from an
administration point of view, the application itself should know only about the
individual roles. This provides the greatest flexibility. (we do J2EE here as
well)
2) Your AS User class, should have a method called hasRole() or isUserInRole(),
use this to bind to your various UI components to either show or hide them,
example:
<mx:Button label="Save"
visible="{user.hasRole( Constants.SAVEACCOUNT )}"
includeInLayout="{user.hasRole( Constants.SAVEACCOUNT )}"/>
Dimitrios Gianninas
RIA Developer and Team Lead
Optimal Payments Inc.
________________________________
From: [email protected] [mailto:[EMAIL PROTECTED] On Behalf Of
cool.king08
Sent: Sunday, January 27, 2008 12:04 PM
To: [email protected]
Subject: [flexcoders] Role based rendoring of MXML components - visibility and
editability
Hi
I need some help regarding role based access control mechanism at the view
level i.e on flex components.
My requirement is simple - I have flex page which has many controls like
buttons, combox, textinput etc. The users who access the page are grouped by
roles. I want limit access to components in the page. For example the 'Save'
button should be VISIBLE to a user with role 'ADMIN'. Another use case is a
combobox components should only be EDITABLE by a user with role 'ADMIN or
SUPER'. This could be more advanced; for example instead of controlling just
one component, we could control a block of MXML code like:
<custom:Authorize visible="ADMIN|SUPER" editable="SOMEUSER">
<mx:Button name="Save" />
<mx:Combobox name="Users" />
</custom:Authorize>
(ofcourse visible attribute takes priority over editable attribute). Again the
features of such a robust view layer security can be limitless. For example the
above code just shows UI Controls. It could have a mix of layout components,
custom UI components, and UI Controls. It could also support wildcards like |
(or), & (and), !(not). This is a common requirement in intranet applications
where there are many different types of business users demarcated by roles.
This type of components also reduces code duplication. For example a flex page
can be shown in VIEW_ONLY mode as well as EDIT mode based on the user role
instead of writing two different flex pages.
My mid tier has J2EE with spring + acegi. Acegi has a cool JSP tag library
<authz:authorize>which does a similar thing -
<authz:authorize ifAllGranted="ROLE_VIP, ROLE_GUEST">
Welcome USER
<a href="...">Logoff</a>
</authz:authorize>
I know flex doesnt have any such out-of-the-box component/functionality. Is
there anything out there which does something similar? I have some ideas of how
this can be implemented but if you can give some ideas it will always help.
Thanks
--
WARNING
-------
This electronic message and its attachments may contain confidential,
proprietary or legally privileged information, which is solely for the use of
the intended recipient. No privilege or other rights are waived by any
unintended transmission or unauthorized retransmission of this message. If you
are not the intended recipient of this message, or if you have received it in
error, you should immediately stop reading this message and delete it and all
attachments from your system. The reading, distribution, copying or other use
of this message or its attachments by unintended recipients is unauthorized and
may be unlawful. If you have received this e-mail in error, please notify the
sender.
AVIS IMPORTANT
--------------
Ce message électronique et ses pièces jointes peuvent contenir des
renseignements confidentiels, exclusifs ou légalement privilégiés destinés au
seul usage du destinataire visé. L'expéditeur original ne renonce à aucun
privilège ou à aucun autre droit si le présent message a été transmis
involontairement ou s'il est retransmis sans son autorisation. Si vous n'êtes
pas le destinataire visé du présent message ou si vous l'avez reçu par erreur,
veuillez cesser immédiatement de le lire et le supprimer, ainsi que toutes ses
pièces jointes, de votre système. La lecture, la distribution, la copie ou
tout autre usage du présent message ou de ses pièces jointes par des personnes
autres que le destinataire visé ne sont pas autorisés et pourraient être
illégaux. Si vous avez reçu ce courrier électronique par erreur, veuillez en
aviser l'expéditeur.