<?xml version="1.0" encoding="utf-8"?>
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml"
width="100%" height="100%"
creationComplete="init()"
layout="vertical" xmlns:local="*" horizontalAlign="left" viewSourceURL="srcview/index.html" xmlns:policyHandlers="security.policyHandlers.*">
<mx:Script>
<![CDATA[
import security.policies.AllwaysAppliedPolicy;
import security.policies.AdminWidgetAccessPolicy;
import security.User;
[Bindable]
private var currentUser:User;
private var userA:User;
private var userB:User;
private function init():void {
userB = new User();
userB.username = "User B";
userB.role = "user";
userA = new User();
userA.username = "User A";
userA.role = "administrator";
currentUser = userA;
}
/**
* Callback function for the policy handler.
* Applies the policy to correct components making them invisble.
**/
public function applyToTargets(b:Boolean):void {
soDashboard.visible = soDashboard.includeInLayout = b;
}
]]>
</mx:Script>
<mx:Label text="Current user: {currentUser.username}, role: {currentUser.role}" />
<mx:Button click="{currentUser=(currentUser == userA)?userB:userA}" label="Switch User" />
<policyHandlers:PolicyHandlerImpl id="handler"
policies="{[AdminWidgetAccessPolicy]}"
criteria="{currentUser}"
callback="{applyToTargets}"
/>
<policyHandlers:PolicyHandlerImpl id="handlerDefaultDashboard"
policies="{[AllwaysAppliedPolicy]}"
criteria="{currentUser}"
callback="{function(b:Boolean):void{someOtherDashboard.includeInLayout = someOtherDashboard.visible = b;}}"
/>
<local:ApplicationDashboard id="soDashboard"/>
<local:DefaultDashboard id="someOtherDashboard"/>
</mx:Application>