Visualizzazione dei risultati da 1 a 10 su 10
  1. #1

    Autenticazione e gestione permessi

    quali script/plugin usate e consigliate per progetti Rails per quanto riguarda autenticazione utenti e gestione dei permessi ACL o altro?

    Ho visto che di roba in giro ce n'è parecchia, anche roba vecchia del 2005-6 e di confusione moltissima...

  2. #2

    Re: Autenticazione e gestione permessi

    Originariamente inviato da andrea.paiola
    di confusione moltissima...
    Sì, decisamente.
    Attualmente "gli standard" sono:

    1. http://github.com/technoweenie/restful-authentication/ per l'autenticazione. E' un plugin molto valido, flessibile e personalizzabile.

    2. Per la gestione delle ACL al momento manca qualcosa di veramente valido. Molti usano http://code.google.com/p/rolerequirement/ anche se personalmente non lo trovo così valido e non l'ho mai usato direttamente.
    In genere preferisco creare direttamente una gestione ACL a seconda del progetto, ammesso che sia necessario. Molti progetti hanno poco più che anonymous, user e admin e per questo basta qualche metodo aggiuntivo al plugin 1.

  3. #3
    beh per divertirmi volevo fare un portalone quindi ogni utente avrà un suo blog, evetuali gallerie di immagini/video ( quindi upload dei file ), intervenire sul forum... volevo una gestione dei permessi esauriente e possibilmente non troppo difficile da usare... boh intanto grazie

  4. #4
    guarda un po'

    ho fatto tutte queste belle cosine...

    rails portal
    cd portal

    script/plugin install git://github.com/technoweenie/restful-authentication.git
    script/generate authenticated user sessions
    script/plugin install git://github.com/timcharper/role_requirement.git
    script/generate roles Role User


    ruby script/generate scaffold Blog user:references title:string content:text created_at:datetime updated_at:datetime
    ruby script/generate scaffold BlogPost blog:references title:string content:text created_at:datetime updated_at:datetime
    ruby script/generate scaffold Forum user:references title:string content:text created_at:datetime updated_at:datetime
    ruby script/generate scaffold Thread user:references forum:references title:string content:text created_at:datetime updated_at:datetime
    ruby script/generate scaffold ForumPost user:references thread:references title:string content:text created_at:datetime updated_at:datetime
    ruby script/generate scaffold Gallery user:references title:string content:text created_at:datetime updated_at:datetime
    ruby script/generate scaffold GalleryItem gallery:references title:string content:string created_at:datetime updated_at:datetime

    rake db:drop:all
    rake db:create:all
    rake db:migrate
    rake test
    ecco sul rake test mi da errore
    /usr/bin/ruby1.8 -Ilib:test "/usr/lib/ruby/1.8/rake/rake_test_loader.rb" "test/unit/blog_test.rb" "test/unit/user_test.rb" "test/unit/forum_post_test.rb" "test/unit/gallery_item_test.rb" "test/unit/forum_test.rb" "test/unit/gallery_test.rb" "test/unit/thread_test.rb" "test/unit/blog_post_test.rb"
    /home/nexus6/www/portal/app/models/thread.rb:1: superclass mismatch for class Thread (TypeError)
    from /usr/local/lib/site_ruby/1.8/rubygems/custom_require.rb:31:in `gem_original_require'
    from /usr/local/lib/site_ruby/1.8/rubygems/custom_require.rb:31:in `require'
    from /usr/lib/ruby/gems/1.8/gems/activesupport-2.2.2/lib/active_support/dependencies.rb:155:in `require'
    from /usr/lib/ruby/gems/1.8/gems/activesupport-2.2.2/lib/active_support/dependencies.rb:262:in `require_or_load'
    from /usr/lib/ruby/gems/1.8/gems/activesupport-2.2.2/lib/active_support/dependencies.rb:221:in `depend_on'
    from /usr/lib/ruby/gems/1.8/gems/activesupport-2.2.2/lib/active_support/dependencies.rb:133:in `require_dependency'
    from /usr/lib/ruby/gems/1.8/gems/rails-2.2.2/lib/initializer.rb:368:in `load_application_classes'
    from /usr/lib/ruby/gems/1.8/gems/rails-2.2.2/lib/initializer.rb:367:in `each'
    from /usr/lib/ruby/gems/1.8/gems/rails-2.2.2/lib/initializer.rb:367:in `load_application_classes'
    from /usr/lib/ruby/gems/1.8/gems/rails-2.2.2/lib/initializer.rb:365:in `each'
    from /usr/lib/ruby/gems/1.8/gems/rails-2.2.2/lib/initializer.rb:365:in `load_application_classes'
    from /usr/lib/ruby/gems/1.8/gems/rails-2.2.2/lib/initializer.rb:185:in `process'
    from /usr/lib/ruby/gems/1.8/gems/rails-2.2.2/lib/initializer.rb:112:in `send'
    from /usr/lib/ruby/gems/1.8/gems/rails-2.2.2/lib/initializer.rb:112:in `run'
    from /home/nexus6/www/portal/config/environment.rb:13
    from ./test/test_helper.rb:2:in `require'
    from ./test/test_helper.rb:2
    from ./test/unit/blog_test.rb:1:in `require'
    from ./test/unit/blog_test.rb:1
    from /usr/lib/ruby/1.8/rake/rake_test_loader.rb:5:in `load'
    from /usr/lib/ruby/1.8/rake/rake_test_loader.rb:5
    from /usr/lib/ruby/1.8/rake/rake_test_loader.rb:5:in `each'
    from /usr/lib/ruby/1.8/rake/rake_test_loader.rb:5
    /usr/bin/ruby1.8 -Ilib:test "/usr/lib/ruby/1.8/rake/rake_test_loader.rb" "test/functional/forums_controller_test.rb" "test/functional/sessions_controller_test.rb" "test/functional/forum_posts_controller_test.rb" "test/functional/galleries_controller_test.rb" "test/functional/users_controller_test.rb" "test/functional/blog_posts_controller_test.rb" "test/functional/blogs_controller_test.rb" "test/functional/threads_controller_test.rb" "test/functional/gallery_items_controller_test.rb"
    /home/nexus6/www/portal/app/models/thread.rb:1: superclass mismatch for class Thread (TypeError)
    from /usr/local/lib/site_ruby/1.8/rubygems/custom_require.rb:31:in `gem_original_require'
    from /usr/local/lib/site_ruby/1.8/rubygems/custom_require.rb:31:in `require'
    from /usr/lib/ruby/gems/1.8/gems/activesupport-2.2.2/lib/active_support/dependencies.rb:155:in `require'
    from /usr/lib/ruby/gems/1.8/gems/activesupport-2.2.2/lib/active_support/dependencies.rb:262:in `require_or_load'
    from /usr/lib/ruby/gems/1.8/gems/activesupport-2.2.2/lib/active_support/dependencies.rb:221:in `depend_on'
    from /usr/lib/ruby/gems/1.8/gems/activesupport-2.2.2/lib/active_support/dependencies.rb:133:in `require_dependency'
    from /usr/lib/ruby/gems/1.8/gems/rails-2.2.2/lib/initializer.rb:368:in `load_application_classes'
    from /usr/lib/ruby/gems/1.8/gems/rails-2.2.2/lib/initializer.rb:367:in `each'
    from /usr/lib/ruby/gems/1.8/gems/rails-2.2.2/lib/initializer.rb:367:in `load_application_classes'
    from /usr/lib/ruby/gems/1.8/gems/rails-2.2.2/lib/initializer.rb:365:in `each'
    from /usr/lib/ruby/gems/1.8/gems/rails-2.2.2/lib/initializer.rb:365:in `load_application_classes'
    from /usr/lib/ruby/gems/1.8/gems/rails-2.2.2/lib/initializer.rb:185:in `process'
    from /usr/lib/ruby/gems/1.8/gems/rails-2.2.2/lib/initializer.rb:112:in `send'
    from /usr/lib/ruby/gems/1.8/gems/rails-2.2.2/lib/initializer.rb:112:in `run'
    from /home/nexus6/www/portal/config/environment.rb:13
    from ./test/test_helper.rb:2:in `require'
    from ./test/test_helper.rb:2
    from ./test/functional/forums_controller_test.rb:1:in `require'
    from ./test/functional/forums_controller_test.rb:1
    from /usr/lib/ruby/1.8/rake/rake_test_loader.rb:5:in `load'
    from /usr/lib/ruby/1.8/rake/rake_test_loader.rb:5
    from /usr/lib/ruby/1.8/rake/rake_test_loader.rb:5:in `each'
    from /usr/lib/ruby/1.8/rake/rake_test_loader.rb:5
    /usr/bin/ruby1.8 -Ilib:test "/usr/lib/ruby/1.8/rake/rake_test_loader.rb"
    Errors running test:units and test:functionals!
    mi preoccupo o per il momento me ne frego?
    sono un po' inesperto per usare un eufemismo

    le tabelle create nel db sembrano corrette

  5. #5
    Thread è un oggetto di Ruby (http://www.ruby-doc.org/core/classes/Thread.html) dunque non puoi chiamare un modello Thread.

    L'errore

    codice:
    /home/nexus6/www/portal/app/models/thread.rb:1: superclass mismatch for class Thread (TypeError)
    sta ad indicare che stai ridefinendo in qualche modo la classe Thread senza tenere conto della superclasse dalla quale dipendeva fino a quel momento.
    In altre parole, se originariamente la definizione di una classe è

    codice:
    class Foo < Bar
    def do_something
    end
    end
    puoi ridefinirla

    codice:
    class Foo < Bar
    def do_more
    end
    end
    e la classe Foo avrà i metodi do_something e do_more ma non puoi fare

    codice:
    class Foo
    def do_more
    end
    end
    Nel tuo caso ovviamente non era voluta la redefinizione ma è stato causato dal fatto ch enon conoscevi la presenza di una classe Thread nella standard library.

    Inoltre, nello scaffold, usare created_at:datetime updated_at:datetime è rindondante.
    Vengono isneriti di default.

  6. #6
    Originariamente inviato da weppos
    Thread è un oggetto di Ruby (http://www.ruby-doc.org/core/classes/Thread.html) dunque non puoi chiamare un modello Thread.

    [...]
    Nel tuo caso ovviamente non era voluta la redefinizione ma è stato causato dal fatto ch enon conoscevi la presenza di una classe Thread nella standard library.
    eh infatti
    grazie... ora però non so come chiamarlo
    Originariamente inviato da weppos
    Inoltre, nello scaffold, usare created_at:datetime updated_at:datetime è rindondante.
    Vengono isneriti di default.
    questo lo ignoravo :O
    grazie!


    [edit]

    mettiamo che lo chiamo ForumThread

    poi come gli do il reference nel post?



    codice:
    ruby script/generate scaffold ForumPost user:references forumthread:references
    è giusto?
    codice:
    ruby script/generate scaffold ForumPost user:references forum_thread:references
    ?

  7. #7
    Nessuno ti fucila se modifichi a mano uno scaffold.

    Una volta generato lo scaffold, ad esempio

    codice:
    ruby script/generate scaffold ForumThread title:string content:text
    puoi benissimo aprire la migration che ti ha creato, che probabilmente si chiamerà qualcosa tipo /db/migrations/<timestamp>_create_forum_threads.rb e dentro troverai un metodo self.up con

    codice:
    create_table :forum_threads do |t|
    end
    aggiungi

    codice:
    create_table :forum_threads do |t|
      ...
      t.belongs_to :user
    end
    Per quanto riguarda la tabella forum_posts

    codice:
    create_table :forum_posts do |t|
      ...
      t.belongs_to :user
      t.belongs_to :forum_thread
    end
    In realtà puoi anche solo dichiararlo come integer.

    codice:
    create_table :forum_posts do |t|
      ...
      t.integer :user_id
      t.integer :forum_post_id
    end
    Infatti in entrambi i casi quello che fa fede è la relazione che poi inserisci nel modello.

    codice:
    class ForumPost 
    
      belongs_to :forum_thread
      ...
    
    end
    codice:
    class ForumThread
    
      has_many :forum_posts
      ...
    
    end
    Lo stesso discorso vale per lo scaffold con forum_thread_id:integer.
    Confesso di non aver mai usato nomecampo:references

  8. #8
    lo so che posso modificare a mano ma se imparo ad usare scaffold poi risparmio tempo

  9. #9
    Originariamente inviato da andrea.paiola
    lo so che posso modificare a mano ma se imparo ad usare scaffold poi risparmio tempo
    Non sempre.
    E comunque è inutile usare lo scaffold senza sapere come agisce.

  10. #10
    Originariamente inviato da weppos
    E comunque è inutile usare lo scaffold senza sapere come agisce.
    è appunto quello che sto cercando di capire, incluso references che non fa altro che dare i nomi giusti alle tabelle

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.