Devise: disabling sign up
Samstag, 02. Juli 2011, 12:49 Uhr | roberto@vasquez-angel.de |Sometimes you’ll need to disable sign up for new users (in this examples “admins”) for a site. Here is the recipe.
Disable the sign up routes
In our Rails.root/config/routes.rb
:
devise_for :admins, :skip => :registrations
Remove the sign-up link from the sign-in form
Create Rails.root/app/views/devise/shared/_link.html.erb
:
<%- if controller_name != 'sessions' %> <%= link_to "Sign in", new_session_path(resource_name) %>
<% end -%> <%- if devise_mapping.recoverable? && controller_name != 'passwords' %> <%= link_to "Forgot your password?", new_password_path(resource_name) %>
<% end -%> <%- if devise_mapping.confirmable? && controller_name != 'confirmations' %> <%= link_to "Didn't receive confirmation instructions?", new_confirmation_path(resource_name) %>
<% end -%> <%- if devise_mapping.lockable? && resource_class.unlock_strategy_enabled?(:email) && controller_name != 'unlocks' %> <%= link_to "Didn't receive unlock instructions?", new_unlock_path(resource_name) %>
<% end -%> <%- if devise_mapping.omniauthable? %> <%- resource_class.omniauth_providers.each do |provider| %> <%= link_to "Sign in with #{provider.to_s.titleize}", omniauth_authorize_path(resource_name, provider) %>
<% end -%> <% end -%>
In particular, we removed following code from the default template:
<%- if devise_mapping.registerable? && controller_name != 'registrations' %> <%= link_to "Sign up", new_registration_path(resource_name) %>
<% end -%>