Secure your server/servlets first and UI second. Make sure all
incoming calls to the server tier deny unauthorized users access to
execute administrative operations. When you do this you don't have to
worry if the user attempts an admin activity in the UI because they
will be denied in the server tier.
For the UI, let it all be downloaded to the client and filter the
controls at runtime. When a user logs in to your app query the server
for their authorized privileges. This authorization information can
be used to hide/customize the UI associated with the server side
operations they are not authorize and authorized to perform.
Craig
// perform RPC call as usual and return
throw UserNotAdminException("blah");