The status 500 exception you are seeing could well be caused by your getSignerDB() method, or a null value being returned from this call. You should wrap your code in a try/catch block and allow a safe return of false under an error condition.
Assuming you are using the XLib, you should consider using the userBean instance to establish the presence of a role:
ie: the userBean instance publishes the accessRoles property.
therefore you could simply calculate as follows for example:
return userBean.accessRoles.toString().contains("[Admin]");
This will perform better as it is retrieved from the session based userBean instance, and should also avoid any unstability exposed by your original implementation.
Hopefully this helps, as I'm not totaly convinced its a pure Tab Panel issue you are experiencing.