IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Ruby on Rails Discussion :

Aide sur le plugin authorization (la suite)


Sujet :

Ruby on Rails

  1. #1
    Membre à l'essai
    Inscrit en
    Novembre 2005
    Messages
    41
    Détails du profil
    Informations forums :
    Inscription : Novembre 2005
    Messages : 41
    Points : 24
    Points
    24
    Par défaut Aide sur le plugin authorization (la suite)
    Bonjour à tous,

    Ce message est la suite de la discussion d'hier (http://www.developpez.net/forums/sho....php?t=333041), il devrait s'inscrire à la suite, mais comme y'a un [résolu] à côté j'ai peur de pas être lu...

    j'essaye de comprendre la doc du plugin :
    1. At the top of your config/environment.rb create an AUTHORIZATION_MIXIN constant and set it to "object roles" or "hardwired". (See init.rb in this plugin for how the role support is mixed in.)
    2. Make sure your application provides a current_user method or something that returns the current user object. Add the constants in environment.rb to set your authentication system’s login page (DEFAULT_REDIRECTION_HASH) and method for storing the current URL for return after authentication (STORE_LOCATION_METHOD). (See authorization.rb in the plugin’s /lib directory for the default values of DEFAULT_REDIRECTION_HASH and STORE_LOCATION_METHOD.)
    3. If you use the "hardwired" mixin, no database use is required. Otherwise, you’ll have to generate a role.rb model (and its associated join table with User) by running "script/generate role_model Role" and doing "rake migrate".
    4. Add acts_as_authorized_user to your user class.
    5. Add acts_as_authorizable to the models you want to query for roles.

    1, 2, 3 ça va maintenant, mais je comprends toujours pas ce que signifie les points 4 et 5 (sans doute parce que je débute en rails et en ruby)

    Bolo a écrit :
    dans ton model user ajoute
    acts_as_authorized_user
    acts_as_authorizable
    bon déjà j'ai pas de class user, mais bien un model user.rb :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    require 'digest/sha1'
    class User < ActiveRecord::Base
      # Virtual attribute for the unencrypted password
      attr_accessor :password
     
      validates_presence_of     :login, :email
      validates_presence_of     :password,                   :if => :password_required?
      validates_presence_of     :password_confirmation,      :if => :password_required?
      validates_length_of       :password, :within => 4..40, :if => :password_required?
      validates_confirmation_of :password,                   :if => :password_required?
      validates_length_of       :login,    :within => 3..40
      validates_length_of       :email,    :within => 3..100
      validates_uniqueness_of   :login, :email, :case_sensitive => false
      before_save :encrypt_password
     
      # Authenticates a user by their login name and unencrypted password.  Returns the user or nil.
      def self.authenticate(login, password)
        u = find_by_login(login) # need to get the salt
        u && u.authenticated?(password) ? u : nil
      end
     
      # Encrypts some data with the salt.
      def self.encrypt(password, salt)
        Digest::SHA1.hexdigest("--#{salt}--#{password}--")
      end
     
      # Encrypts the password with the user salt
      def encrypt(password)
        self.class.encrypt(password, salt)
      end
     
      def authenticated?(password)
        crypted_password == encrypt(password)
      end
     
      def remember_token?
        remember_token_expires_at && Time.now.utc < remember_token_expires_at 
      end
     
      # These create and unset the fields required for remembering users between browser closes
      def remember_me
        self.remember_token_expires_at = 2.weeks.from_now.utc
        self.remember_token            = encrypt("#{email}--#{remember_token_expires_at}")
        save(false)
      end
     
      def forget_me
        self.remember_token_expires_at = nil
        self.remember_token            = nil
        save(false)
      end
     
      protected
        # before filter 
        def encrypt_password
          return if password.blank?
          self.salt = Digest::SHA1.hexdigest("--#{Time.now.to_s}--#{login}--") if new_record?
          self.crypted_password = encrypt(password)
        end
     
        def password_required?
          crypted_password.blank? || !password.blank?
        end
    end
    je met les deux lignes telles quelles, genre au début du fichier ?

    et enfin, dernière question pour être moins bête ce soir en me couchant : c'est quoi ces deux lignes : des variables, des methodes, autre chose ? évidemment je comprends pas ce qu'elles font...

  2. #2
    Membre éprouvé

    Profil pro
    Inscrit en
    Mai 2005
    Messages
    657
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2005
    Messages : 657
    Points : 910
    Points
    910
    Par défaut
    Salut,

    Citation Envoyé par robindelhuxley
    Ce message est la suite de la discussion d'hier (http://www.developpez.net/forums/sho....php?t=333041), il devrait s'inscrire à la suite, mais comme y'a un [résolu] à côté j'ai peur de pas être lu...
    Soit. Cela dit les topics qui contiennent des nouveaux posts remontent en haut de la liste et s'affichent en gras, donc je suis pense que tu aurais mieux fait de continuer à la suite


    Citation Envoyé par robindelhuxley
    bon déjà j'ai pas de class user, mais bien un model user.rb :
    Citation Envoyé par robindelhuxley
    require 'digest/sha1'
    class User < ActiveRecord::Base
    Et ça ça serait pas une classe User par hasard ?


    je met les deux lignes telles quelles, genre au début du fichier ?
    Tout comme les acts_as de Rails (ainsi que les validates, has_many/belongs_to, etc.), tu les met à l'intérieur de ta classe :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    class User < ActiveRecord::Base
      acts_as_autorized_user
      # le reste de ta classe
      [...]
    end

    et enfin, dernière question pour être moins bête ce soir en me couchant : c'est quoi ces deux lignes : des variables, des methodes, autre chose ? évidemment je comprends pas ce qu'elles font...
    Je suis pas encore bien calé en ruby mais il me semble que ça s'appelle des "mixins".

    D'ailleurs comme c'est indiqué sur la site que tu as donné dans ton premier topic :
    The Authorization plugin comes with two modules that provide different levels of database support. Each of the mixins provide the acts_as_authorized_user and acts_as_authorizable class methods for your models. If you use one of those declarations, you get methods that handle authorization with different database schemes.
    En gros : ces lignes rajoutent des méthodes à ta classe. Tu peux voir ça un peu comme un héritage : ta classe obtient toutes les méthodes définies par le acts_as_authorized_user (d'où le nom "acts as" : ton modèle "agit comme" un utilisateur authentifié).

    Bon courage
    Toute la documentation Ruby on Rails : gotapi.com/rubyrails
    Mes articles :
    > HAML : langage de template pour Ruby on Rails

  3. #3
    Membre à l'essai
    Inscrit en
    Novembre 2005
    Messages
    41
    Détails du profil
    Informations forums :
    Inscription : Novembre 2005
    Messages : 41
    Points : 24
    Points
    24
    Par défaut
    Merci, comme je le disais parfois il suffit pas de grand chose et là tes explications m'éclaires énorméments.

    en fait je comprends pas encore bien l'organisation et la syntaxe de rails et ça m'embrouille pour comprendre la celle de ruby (j'attends des livres que j'ai commandé, je suis que ça ira mieux après), étonnement j'avais pas vu/lu la déclaration de la class user car je l'attendais pas là.

    Bref je crois que des neurones viennent de se connecter et plusieurs choses prennent sens.

    Encore merci.

  4. #4
    Membre à l'essai
    Inscrit en
    Novembre 2005
    Messages
    41
    Détails du profil
    Informations forums :
    Inscription : Novembre 2005
    Messages : 41
    Points : 24
    Points
    24
    Par défaut
    Bon sinon rien à faire je comprends pas l'utilisation.

    J'ai bien deux nouvelles tables, mais y'a eu pas de controller généré, pas de vue non plus. Je dois tout créer moi même où y'a un truc que j'ai loupé ?

  5. #5
    Membre à l'essai
    Inscrit en
    Novembre 2005
    Messages
    41
    Détails du profil
    Informations forums :
    Inscription : Novembre 2005
    Messages : 41
    Points : 24
    Points
    24
    Par défaut
    Finallement j'utilise acl_system2, simple et efficace.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [Hudson] AIDE sur codage plugin
    Par KIKI74 dans le forum Intégration Continue
    Réponses: 2
    Dernier message: 13/05/2011, 17h06
  2. aide sur les Plugins Eclipse en WS
    Par lady_alg dans le forum Eclipse Java
    Réponses: 0
    Dernier message: 03/02/2008, 23h03
  3. Aide sur PlugIN (Fichiers BPL ou autres)
    Par QAYS dans le forum Delphi
    Réponses: 14
    Dernier message: 25/05/2007, 19h13
  4. aide sur authorization (plugin rails)
    Par robindelhuxley dans le forum Ruby on Rails
    Réponses: 3
    Dernier message: 09/05/2007, 18h25
  5. Filemaker ... besoin d'aide sur les Plugin
    Par joange dans le forum Autres SGBD
    Réponses: 3
    Dernier message: 22/04/2004, 10h16

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo