permissions.php

File structure

This file contains user permissions for your plugin. It does not contain permission names (those are stored in language files).

$permissions = array(
	'ca' => array( // front end permissions
		'articles_access' => array(
			'type' => 'boolean', // permission type
			'guests' => '1', // does permission apply to non-logged in users?
			'group_admin' => '1', // default value for Administrator user group
			'group_guests' => '1', // default value for Guests user group
			'group_default' => '1',  // default value for all other user groups
			'group_cancelled' => '0' // default value for Cancelled user group
		),
		'articles_browse' => array(
			'type' => 'boolean',
			'guests' => '1',
			'group_admin' => '1',
			'group_guests' => '1',
			'group_default' => '1',
			'group_cancelled' => '0'
		),
		'articles_search' => array(
			'type' => 'boolean',
			'guests' => '1',
			'group_admin' => '1',
			'group_guests' => '1',
			'group_default' => '1',
			'group_cancelled' => '0'
		),
		'articles_limit' => array(
			'type' => 'number',
			'guests' => '0',
			'group_admin' => '0',
			'group_guests' => '0',
			'group_default' => '500',
			'group_cancelled' => '0'
		)
	),
	'cp' => array( // control panel permissions
		'articles_manage' => array(
			'type' => 'boolean',
			'guests' => '0',
			'group_admin' => '1',
			'group_guests' => '0',
			'group_default' => '0',
			'group_cancelled' => '0'
		),
		'fields_manage' => array(
			'type' => 'boolean',
			'guests' => '0',
			'group_admin' => '1',
			'group_guests' => '0',
			'group_default' => '0',
			'group_cancelled' => '0'
		),
		'settings_manage' => array(
			'type' => 'boolean',
			'guests' => '0',
			'group_admin' => '1',
			'group_guests' => '0',
			'group_default' => '0',
			'group_cancelled' => '0'
		)
	)
);

Note that "guests" setting indicates if permission is available to non-logged in users. For example "articles_limit" would specify how any articles user may add. Since non-logged in users cannot post articles, this permission should not be accessible to them and you would set its value to "0".

User permissions are saved into the "users_permissions" table in the database.

Accessing user permissions

You may access user permissions like this:

// 'articles_access' is the permission keyword
// 'articles' is the name of the plugin
session::permission('articles_access', 'articles');

Note that control panel permissions will not be available on the front end of your site.

Language file

Language file "languages/english.php" will contain code like this:

$permissions = array(
	// global permissions
	'articles_access' => "Access articles",
	'articles_browse' => "Browse articles",
	'articles_search' => "Search articles",
	'articles_limit' => "Max articles",
	// control panel permissions
	'articles_manage' => "Manage articles",
);

Similarly to the config.php file, system loads user permission language content in cascading order so you don't need to include language content for items that already exists in the "system" plugin.