in src/main/java/org/apache/directory/fortress/web/control/SecUtils.java [269:319]
public static boolean addActiveRole( Component component, AjaxRequestTarget target, AccessMgr accessMgr, String roleName )
{
boolean isSuccessful = false;
try
{
WicketSession session = ( WicketSession ) component.getSession();
session.getSession().setWarnings( null );
accessMgr.addActiveRole( session.getSession(), new UserRole( roleName ) );
List<Warning> warnings = session.getSession().getWarnings();
if ( CollectionUtils.isNotEmpty( warnings ) )
{
for ( Warning warning : warnings )
{
LOG.info( "Warning: " + warning.getMsg() + " errCode: " + warning.getId() + " name: " + warning
.getName() + " type: " + warning.getType().toString() );
if ( warning.getType() == Warning.Type.ROLE && warning.getName().equalsIgnoreCase( roleName ) )
{
String error = warning.getMsg() + " code: " + warning.getId();
LOG.error( error );
target.appendJavaScript( ";alert('" + error + "');" );
return false;
}
}
}
// User's active role set changed so refresh their permissions:
SecUtils.getPermissions( component, accessMgr );
isSuccessful = true;
String message = "Activate role name: " + roleName + " successful";
LOG.info( message );
}
catch ( org.apache.directory.fortress.core.SecurityException se )
{
String msg = "Role selection " + roleName + " activation failed because of ";
if ( se.getErrorId() == GlobalErrIds.DSD_VALIDATION_FAILED )
{
msg += "Dynamic SoD rule violation";
}
else if ( se.getErrorId() == GlobalErrIds.URLE_ALREADY_ACTIVE )
{
msg += "Role already active in Session";
}
else
{
msg += "System error: " + se + ", " + "errId=" + se.getErrorId();
}
LOG.error( msg );
target.appendJavaScript( ";alert('" + msg + "');" );
}
return isSuccessful;
}