2010-04-25 18 views
44

Ok, jestem prawdopodobnie będzie czuć się całkiem głupi, gdy ktoś odpowiada na to jeden z prostą rzeczą, że tęsknię ... ale tu idzie:Tworzenie użytkownika admin w opracować on Rails beta 3

I Mam nową aplikację na Rails 3 beta i używam narzędzia Devise do uwierzytelniania. Uruchomiłem wszystkie komentarze i wszystko działa idealnie w tej chwili. Utworzyłem rolę użytkownika i rolę administratora (postępując zgodnie z tymi instrukcjami: https://github.com/plataformatec/devise/wiki/How-To:-Add-an-Admin-Role) i zarejestrowałem się jako pierwszy użytkownik, ale jak mogę się zarejestrować lub utworzyć użytkownika roli administratora? Wskazówki od deweloperów określają rolę administratora, aby nie podlegały rejestracji, ale nie jestem pewien, jak powinieneś stworzyć administratora, jeśli nie możesz się zarejestrować ?!

Każda pomoc zostanie doceniona! Dzięki!

Odpowiedz

91

Tak. Czuję się głupio.

Jeśli ktokolwiek inny ma podobnie niezdecydowany moment. Po prostu użyj konsoli rails, aby utworzyć użytkownika admin:

➡ rails c 
Loading development environment (Rails 3.0.0.beta3) 
irb(main):001:0> admin = Admin.create! do |u| 
irb(main):002:1* u.email = '[email protected]' 
irb(main):003:1> u.password = 'password' 
irb(main):004:1> u.password_confirmation = 'password' 
irb(main):005:1> end 

To wystarczy. Teraz po prostu wejdź na ścieżkę logowania administratora i zaloguj się.

+23

Głosowanie w górę nie odnosiło się do pierwszego zdania odpowiedzi. – lbz

+3

W rzeczywistości, ile witryny rails jest rzeczywiście zarządzane za pomocą konsoli szyn? Wiesz, te drobne sprawy, pole flag tu i tam? –

+0

Prawdopodobnie przerażającą kwotą zarządza konsola. Wiem, że używam go cały czas. Ale myślę, że powinniśmy podziękować @dhh za stworzenie takiego świetnego sposobu na dostęp do naszych aplikacji Railsowych. – erskingardner

0

try dołączanie/sign_in na swojej drodze administracyjnej, niezależnie ustawić go ... moja jest

http://yoursite.com/admin/sign_in?unauthenticated=true

+0

oops prawdopodobnie nie używałeś: autentyczny. Wypróbuj tę stronę, aby uzyskać pomoc w przesłoniu widoków admina: http://wiki.github.com/fortuity/subdomain-authentication/tutorial-walkthrough – kinet

+0

Nie, nie użyłem: authentatable podczas konfigurowania modelu admina z devise, jak Powiedziałem, że używałem samouczka, który divise ma na swojej stronie github. Wolałbym nie używać subdomen, jeśli mogę pomóc ... – erskingardner

3

@Steśnij Masz rację. Używanie flagi administratora w modelu użytkownika jest dopuszczalne i nadal może współistnieć z wieloma opcjami autoryzacji. Spójrz na klasy umiejętności w CanCan docs na przykład jak to może wyglądać:

def initialize(user) 
    if user.admin? 
    can :manage, :all 
    else 
    can :read, :all 
    end 
end 

Posiadanie wielu modeli zezwolenia może być przydatny, jeśli funkcjonalność jest naprawdę inaczej lub jeśli warunki zezwolenia, takie jak dodawanie poddomena do authkeys, jest inna.

Innym podejściem jest dodanie relacji ról HABTM do użytkownika. Oto ładny samouczek Tony Amoyal: http://www.tonyamoyal.com/2010/07/28/rails-authentication-with-devise-and-cancan-customizing-devise-controllers/

5

Może to nie dotyczyć Devise (ale wierzę, że tak będzie), ale ogólnie, jeśli chcesz zasiać administratora, ale nie chcesz przechowywać hasła administratora w kontroli źródła, można zrobić coś takiego ...

@user = User.find_by_email("[email protected]") 

unless @user 
    # We are going to bypass both our assignment protection and validation 
    # so we aren't storing the password in source control. 
    # 
    # This doesn't replace the need to change the password occasionaly, both 
    # on the site and in source control. 
    @user = User.create do |u| 
    u.name = "Admin User" 
    u.email = "[email protected]" 
    u.password_digest = "$2a$10$DUv/IUiLB34jhi3j4Z8MwwcaDlBmFe3rvcdXSzPKLzBOAMmD53UqW" 
    end 

    @user.save(:validate => false) 

    # TODO make the user an admin 
end 

można utworzyć użytkownika lokalnie z hasłem chcesz znaleźć password_digest.

+0

nie wymyślić użyć md5 do strawienia hasła? – fatman13

13

Co naprawdę próbujesz zrobić, to utworzyć dane źródłowe. bardziej standardowy sposób to zrobić byłoby dodać użytkowników nasion (i role, jeśli ich przechowywania) do db/seeds.rb

Dla exmaple w dB/seeds.rb:

roles = Role.create([{name: 'super_admin'}, {name: 'staff'}, {name:'customer'}]) 
users = User.create([{email: '[email protected]', first_name: 'super', last_name: 'admin', password: '@dmin123', password_confirmation: '@dmin123', role: roles[0]}]) 

Następnie uruchom:

rake db:seed 
+1

To jest właściwy sposób, aby to zrobić. – 0112

0

jest wygodny sposób wypełniania tabel - db/seed.rb plików.Wystarczy dodać skrypt do tworzenia użytkowników w nim i bieg:

rake db:seed 

Poniżej można zobaczyć przykład User modelu z email i username dziedzinach:

# Inserting default security users 
users = { 

    admin: { 

     username: 'admin', 
     email: '[email protected]', 
     password: 'adminpass', 
     password_confirmation: 'adminpass', 
     is_admin: true 
    }, 

    administrator: { 

     username: 'administrator', 
     email: '[email protected]', 
     password: 'administrator', 
     password_confirmation: 'administrator', 
     is_admin: true 
    } 
} 

users.each do |user, data| 

    user = User.new(data) 

    unless User.where(email: user.email).exists? 
    user.save! 
    end 
end 

Uwaga, które opracowują validations stosowane są tutaj.

Here można znaleźć więcej przykładów korzystania z pliku seed.rb i here jest obsada szyny rayn.

Powiązane problemy