Entfernen / Deaktivieren der Registrierung von Devise

7

Ich versuche, den "user / sign_up" Pfad von Devise zu entfernen / deaktivieren. Ich mache das, weil ich nicht will, dass zufällige Leute Zugriff auf die Anwendung bekommen. Ich habe es teilweise funktionierend, indem ich Folgendes hinzufüge routes.rb

%Vor%

Dies bricht jedoch <%= link_to "Profile", edit_user_registration_path, class: "btn btn-info btn-flat" %>

, die ich behalten möchte, damit Benutzer ihr Profil aktualisieren können. Ich weiß, dass es wegen devise_for :users, :skip => :registration

ist

Gibt es eine Lösung für dieses Problem?

Ausführen

Devise (4.2.0, 4.1.1, 4.1.0)

Schienen 4.2.5

ruby ​​2.3.0p0 (2015-12-25 Revision 53290) [x86_64-linux]

    
M.T Davis 29.09.2016, 15:05
quelle

5 Antworten

18

Der einfachste Weg besteht darin, das Modul "registrierbar" aus der in Ihrem Modell definierten Standardliste zu entfernen (der Klassenname, der für die Benutzer der Anwendung verwendet wird, normalerweise Benutzer ).

%Vor%

Sie werden es also so haben:

%Vor%     
jcgil 11.06.2017 23:08
quelle
8

Lösung zum Entfernen des sign_up-Pfads von Devise

Geben Sie am Anfang von routes.rb

Folgendes ein %Vor%

... Fügen Sie nach der obigen Aussage das Folgende in routes.rb

hinzu %Vor%

Dadurch wird der Pfad user/sign_up für Devise entfernt / deaktiviert, ohne dass edit_user_registration_path

unterbrochen wird

Starten Sie Ihren Rails Server neu und es sollte funktionieren.

    
M.T Davis 29.09.2016 21:14
quelle
2

Seit als ist nur ein Alias Für devise_scope können Sie alles in nur einem Block ablegen.

%Vor%     
Tomislav Mikulin 06.02.2017 17:46
quelle
1

Ich hatte gerade das gleiche Problem. Meine Lösung ist eine Mischung aus diesen Antworten:

Erster Kommentar / Entfernen Sie die :registerable auf user.rb

class User < ActiveRecord::Base devise :database_authenticatable, #:registerable, :recoverable, :rememberable, :trackable, :validatable end Entfernen Sie zweitens die Registrierungspfade von devise in routes.rb

devise_for :users, :skip => [:registrations] , controllers: { sessions: 'users/sessions' }

Jetzt werden alle Registrierungslinks aus ihrer Ansicht übersprungen und Sie haben nicht mehr die Registrierungspfade auf Ihren Routen.

    
David Roth 07.12.2017 05:21
quelle
0

Der folgende Code scheint den Trick für mich zu tun:

%Vor%     
Amir Rajak 01.04.2018 08:23
quelle

Tags und Links