How do I make signup page available only for logged in staff users in Django allauth?

Actually, you can’t prevent a superuser from doing anything when using the default permissions system. See django.contrib.auth | Django documentation | Django and Using the Django authentication system | Django documentation | Django

Otherwise, for all the functionality you wish to implement, see Admin actions | Django documentation | Django along with all the ModelAdmin methods and the Admin site methods available for you to override.

As another note, your user_is_admin function is meaningless. If a person is not authenticated, their session is assigned to the AnonymousUser, which by definition is not staff.

Edit: Additionally, your signup.html template is expecting to render a form. You are not creating a form in your view, nor are you passing the instance of the form to the template through the context. You may want to review Working with forms | Django documentation | Django