2010-04-25 9 views
44

Ok, я, вероятно, будет чувствовать себя довольно глупыми, когда кто-то отвечает на этот с простой вещи, что я не хватает, но ... здесь идет:Создание пользователя с правами администратора в Devise на Rails 3 бета

I У меня есть новое приложение на бета-версии rails 3, и я использую программу для аутентификации. Я запустил все комментарии, и на данный момент все работает отлично. Я создал роль пользователя и роль администратора (следуя этим инструкциям: https://github.com/plataformatec/devise/wiki/How-To:-Add-an-Admin-Role), и я зарегистрировался как первый пользователь, но как зарегистрировать или создать пользователя роли администратора? Направляющие из созданных ребят настраивают роль администратора, чтобы не регистрироваться, но я не уверен, как вы должны создавать администратора, если вы не можете зарегистрироваться ?!

Любая помощь будет оценена! Благодаря!

ответ

91

Угу. Я чувствую себя глупым.

Если у кого-то еще такой же неистовый момент. Просто используйте консоль рельсов, чтобы создать пользователя 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 

Это сделают это. Теперь просто войдите в свой административный вход и войдите в систему.

+23

Проголосовать не было, ссылаясь на первое предложение вашего ответа. – lbz

+3

На самом деле, сколько сайтов на рельсах фактически управляется с помощью консоли rails? Вы знаете, эти мелкие вещи, флагом здесь и там? –

+0

Возможно, ужасная сумма управляется через консоль. Я знаю, что использую его все время. Но я думаю, мы должны поблагодарить @dhh за создание такого отличного способа доступа к нашим Rails-приложениям. – erskingardner

0

попробуйте добавить/sign_in в путь администратора, что вы установить его ... шахта

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

+0

Увы, вы, вероятно, не использовали: аутентичный. Попробуйте эту страницу для получения справки о переопределении просмотров admin: http://wiki.github.com/fortuity/subdomain-authentication/tutorial-walkthrough – kinet

+0

Нет, я не использовал: аутентифицируемый при настройке модели admin с использованием, например, Я сказал, я использовал учебник, который делится на их странице github. Я бы предпочел не использовать поддомены, если я могу помочь ... – erskingardner

3

@Stewart Вы правы. Использование флага администратора в пользовательской модели является приемлемым и может сосуществовать со многими параметрами авторизации. Посмотрите на класс Ability в канкан документации для примера того, как это может выглядеть:

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

Наличие нескольких моделей авторизации может быть полезным, если функциональность действительно отличается, или если требования к авторизации, такие как добавление субдомен к authkeys, отличается.

Другим подходом является добавление отношения роли HABTM к вашему пользователю. Вот хороший учебник от Tony Amoyal: http://www.tonyamoyal.com/2010/07/28/rails-authentication-with-devise-and-cancan-customizing-devise-controllers/

5

Это может не относиться к Devise (но я считаю, что это будет), но в общем случае, если вы хотите засеять пользователя admin, но не хотите хранить свой пароль администратора в системе управления версиями, вы можете сделать что-то вроде этого ...

@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 

вы можете создать пользователя локально с паролем, который вы хотите найти password_digest.

+0

действительно использует md5 для переваривания пароля? – fatman13

13

Что вы на самом деле пытаетесь сделать, это создать данные семян. Более стандартный способ сделать это было бы добавить пользователей семян (и роли, если вы храните их) в дБ/seeds.rb

Для exmaple в дб/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]}]) 

Затем запустите:

rake db:seed 
+1

Это правильный способ сделать это. – 0112

0

Существует удобный способ для заполнения таблиц - db/seed.rb файла.Просто добавьте скрипт для создания пользователей в нем и запустить:

rake db:seed 

Ниже вы можете увидеть пример User модели с email и username полей:

# 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 

Заметим, что изобрести применяются здесь валидация.

Here вы можете найти больше примеров использования файла seed.rb, а here - рельсы rayn.

 Смежные вопросы

  • Нет связанных вопросов^_^