LoginSignup
0
0

More than 3 years have passed since last update.

ユーザーに管理者アカウントの新規登録をさせない方法

Last updated at Posted at 2021-03-29

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',
  }

以上、たにーでした。

参考文献

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0