dotLRN Roles, Sections, and Permissions

dotLRN Permission API

by Ben Adida.

The dotLRN access control mechanism will rely on OpenACS's permissions system, but will be completely layered. This means the underlying permission scheme can change.

Relational Segments & Context IDs

In order to make things much cleaner with respect to permissions, we use relational segments and context IDs. The goal of relational segments will be to determine groups of users to whom permissions are granted. The goal of context IDs will be to create a hierarchy of objects so that as new components are added to subcommunities, permissions are naturally extended in appropriate ways.

For this to work, the actual privileges used throughout dotLRN and all of its modules must be consistent. Since permissions follow an inheritance path, we must make sure everything bootstraps off the basic read, write, create, delete, admin privileges.

To better explain the situation, we want the following to happen:

General Roles API

These are fairly straight-forward:

Access Control API