2010-03-17 8 views
1

Je souhaite ajouter la fonctionnalité "Partage de documents" à mon application, comme dans le service de documents google. Comme je vois:Rails basé sur l'autorisation d'autorisation/moteur d'autorisation?

L'utilisateur peut:

  • peut liste/view/créer/modifier/supprimer ses propres documents
  • parts propre document à tout le monde - est un document public
  • parts propre document à un autre utilisateur avec accès en lecture seule
  • parts propre document à un autre utilisateur avec un accès en lecture-écriture
  • Voir la liste des documents propres et les utilisateurs auxquels il a donné la permission de lire et écrire
  • Voir la liste des documents étrangers
  • vue/modifier des documents étrangers avec lecture/écriture

S'il vous plaît dites-moi, quelle solution permission/autorisation est PRÉFÉRÉ pour ma tâche?

Répondre

2

Vous pouvez regarder des plug-ins d'autorisation disponibles ici:

http://www.ruby-toolbox.com/categories/rails_authorization.html

En ce qui concerne l'autorisation/l'autorisation de niveau objet, il semble que canable peut faire:

http://github.com/jnunemaker/canable

De la exemple dans le readme:

class Article 
    include MongoMapper::Document 
    include Canable::Ables 
    userstamps! # adds creator and updater 

    def updatable_by?(user) 
    creator == user 
    end 

    def destroyable_by?(user) 
    updatable_by?(user) 
    end 
end 

Vous pouvez également définir un viewable_by? méthode. Vous auriez toujours besoin d'une sorte de champs d'autorisation ou d'association sur le modèle de document, mais après cela, vous pourriez utiliser canable pour simplifier l'autorisation dans votre contrôleur/vues.

+0

Merci pour votre réponse. J'ai cherché là-bas déjà. Et voir toutes les vidéos liées à l'autorisation de Ryan. cancan (et acl9 et declarative_authorization) ne peut pas satisfaire mes besoins. – Vlad

+0

J'ai mis à jour mon commentaire pour me concentrer sur canable, car il semble que le readme puisse vous aider avec l'autorisation par objet. –

+0

La meilleure bibliothèque que j'ai trouvée pour les permissions basées sur les objets s'appelle la sanction, qui malheureusement n'a jamais été empaquetée comme une gemme et peut-être avoir rassemblé un peu de cruft. https://github.com/matthewvermaak/sanction –