I would question your logic here - using a different url is simply security by obscurity. Even if you had your users login with /gobeligook its pretty trivial for any dedicated attacker to figure that out by sniffing traffic for example.
However you might want to change the path for various reasons - but don't fool yourself that you are adding any real security benefits by doing so.
Also you need to separate the concerns of authentication - which what Devise does and authorization. Authentication is verifying that the users is who he/she claims to be. Authorization is who gets to do what.
If you want to lock down your site to users that are vetted that is a authorization concern and there are a few ways to solve it based on your requirements:
Disable signups
The most basic way to do this would be to disable signups and only allow users to be created by admins. Its relatively secure but really tedious for admins and pretty draconian. In this case your authentication would simply be to lock down everything save for the sign in unless the user is authenticated.
Thats where before_action :authenticate_user! comes in.
Invitation only
You can use something like the DeviseInvitable module to invite users by email and then override the sign up method to require an invitation token.
Walled garden approach
What you may want is users to be able to sign up - but they are really only allowed to access anything when they have been vetted by an admin or a peer.
This is a basic sketch of how something like this could be setup:
class Approval
belongs_to :user,
belongs_to :vetting_user, class_name: 'User'
end
class User
# ...
has_many :approvals, dependent: :destroy
has_many :granted_approvals,
class_name: 'Approval',
source: :vetting_user,
dependent: :destroy
def approved?
approvals.any?
end
end
class ApplicationController
before_action :authenticate_user!
before_action :authorize_user!, unless: :devise_controller?
def authorize_user!
redirect_to user_signup_path, unless current_user.approved?
end
end
For breivity this does not include stuff like the controller where peers or admins vet users - but thats the simple part.
Although I would seriously consider using a purpose built authentication library like Pundit instead of rolling your own.