---
name: "Jifty::RightsFrom"
section: "3pm"
platform: "linux"
package: "libjifty-perl"
version: "1.10518+dfsg-2"
release: "Debian 7 (Wheezy)"
platforms: ["linux"]
url: "https://new.carta.tech/Jifty::RightsFrom"
---

# Jifty::RightsFrom(3pm)

Delegate access control to a related object

## NAME

Jifty::RightsFrom - Delegate access control to a related object

## SYNOPSIS

```
  package Application::Model::Thing;
  use Jifty::DBI::Schema;
  use Application::Record schema {
    column owner => refers_to Application::Model::Person;
  }
  use Jifty::RightsFrom column => 'owner';
```

## DESCRIPTION

Provides a `"delegate_current_user_can"` method that various task-related objects can use as a base to make their own access control decisions based on their task. "current\_user\_can" in Jifty::Record uses this method to make an access control decision if it exists.

Note that this means that a model class can use Jifty::RightsFrom, and still have a custom `"current_user_can"` method, and they will not interfere with each other.

### export\_curried\_sub HASHREF

Takes:

- sub\_name

  The subroutine in this package that you want to export.

- export\_to

  The name of the package you want to export to.

- as

  The name your new curried sub should be exported into in the package `"export_to"`

- args (arrayref)

  The arguments you want to hand to your sub.

### delegate\_current\_user\_can 'column', $column\_name, $right\_name, @attributes

Make a decision about permissions based on checking permissions on the column of this record specified in the call to `"import"`. `"create"`, `"delete"`, and `"update"` rights all check for the `"update"` right on the delegated object. On create, we look in the passed attributes for an argument with the name of that column.
