2016-05-10 1 views
1

Dans le cadre de la pyramide python je pourrais donner la permission au niveau de l'objet, mais comment autoriser l'utilisation du niveau objet. J'ai un administrateur et un modérateur, mais un utilisateur du groupe modérateur que admin.Comment donner une permission à l'utilisateur spécifique python pyramid?

+0

Si vous n'êtes pas envisager de faire utilisation de permissions granulaires, je pense que ce que vous pourriez faire est d'ajouter un super modérateur et un gestionnaire dans vos groupes. Et puis par exemple dans votre méthode de révision, vous pouvez définir (permission = "Moderator, SuperModerator") et votre ensemble de méthodes de suppression (permission = "SuperModerator") – webjunkie

Répondre

0

cadre Websauna a un exemple pour le faire:

https://websauna.org/docs/narrative/crud/standalone.html#creating-crud-resources

copier-coller la réponse à satisfaire les désirs profonds de Stackoverflow modérateurs trop zélés:

class ContractResource(Resource): 
    """Map one TokenContract SQLAlchemy model instance to editable CRUD resource.""" 

    # __acl__ can be callable or property. 
    # @reify caches the results after the first call 
    @reify 
    def __acl__(self) -> List[tuple]: 
     # Give the user principal delete access as the owner 
     # The returned list overrides __acl__ from the parent level 
     # (ContractCRUD in our case) 
     # See websauna.system.auth.principals for details 
     contract = self.get_object() # type: TokenContract 
     if contract.owner: 
      owner_principal = "user:{}".format(contract.owner.id) 
      return [(Allow, owner_principal, "delete")] 
     else: 
      return [] 

    def get_title(self): 
     token_contract = self.get_object() 
     return "Smart contract {}".format(bin_to_eth_address(token_contract.contract_address))