#adminの新規登録を防ぐ
単純にadminの設定をしたままだと、
routesを見てもわかる通り、adminの新規会員登録ができてしまいます。
つまり、管理権限を持たない一般ユーザーでも管理者アカウントを作成できてしまいます。
セキュリティーとして問題大です。
解決方法としては、下記を実施。
#解決方法
方法は、至って簡単です。
adminモデルファイルから:resisterableを削除
models/admin
:registerable, => #削除しましょう。
下記が、削除後の記述になります。
models/admin
class Admin < ApplicationRecord
# Include default devise modules. Others available are:
# :confirmable, :lockable, :timeoutable, :trackable and :omniauthable
devise :database_authenticatable,:recoverable, :rememberable, :validatable
end
#結果
ルーティングからregitrationが消えたと思います。
terminal
Prefix Verb URI Pattern Controller#Action
new_admin_session GET /admin/sign_in(.:format) admin/sessions#new
admin_session POST /admin/sign_in(.:format) admin/sessions#create
destroy_admin_session DELETE /admin/sign_out(.:format) admin/sessions#destroy
new_admin_password GET /admin/password/new(.:format) admin/passwords#new
edit_admin_password GET /admin/password/edit(.:format) admin/passwords#edit
admin_password PATCH /admin/password(.:format) admin/passwords#update
PUT /admin/password(.:format) admin/passwords#update
POST /admin/password(.:format) admin/passwords#create
あとは、routesからもregitrationsを消しておきましょう。
特に影響はないと思いますが、不要な記述は削除しておくべきかと思います。
routes
registrations: 'admin/registrations' => #削除しましょう。
下記が、削除後のルーティングになります。
routes
Rails.application.routes.draw do
devise_for :admin, controllers: {
sessions: 'admin/sessions',
passwords: 'admin/passwords',
}
以上、たにーでした。
#参考文献