44 votes

Création d'un utilisateur administrateur dans Devise on Rails beta 3

Ok, je vais probablement sentir assez bête quand quelqu'un répond avec une simple chose qui me manque, mais... ici va:

J'ai une nouvelle application sur les rails de la version bêta 3 et je suis à l'aide de concevoir pour l'authentification. J'ai couru tous les commentaires et tout fonctionne parfaitement pour le moment. J'ai créé un rôle d'utilisateur et un rôle admin (en suivant ces instructions: https://github.com/plataformatec/devise/wiki/How-To:-Add-an-Admin-Role) et j'ai enregistré moi-même comme le premier utilisateur mais, comment dois-je m'inscrire ou créer un admin rôle de l'utilisateur? Les directions à partir de l'concevoir les gars de configuration de l'administrateur de rôle pour ne pas être enregistrables, mais je n'en suis pas sûr comment vous êtes censé créer de l'administrateur si vous ne pouvez pas vous inscrire?!

Toute aide serait appréciée! Merci!

92voto

erskingardner Points 1366

Ouaip. Je me sens stupide.

Si quelqu'un d'autre a un moment pareillement vaporeux. Il suffit d’utiliser la console rails pour créer l’utilisateur 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 = 'sample@sample.com'
irb(main):003:1> u.password = 'password'
irb(main):004:1> u.password_confirmation = 'password'
irb(main):005:1> end
 

Ça va le faire. Il suffit maintenant de visiter votre chemin de connexion administrateur et de vous connecter.

13voto

paneer_tikka Points 885

Ce que vous essayez réellement de faire est de créer des données de départ. Une méthode plus standard consiste à ajouter vos utilisateurs (ainsi que vos rôles, si vous les stockez) à la base de données à db / seeds.rb.

Par exemple, dans db / seeds.rb:

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

Puis lancez:

 rake db:seed
 

5voto

Lelon Points 725

Cela peut ne pas s'appliquer à Devise (mais je le crois bien), mais en général si vous voulez créer un compte administrateur mais ne voulez pas stocker votre mot de passe administrateur dans le contrôle de code source, vous pouvez faire quelque chose comme ça ...

 @user = User.find_by_email("admin@email.com")

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 = "admin@email.com"
    u.password_digest = "$2a$10$DUv/IUiLB34jhi3j4Z8MwwcaDlBmFe3rvcdXSzPKLzBOAMmD53UqW"
  end

  @user.save(:validate => false)

  # TODO make the user an admin
end
 

Vous pouvez créer l'utilisateur localement avec le mot de passe pour lequel vous voulez trouver le mot de passe password_digest.

3voto

genkilabs Points 1565

@Stewart, Vous avez raison. À l'aide d'un admin drapeau dans le modèle de l'utilisateur est acceptable et peut encore co-existent avec de nombreuses options d'autorisation. Jetez un oeil à la Capacité de la classe dans le french cancan docs pour un exemple de ce que cela peut donner:

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

Le fait d'avoir plusieurs d'autorisation de modèles peut être utile si la fonctionnalité est vraiment différent ou si les exigences en matière d'autorisation, telles que l'ajout de sous-domaine de la authkeys, est différent.

Une autre approche consiste à ajouter un HABTM rôles de la relation à votre utilisateur. Voici un bon tutoriel par Tony Amoyal: http://www.tonyamoyal.com/2010/07/28/rails-authentication-with-devise-and-cancan-customizing-devise-controllers/

0voto

kinet Points 1015

essayez d’ajouter / sign_in à votre chemin d’administrateur, quel que soit votre choix ... le mien est

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

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X