2010-04-25 9 views
44

Ok, probablemente voy a sentir bastante tonta cuando alguien responde a éste con una simple cosa que me falta ... pero aquí va:Creación de un usuario administrador en Diseñar en los carriles beta 3

I Tengo una nueva aplicación en Rails 3 beta y estoy usando el dispositivo para la autenticación. He ejecutado todos los comentarios y todo está funcionando perfectamente en este momento. Creé un rol de usuario y un rol de administrador (siguiendo estas instrucciones: https://github.com/plataformatec/devise/wiki/How-To:-Add-an-Admin-Role) y me registré como primer usuario, pero ¿cómo puedo registrarme o crear un usuario de rol de administrador? Las instrucciones de los chicos de diseño configuraron el rol de administrador para que no sea registrable pero no estoy seguro de cómo se supone que debes crear el administrador si no puedes registrarte?

¡Cualquier ayuda sería apreciada! ¡Gracias!

Respuesta

91

Sip. Me siento tonto.

Si alguien más está teniendo un momento igualmente insulso. Solo use la consola de rieles para crear el usuario administrador:

➡ 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 

Eso lo hará. Ahora solo visite la ruta de inicio de sesión de administrador e inicie sesión.

+23

El voto no se refería a la primera frase de su respuesta. – lbz

+3

En realidad, ¿cuánto de un sitio de rieles se gestiona realmente utilizando la consola de rieles? Ya sabes, esas cosas menores, un campo de banderas aquí y allá? –

+0

Probablemente una cantidad terrorífica se maneja a través de la consola. Sé que lo uso todo el tiempo. Pero creo que deberíamos agradecerle a @dhh por crear una excelente manera de acceder a nuestras aplicaciones de Rails. – erskingardner

0

intento anadiendo/sign_in a la ruta de administración, cualquiera que sea lo establece en ... mina es

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

+0

uy es probable que no haya usado: authenticable. Prueba esta página para obtener ayuda sobre cómo anular las vistas de administrador: http://wiki.github.com/fortuity/subdomain-authentication/tutorial-walkthrough – kinet

+0

No, no utilicé: autenticable al configurar el modelo de administrador con el dispositivo, como Dije, estaba usando el tutorial que divise tiene en su página de github. Preferiría no usar subdominios si puedo evitarlo ... – erskingardner

3

@Stewart Usted está en lo correcto. El uso de un indicador de administración en el modelo de usuario es aceptable y aún puede coexistir con muchas opciones de autorización. Echar un vistazo a la clase de capacidad en la documentación cancan para un ejemplo de cómo esto podría ser:

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

Tener varios modelos de autorización puede ser útil si la funcionalidad es realmente diferente o si los requisitos de autorización, como la adición subdominio de las authkeys, es diferente.

Otro enfoque es agregar una relación de roles HABTM a su usuario. Aquí hay un buen tutorial de Tony Amoyal: http://www.tonyamoyal.com/2010/07/28/rails-authentication-with-devise-and-cancan-customizing-devise-controllers/

5

Esto puede no aplicarse a Devise (pero creo que lo hará), pero en general si quiere sembrar un usuario administrador pero no quiere almacenar su contraseña de administrador en el control de código fuente, puede hacer algo como esto ...

@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 

puede crear el usuario a nivel local con la contraseña que desea encontrar el password_digest.

+0

¿Diseña usar md5 para digerir la contraseña? – fatman13

13

Lo que realmente está tratando de hacer es crear datos de inicialización. Una forma más estándar de hacer esto sería añadir sus usuarios de semillas (y papeles, si los almacena) a db/seeds.rb

Para exmaple en 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]}]) 

a continuación, ejecute:

rake db:seed 
+1

Esta es la forma correcta de hacerlo. – 0112

0

hay manera conveniente para llenar tablas - db/seed.rb archivo.Sólo tiene que añadir la secuencia de comandos para crear usuarios en el mismo y de ejecución:

rake db:seed 

A continuación se puede ver ejemplo de User modelo con email y username campos:

# 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 

Nota, que idean validaciones se aplican aquí.

Here puedes encontrar más ejemplos del uso del archivo seed.rb y here es el molde de los rieles del rayn.

Cuestiones relacionadas