From ff40907fe30895986b838600ecc86cfe0081421c Mon Sep 17 00:00:00 2001 From: Shish Date: Tue, 14 Feb 2012 21:11:23 +0000 Subject: [PATCH] and commit the file... --- core/userclass.class.php | 94 ++++++++++++++++++++++++++++++++++++++++ 1 file changed, 94 insertions(+) create mode 100644 core/userclass.class.php diff --git a/core/userclass.class.php b/core/userclass.class.php new file mode 100644 index 00000000..472145e3 --- /dev/null +++ b/core/userclass.class.php @@ -0,0 +1,94 @@ +name = $name; + $this->parent = $parent; + $this->abilities = $abilities; + } + + public function can(/*string*/ $ability) { + global $config; + + if(array_key_exists($ability, $this->abilities)) { + $val = $this->abilities[$ability]; + if(is_bool($val)) return $val; + else return $config->get_bool($val, false); + } + else if(!is_null($this->parent)) { + return $this->parent->can($ability); + } + else { + die("Unknown ability: ".html_escape($ability)); + } + } +} + +$_user_class_base = new UserClass("base", null, array( + "change_setting" => False, # web-level settings, eg the config table + "override_config" => False, # sys-level config, eg config.php + "big_search" => False, # more than 3 tags (speed mode only) + "lock_image" => False, + "view_ip" => False, # view IP addresses associated with things + "ban_ip" => False, + "change_password" => False, + "change_user_info" => False, + "delete_user" => False, + "delete_image" => False, + "delete_comment" => False, + "replace_image" => False, + "manage_extension_list" => False, + "manage_alias_list" => False, + "edit_image_tag" => False, + "edit_image_source" => False, + "edit_image_owner" => False, + "mass_tag_edit" => False, + "report_image" => False, + "view_image_report" => False, +)); +$_user_classes["anonymous"] = new UserClass("anonymous", $_user_class_base, array( + "edit_image_tag" => "tag_edit_anon", + "edit_image_source" => "source_edit_anon", + "report_image" => "report_image_anon", +)); +$_user_classes["user"] = new UserClass("user", $_user_class_base, array( + "big_search" => True, + "edit_image_tag" => True, + "edit_image_source" => True, + "report_image" => True, +)); +$_user_classes["admin"] = new UserClass("admin", $_user_class_base, array( + "change_setting" => True, + "override_config" => True, + "big_search" => True, + "lock_image" => True, + "view_ip" => True, + "ban_ip" => True, + "change_password" => True, + "change_user_info" => True, + "delete_user" => True, + "delete_image" => True, + "delete_comment" => True, + "replace_image" => True, + "manage_extension_list" => True, + "manage_alias_list" => True, + "edit_image_tag" => True, + "edit_image_source" => True, + "edit_image_owner" => True, + "mass_tag_edit" => True, + "report_image" => True, + "view_image_report" => True, +)); + +foreach(unserialize(EXTRA_USER_CLASSES) as $class_info) { + $name = $class_info[0]; + $base = $_user_classes[$class_info[1]]; + $abilities = $class_info[2]; + $_user_classes[$name] = new UserClass($name, $base, $abilities); +} +?>