in src/main/java/org/apache/directory/fortress/web/panel/PermDetailPanel.java [121:443]
public PermDetailForm( String id, final IModel<Permission> model )
{
super( id, model );
add( addPB = new SecureIndicatingAjaxButton( GlobalIds.ADD, GlobalIds.ADMIN_MGR, "addPermission" )
{
/** Default serialVersionUID */
private static final long serialVersionUID = 1L;
@Override
protected void onSubmit( AjaxRequestTarget target )
{
LOG.debug( ".onSubmit Add" );
Permission perm = ( Permission ) getForm().getModel().getObject();
perm.setAdmin( isAdmin );
updateEntityWithComboData( perm );
try
{
adminMgr.addPermission( perm );
roles.add( rolesSelection );
rolesSelection = "";
component = editForm;
SaveModelEvent.send( getPage(), this, perm, target, SaveModelEvent.Operations.ADD );
String msg = "Perm objName: " + perm.getObjName() + " opName: " + perm.getOpName()
+ " has been added";
display.setMessage( msg );
}
catch ( org.apache.directory.fortress.core.SecurityException se )
{
String error = ".onSubmit caught SecurityException=" + se;
LOG.error( error );
display.setMessage( error );
display.display();
}
}
@Override
public void onError( AjaxRequestTarget target )
{
LOG.info( "PermDetailPanel.add.onError caught" );
target.add();
}
@Override
protected void updateAjaxAttributes( AjaxRequestAttributes attributes )
{
super.updateAjaxAttributes( attributes );
AjaxCallListener ajaxCallListener = new AjaxCallListener()
{
/** Default serialVersionUID */
private static final long serialVersionUID = 1L;
@Override
public CharSequence getFailureHandler( Component component )
{
return GlobalIds.WINDOW_LOCATION_REPLACE_COMMANDER_HOME_HTML;
}
};
attributes.getAjaxCallListeners().add( ajaxCallListener );
}
} );
add( new SecureIndicatingAjaxButton( GlobalIds.COMMIT, GlobalIds.ADMIN_MGR, "updatePermission" )
{
/** Default serialVersionUID */
private static final long serialVersionUID = 1L;
@Override
protected void onSubmit( AjaxRequestTarget target )
{
LOG.debug( ".onSubmit Commit" );
Permission perm = ( Permission ) getForm().getModel().getObject();
perm.setAdmin( isAdmin );
updateEntityWithComboData( perm );
try
{
if ( isAdmin )
{
if ( StringUtils.isNotEmpty( rolesSelection ) )
{
delAdminMgr.grantPermission( perm, new AdminRole( rolesSelection ) );
}
else
{
delAdminMgr.updatePermission( perm );
}
}
else
{
adminMgr.updatePermission( perm );
}
roles.add( rolesSelection );
String msg = "Perm objName: " + perm.getObjName() + " opName: " + perm.getOpName()
+ " has been updated";
SaveModelEvent.send( getPage(), this, perm, target, SaveModelEvent.Operations.UPDATE );
rolesSelection = "";
component = editForm;
display.setMessage( msg );
}
catch ( org.apache.directory.fortress.core.SecurityException se )
{
String error = ".onSubmit caught SecurityException=" + se;
LOG.error( error );
display.setMessage( error );
display.display();
}
}
@Override
public void onError( AjaxRequestTarget target )
{
LOG.warn( "PermDetailPanel.commit.onError" );
}
@Override
protected void updateAjaxAttributes( AjaxRequestAttributes attributes )
{
super.updateAjaxAttributes( attributes );
AjaxCallListener ajaxCallListener = new AjaxCallListener()
{
/** Default serialVersionUID */
private static final long serialVersionUID = 1L;
@Override
public CharSequence getFailureHandler( Component component )
{
return GlobalIds.WINDOW_LOCATION_REPLACE_COMMANDER_HOME_HTML;
}
};
attributes.getAjaxCallListeners().add( ajaxCallListener );
}
} );
add( new SecureIndicatingAjaxButton( GlobalIds.DELETE, GlobalIds.ADMIN_MGR, "deletePermission" )
{
/** Default serialVersionUID */
private static final long serialVersionUID = 1L;
@Override
protected void onSubmit( AjaxRequestTarget target )
{
LOG.debug( ".onSubmit Delete" );
Permission perm = ( Permission ) getForm().getModel().getObject();
perm.setAdmin( isAdmin );
try
{
adminMgr.deletePermission( perm );
clearDetailFields();
String msg = "Perm objName: " + perm.getObjName() + " opName: " + perm.getOpName()
+ " has been deleted";
SaveModelEvent.send( getPage(), this, perm, target, SaveModelEvent.Operations.DELETE );
component = editForm;
display.setMessage( msg );
}
catch ( org.apache.directory.fortress.core.SecurityException se )
{
String error = ".onSubmit caught SecurityException=" + se;
LOG.error( error );
display.setMessage( error );
display.display();
}
}
@Override
public void onError( AjaxRequestTarget target )
{
LOG.warn( "ControlPanel.delete.onError" );
}
@Override
protected void updateAjaxAttributes( AjaxRequestAttributes attributes )
{
super.updateAjaxAttributes( attributes );
AjaxCallListener ajaxCallListener = new AjaxCallListener()
{
/** Default serialVersionUID */
private static final long serialVersionUID = 1L;
@Override
public CharSequence getFailureHandler( Component component )
{
return GlobalIds.WINDOW_LOCATION_REPLACE_COMMANDER_HOME_HTML;
}
};
attributes.getAjaxCallListeners().add( ajaxCallListener );
}
} );
add( new AjaxSubmitLink( GlobalIds.CANCEL )
{
/** Default serialVersionUID */
private static final long serialVersionUID = 1L;
@Override
protected void onSubmit( AjaxRequestTarget target )
{
clearDetailFields();
String msg = "Perm cancelled input form";
component = editForm;
display.setMessage( msg );
}
@Override
public void onError( AjaxRequestTarget target )
{
LOG.warn( "ControlPanel.cancel.onError" );
}
@Override
protected void updateAjaxAttributes( AjaxRequestAttributes attributes )
{
super.updateAjaxAttributes( attributes );
AjaxCallListener ajaxCallListener = new AjaxCallListener()
{
/** Default serialVersionUID */
private static final long serialVersionUID = 1L;
@Override
public CharSequence getFailureHandler( Component component )
{
return GlobalIds.WINDOW_LOCATION_REPLACE_COMMANDER_HOME_HTML;
}
};
attributes.getAjaxCallListeners().add( ajaxCallListener );
}
} );
objectTF = new TextField( GlobalIds.OBJ_NAME );
// making this required prevents the object modal from opening when field empty:
//objectTF.setRequired( true );
objectTF.setOutputMarkupId( true );
add( objectTF );
addObjectSearchModal();
if ( isAdmin )
{
add( new Label( "permDetailLabel", "Administrative Permission Operation Detail" ) );
}
else
{
add( new Label( "permDetailLabel", "RBAC Permission Operation Detail" ) );
}
opNameTF = new TextField( GlobalIds.OP_NAME );
add( opNameTF );
opNameTF.setRequired( false );
objIdTF = new TextField( GlobalIds.OBJECT_ID );
add( objIdTF );
TextField description = new TextField( GlobalIds.DESCRIPTION );
add( description );
Label internalId = new Label( "internalId" );
add( internalId );
rolesCB = new ComboBox<>( "roles", new PropertyModel<String>( this, ROLES_SELECTION ), roles );
add( rolesCB );
setOutputMarkupId( true );
addRoleSearchModal();
add( new AjaxButton( "roles.delete" )
{
private static final long serialVersionUID = 1L;
@Override
protected void onSubmit( AjaxRequestTarget target )
{
String msg = "clicked on roles.delete";
if ( StringUtils.isNotEmpty( rolesSelection ) )
{
msg += " selection:" + rolesSelection;
Permission perm = ( Permission ) getForm().getModel().getObject();
if ( perm.getRoles() != null )
{
perm.getRoles().remove( rolesSelection );
roles.remove( rolesSelection );
rolesSelection = "";
component = editForm;
msg += ", was removed from local, commit to persist changes on server";
}
else
{
msg += ", no action taken because permission does not have role set";
}
}
else
{
msg += ", no action taken because role selection is empty";
}
display.setMessage( msg );
LOG.debug( msg );
}
@Override
protected void updateAjaxAttributes( AjaxRequestAttributes attributes )
{
super.updateAjaxAttributes( attributes );
AjaxCallListener ajaxCallListener = new AjaxCallListener()
{
/** Default serialVersionUID */
private static final long serialVersionUID = 1L;
@Override
public CharSequence getFailureHandler( Component component )
{
return GlobalIds.WINDOW_LOCATION_REPLACE_COMMANDER_HOME_HTML;
}
};
attributes.getAjaxCallListeners().add( ajaxCallListener );
}
} );
}