同時做管理員工作,我想禁用用戶登錄 - 有沒有辦法使用這個設計 - 我不認爲這個 適合rolify - 因爲這是一個臨時的殘疾 - 在此先感謝您的幫助, 裏克禁用除了管理員在軌道上的紅寶石的所有登錄
回答
後端
如果你想要創建一個「維護」模式,您最好是這樣做:
#app/models/user.rb
class User < ActiveRecord::Base
end
#app/models/admin.rb
class Admin < User
def maintainance!
self.toggle! :maintainance
end
end
這將需要users
表中的maintenance
列,並且您還必須在users
表中添加type
列。
您可以在User
模型中保留這一點,但是,您需要一些條件來確定用戶是否爲管理員。既然你沒有說明你如何區分,以上是我們如何做到這一點。
-
你最好能夠調用它像這樣:
#app/controllers/users_controller.rb
class SettingsController < ApplicationController
before_action :authenticate_user!
def maintenance
current_user.maintenance! #-> toggles so you'll just be able to call this as you need.
end
end
#config/routes.rb
resources :settings, only: [] do
put :maintenance #-> url.com/settings/maintenance (considering current_user present)
end
這將允許您設置的「維護」模式,通過你的user
設置區域。如果你沒有,你可以使用上面的代碼來使它工作。
前端
有了後臺,你就可以再管理前端。
要做到這一點,你需要一個幫手來確定是否有用戶設置了「維護」模式......
#app/helpers/application_helper.rb
class ApplicationHelper
def maintenance_mode?
Admin.exists? maintenance: true
end
end
這將允許你使用這個幫手,以確定是否應該允許Devise
接受登錄與否:
#app/views/devise/sessions/new.html.erb
<% unless maintenance_mode? %>
... devise form ...
<% end %>
的助手將執行一個數據庫請求,但保持它在devise
地區只有(IE它不是「網站範圍」)應該可以。
#app/controllers/devise/sessions_controller.rb
class SessionsController < Devise::SessionsController
before_action :check_maintenance
private
def check_maintenance
redirect_to root_path, notice: "Sorry, maintenance mode is in effect; no logins." if maintenance_mode?
end
end
這將防止任何基於控制器的操作被觸發。
最後,如果你想擺脫任何登錄用戶,你需要做一些離奇,像復位會話或類似的東西:
謝謝!我會在星期一嘗試一下 - 我已經在用戶上創建了一個'admin'標誌來表明他們是否擁有管理員權限 - 這一切看起來都不錯。謝謝! – user2155272
這工作 - 我得到了一個循環依賴關係,雖然爲SessionsController
這裏就是我想要做的:
1.爲您的用戶模型的方法。它可能類似於active
或able_to_login
。
2.將此屬性設置爲:boolean
。
3.使用rails console
。使用控制檯激活的方法設置爲true
或false
,啓用或禁用用戶訪問你的應用程序:
user = User.all
user.each do |u|
u.active = false # or
u.able_to_login = false
u.save
end
我不認爲這是最好的方法,但應不安裝其他寶石工作或重碼。
我想保持管理員訪問權限 - 會這樣做嗎? – user2155272
,我可以添加另一個Gem--這是我想添加的功能,而不僅僅是一次性事件。謝謝! – user2155272
這是有幫助的,只是不是我正在尋找..但它給了我的想法。 – user2155272
在你/models/user.rb添加此方法
def active_for_authentication?
super && is_admin?
end
def is_admin?
# returns true if user is admin
end
這是這樣做的 「制定辦法」 :)
我不知道爲什麼人們建議把這個功能放在用戶對象上。我創建了一個維護對象 - 只能由管理員用戶編輯 - 在記錄檢查維護對象的存在性之前 - 如果存在則不允許。 – user2155272
- 1. 由管理員在軌道上的紅寶石管理用戶
- 2. 如何管理用戶在軌道上的紅寶石管理員
- 3. 紅寶石在軌道上的寶石
- 4. 軌道上的紅寶石(amistad寶石)
- 5. 除了在軌道上使用紅寶石的HTML
- 6. Facebook登錄紅寶石在鐵軌上
- 7. 在軌道上的紅寶石rhotoalbum
- 8. 在軌道上的紅寶石jquery
- 9. str_to_date在軌道上的紅寶石?
- 10. 在軌道上的紅寶石鏈接
- 11. Suburl在軌道上的紅寶石
- 12. 在軌道上的紅寶石Jquery Tablesorter
- 13. 在軌道上用紅寶石開始
- 14. 協會紅寶石在軌道上的所有模型
- 15. 我將如何destroy_all或delete_all記錄除了在軌道上的紅寶石?
- 16. 軌道上的紅寶石不能手動刪除記錄?
- 17. 有效的記錄紅寶石軌道上的錯誤
- 18. 軌道上的紅寶石3.1移動.swf到資產管道?
- 19. 禁用軌道上的紅寶石作業進行測試
- 20. 軌道上的紅寶石I18環
- 21. 軌道上的紅寶石has_many驗證
- 22. 軌道上的回形針紅寶石
- 23. 軌道上的紅寶石URL驗證
- 24. 軌道上的紅寶石check_box
- 25. 軌道上的紅寶石1.2.6和ActiveMerchant
- 26. 軌道上的紅寶石ActionMailer錯誤
- 27. cakephp或軌道上的紅寶石
- 28. 軌道上紅寶石的關聯
- 29. 幹軌道上的紅寶石環
- 30. redirect_to問題 - 軌道上的紅寶石
嗨裏克,你想保持訪問的管理員,或者你想簡單地禁用每個用戶? – smile2day
保留訪問管理員 - 我注意到投票寶石 - 但必須從命令行運行 - 希望像drupal維護模式的東西。 – user2155272