2016-07-16 20 views
3

Ich verwende Devise in meinem Rails 5-Projekt und möchte die Registrierung neuer Benutzer vorübergehend deaktivieren. Ich weiß, dass ich den Link der Ansicht entfernen oder die routes-Datei bearbeiten kann, um dies zu erreichen, aber das erfordert eine Änderung des Codes mit einer neuen Bereitstellung. Ich möchte eine Option in meiner Administrationskonsole hinzufügen, um die Registrierung neuer Benutzer für einen bestimmten Zeitraum zu deaktivieren.Temporäre Deaktivierung von Registrierungen in Devise

Ich habe diese Funktionalität aktiviert, aber es ist eine hacky Arbeit herum. Wenn ich die Registrierung von Personen deaktiviere, wird nur der Link "Neue Benutzerregistrierung" in der Geräteansicht ausgeblendet. Jeder, der die Standardpfade kennt, kann dies umgehen.

Wie kann ich diese Funktionalität zur Laufzeit ändern?

Antwort

4

Folgen This Link zum Überschreiben der Registrierungs-Controller für Devise. Im Grunde müssen Sie Devise Standard-Registrierungs-Controller überschreiben und einen Vorher-Filter für new & create Aktion, die überprüft, ob Admin ermöglicht neue Benutzer zu erstellen, wenn nicht dann umleiten auf root_path oder was auch immer Pfad Sie wollen.

Alter der devise_for Zeile in config/routes.rb die Registrierungscontroller außer Kraft zu setzen:

devise_for :users, controllers: { registrations: "registrations"} 

app/controllers/registrations_controller.rb:

class RegistrationsController < Devise::RegistrationsController 

    before_action :check_new_registration_allowed?, only: [:new, :create] 

    protected 

    def check_new_registration_allowed? 
    redirect_to root_path unless @@allow_new_registration 
    end 

end 

Bitte zu beachten, dass ich @@allow_new_registration verwendet global Variable, um zu prüfen, ob eine neue Registrierung erlaubt ist. Sie können dies nach einer Admin-Aktion ein-/ausschalten. Alternativ wäre es gut, wenn Sie diese Informationen in der DB speichern und abfragen.

+0

Upvoted & markiert als Antwort. Danke für das Senden - sehr hilfreich! – dingalingchickenwiing

Verwandte Themen