Skip to content

Rules are skipped in ahas_perm check #199

@CristopherH95

Description

@CristopherH95

I am working on a project that uses django-rules to apply some permissions checks using custom predicates. This particular project I am working on is using Django asynchronously via Daphne. I have found that, if I use something like:

perm_check = await sync_to_async(user.has_perm)(MyModel.get_perm("change"), my_object)

Everything works okay. However, if I use the new ahas_perm variant (introduced in Django 5.2), like so:

perm_check = await user.ahas_perm(MyModel.get_perm("change"), my_object)

Then my custom predicates are all skipped. I suspect this has to do with there being no ahas_perm implementation in the ObjectPermissionBackend (here), so Django sees the backend has no implementation and it is skipped. I think it would be good to have an implementation for ahas_perm in the backend, so that the ahas_perm interface can be used just as easily as has_perm.

I am open to contributing at least a simple implementation, if this was not already planned/in-work.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions