Is creating methods such as isUserAdmin() bad practice?
It is, though it isn't so much that this method is bad practice, but rather using a parent class as a dumping ground for methods you want to share with the child objects but that don't have any particular relationship to each other in terms of behaviour is a bad idea.
If the method was a core functionality of all controllers then putting it into the parent class is a good idea. But if it is just a utility method that some controllers might use, then the parent class is not the place for it.
You don't want your parent filling up with methods that the children might or might not need depending on what they do. One set of child classes might use this isUserAdmin method but many might not.
Keep the controller class small and containing specific methods that all controllers will use. If you have behaviour that some controllers might use then for this use composition rather than inheritance. Inheritance is only for behaviour that all children share.
If you have some controllers that need to look up if the user is an admin, and you don't want to re-implement this code in each object (which you are correct to not want to do), create an object that contains this behaviour that you can give to the controllers when they are created.