nicer custom classes
This commit is contained in:
parent
1a34557da7
commit
50a6013569
15
README.txt
15
README.txt
@ -74,6 +74,21 @@ Take a look at "core/default_config.inc.php" for the available options
|
|||||||
that can used.
|
that can used.
|
||||||
|
|
||||||
|
|
||||||
|
Custom User Classes
|
||||||
|
~~~~~~~~~~~~~~~~~~~
|
||||||
|
User classes can be added to or altered by placing them in
|
||||||
|
`data/config/user-classes.conf.php`. For example, one can override the
|
||||||
|
default anonymous "allow nothing" permissions like so:
|
||||||
|
|
||||||
|
new UserClass("anonymous", "base", array(
|
||||||
|
"edit_image_tag" => True,
|
||||||
|
"edit_image_source" => True,
|
||||||
|
"create_image_report" => True,
|
||||||
|
));
|
||||||
|
|
||||||
|
For a list of permissions, see core/userclass.class.php
|
||||||
|
|
||||||
|
|
||||||
Development Info
|
Development Info
|
||||||
~~~~~~~~~~~~~~~~
|
~~~~~~~~~~~~~~~~
|
||||||
http://shimmie.shishnet.org/doc/
|
http://shimmie.shishnet.org/doc/
|
||||||
|
@ -11,7 +11,6 @@
|
|||||||
*
|
*
|
||||||
*/
|
*/
|
||||||
|
|
||||||
// to change these system-level settings, do define("FOO", 123); in config.php
|
|
||||||
function _d($name, $value) {if(!defined($name)) define($name, $value);}
|
function _d($name, $value) {if(!defined($name)) define($name, $value);}
|
||||||
_d("DATABASE_DSN", null); // string PDO database connection details
|
_d("DATABASE_DSN", null); // string PDO database connection details
|
||||||
_d("CACHE_DSN", null); // string cache connection details
|
_d("CACHE_DSN", null); // string cache connection details
|
||||||
@ -30,47 +29,4 @@ _d("WH_SPLITS", 1); // int how many levels of subfolders to put in
|
|||||||
_d("VERSION", 'trunk'); // string shimmie version
|
_d("VERSION", 'trunk'); // string shimmie version
|
||||||
_d("SCORE_VERSION", 's2hack/'.VERSION); // string SCore version
|
_d("SCORE_VERSION", 's2hack/'.VERSION); // string SCore version
|
||||||
_d("TIMEZONE", null); // string timezone
|
_d("TIMEZONE", null); // string timezone
|
||||||
_d("EXTRA_USER_CLASSES", serialize(array())); // array extra classes that a user can be*
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Defining extra user classes:
|
|
||||||
* see core/userclass.class.php for flags
|
|
||||||
*
|
|
||||||
* This is a kind of ugly way of doing things...
|
|
||||||
*
|
|
||||||
|
|
||||||
define("EXTRA_USER_CLASSES", serialize(array(
|
|
||||||
// a regular user, with some extra powers
|
|
||||||
array(
|
|
||||||
"moderator", # name for the new class
|
|
||||||
"user", # class to base it on
|
|
||||||
array( # parts of the base class to override
|
|
||||||
"edit_image_lock" => True,
|
|
||||||
"view_ip" => True,
|
|
||||||
"ban_ip" => True,
|
|
||||||
"delete_image" => True,
|
|
||||||
"delete_comment" => True,
|
|
||||||
"manage_alias_list" => True,
|
|
||||||
"mass_tag_edit" => True,
|
|
||||||
"edit_image_tag" => True,
|
|
||||||
"edit_image_source" => True,
|
|
||||||
"edit_image_owner" => True,
|
|
||||||
"view_image_report" => True,
|
|
||||||
)
|
|
||||||
),
|
|
||||||
// an admin, minus the ability to create / remove other admins
|
|
||||||
array(
|
|
||||||
"manager", # name for the new class
|
|
||||||
"admin", # class to base it on
|
|
||||||
array( # parts of the base class to override
|
|
||||||
"override_config" => False,
|
|
||||||
"edit_user_password" => False,
|
|
||||||
"edit_user_info" => False,
|
|
||||||
"delete_user" => False,
|
|
||||||
"manage_extension_list" => False,
|
|
||||||
)
|
|
||||||
),
|
|
||||||
)));
|
|
||||||
|
|
||||||
*/
|
|
||||||
?>
|
?>
|
||||||
|
@ -7,9 +7,13 @@ class UserClass {
|
|||||||
var $abilities = array();
|
var $abilities = array();
|
||||||
|
|
||||||
public function __construct($name, $parent=null, $abilities=array()) {
|
public function __construct($name, $parent=null, $abilities=array()) {
|
||||||
|
global $_user_classes;
|
||||||
|
|
||||||
$this->name = $name;
|
$this->name = $name;
|
||||||
$this->parent = $parent;
|
$this->parent = $parent;
|
||||||
$this->abilities = $abilities;
|
$this->abilities = $abilities;
|
||||||
|
|
||||||
|
$_user_classes[$name] = $this;
|
||||||
}
|
}
|
||||||
|
|
||||||
public function can(/*string*/ $ability) {
|
public function can(/*string*/ $ability) {
|
||||||
@ -17,8 +21,7 @@ class UserClass {
|
|||||||
|
|
||||||
if(array_key_exists($ability, $this->abilities)) {
|
if(array_key_exists($ability, $this->abilities)) {
|
||||||
$val = $this->abilities[$ability];
|
$val = $this->abilities[$ability];
|
||||||
if(is_bool($val)) return $val;
|
return $val;
|
||||||
else return $config->get_bool($val, false);
|
|
||||||
}
|
}
|
||||||
else if(!is_null($this->parent)) {
|
else if(!is_null($this->parent)) {
|
||||||
return $this->parent->can($ability);
|
return $this->parent->can($ability);
|
||||||
@ -32,7 +35,7 @@ class UserClass {
|
|||||||
// action_object_attribute
|
// action_object_attribute
|
||||||
// action = create / view / edit / delete
|
// action = create / view / edit / delete
|
||||||
// object = image / user / tag / setting
|
// object = image / user / tag / setting
|
||||||
$_user_class_base = new UserClass("base", null, array(
|
new UserClass("base", null, array(
|
||||||
"change_setting" => False, # modify web-level settings, eg the config table
|
"change_setting" => False, # modify web-level settings, eg the config table
|
||||||
"override_config" => False, # modify sys-level settings, eg config.php
|
"override_config" => False, # modify sys-level settings, eg config.php
|
||||||
"big_search" => False, # search for more than 3 tags at once (speed mode only)
|
"big_search" => False, # search for more than 3 tags at once (speed mode only)
|
||||||
@ -62,18 +65,21 @@ $_user_class_base = new UserClass("base", null, array(
|
|||||||
|
|
||||||
"protected" => False, # only admins can modify protected users (stops a moderator changing an admin's password)
|
"protected" => False, # only admins can modify protected users (stops a moderator changing an admin's password)
|
||||||
));
|
));
|
||||||
$_user_classes["anonymous"] = new UserClass("anonymous", $_user_class_base, array(
|
|
||||||
"edit_image_tag" => "tag_edit_anon",
|
new UserClass("anonymous", "base", array(
|
||||||
"edit_image_source" => "source_edit_anon",
|
"edit_image_tag" => True,
|
||||||
"create_image_report" => "create_image_report_anon",
|
"edit_image_source" => True,
|
||||||
|
"create_image_report" => True,
|
||||||
));
|
));
|
||||||
$_user_classes["user"] = new UserClass("user", $_user_class_base, array(
|
|
||||||
|
new UserClass("user", "base", array(
|
||||||
"big_search" => True,
|
"big_search" => True,
|
||||||
"edit_image_tag" => True,
|
"edit_image_tag" => True,
|
||||||
"edit_image_source" => True,
|
"edit_image_source" => True,
|
||||||
"create_image_report" => True,
|
"create_image_report" => True,
|
||||||
));
|
));
|
||||||
$_user_classes["admin"] = new UserClass("admin", $_user_class_base, array(
|
|
||||||
|
new UserClass("admin", "base", array(
|
||||||
"change_setting" => True,
|
"change_setting" => True,
|
||||||
"override_config" => True,
|
"override_config" => True,
|
||||||
"big_search" => True,
|
"big_search" => True,
|
||||||
@ -97,10 +103,7 @@ $_user_classes["admin"] = new UserClass("admin", $_user_class_base, array(
|
|||||||
"protected" => True,
|
"protected" => True,
|
||||||
));
|
));
|
||||||
|
|
||||||
foreach(unserialize(EXTRA_USER_CLASSES) as $class_info) {
|
if(file_exists("data/config/user-classes.conf.php")) {
|
||||||
$name = $class_info[0];
|
require_once("data/config/user-classes.conf.php");
|
||||||
$base = $_user_classes[$class_info[1]];
|
|
||||||
$abilities = $class_info[2];
|
|
||||||
$_user_classes[$name] = new UserClass($name, $base, $abilities);
|
|
||||||
}
|
}
|
||||||
?>
|
?>
|
||||||
|
Loading…
x
Reference in New Issue
Block a user