From 0a8d5edbdc8e3e251f29b7370fdc2e594b06446f Mon Sep 17 00:00:00 2001 From: Tim Almdal Date: Mon, 10 Nov 2008 20:17:09 +0000 Subject: Early look at the User/Auth module refactoring. It will look for a driver based on the contents of the user/config/user.php file. And load that driver based on the User_Driver interface. There is a default User_Gallery_Driver class that will provide the actual interface implementation. Replacing this driver will allow a completely different user and authentication implementation to be used... hopefully will reduce issues with embedding and other user management systems. Removed from unit tests so they will still run. --- modules/user/libraries/User.php | 196 ++++++++++++++++++++++++++++++++++++++++ 1 file changed, 196 insertions(+) create mode 100644 modules/user/libraries/User.php (limited to 'modules/user/libraries/User.php') diff --git a/modules/user/libraries/User.php b/modules/user/libraries/User.php new file mode 100644 index 00000000..a32c5691 --- /dev/null +++ b/modules/user/libraries/User.php @@ -0,0 +1,196 @@ +_driver = $driver; + $this->_config = $config; + + Kohana::log('debug', 'Auth Library initialized'); + } + + /** + * @see User_Driver::install + */ + public function install() { + $this->_driver->install(); + + $user_module = ORM::factory("module")->where("name", "user")->find(); + $user_module->name = "user"; + $user_module->version = 1; + $user_module->save(); + + $user = $this->_driver->get_user_by_name("admin"); + if (!$user->loaded) { + $user = $this->_driver->create_user("admin", "admin", "admin"); + } + + foreach (array("administrator", "registered") as $group_name) { + $group = $user = $this->_driver->get_group_by_name($group_name); + if (!$group->loaded) { + $group = $this->_driver->create_group($group_name); + // Don't assume we can use ORM relationship to join groups and users. Use the interface. + $this->_driver->add_user_to_group($group->id, $user->id); + } + } + + $db = Database::instance(); + $db->query("UPDATE `items` SET `owner_id` = {$user->id} WHERE `owner_id` IS NULL"); + } + + /** + * @see User_Driver::uninstall + */ + public function uninstall() { + $this->_driver->uninstall(); + ORM::factory("module")->where("name", "user")->find()->delete(); + } + + /** + * @see User_Driver::install + */ + public function create_user($name, $display_name, $password, $email=null) { + $this->_driver->create_user($name, $display_name, $password, $email); + } + + /** + * @see User_Driver::update_user + */ + public function update_user($id, $name, $display_name, $password, $email=null) { + $this->_driver->update_user($id, $name, $display_name, $password, $email); + } + + /** + * @see User_Driver::get_user + */ + public function get_user($id) { + $this->_driver->get_user($id); + } + + /** + * @see User_Driver::get_user_by_name + */ + public function get_user_by_name($name) { + $this->_driver->get_user_by_name($name); + } + + /** + * @see User_Driver::delete_user + */ + public function delete_user($id) { + $this->_driver->delete_user($id); + } + + /** + * @see User_Driver::create_group + */ + public function create_group($group_name) { + $this->_driver->create_group($group_name); + } + + /** + * @see User_Driver::rename_group + */ + public function rename_group($id, $new_name) { + $this->_driver->rename_group($id, $new_name); + } + + /** + * @see User_Driver::get_group + */ + public function get_group($id) { + $this->_driver->get_group($id); + } + + /** + * @see User_Driver::get_group_by_name + */ + public function get_group_by_name($group_name) { + $this->_driver->get_group_by_name($group_name); + } + + /** + * @see User_Driver::delete_group + */ + public function delete_group($id) { + $this->_driver->delete_group($id); + } + + /** + * @see User_Driver::add_user_to_group + */ + public function add_user_to_group($group_id, $user_id) { + $this->_driver->add_user_to_group($group_id, $user_id); + } + + /** + * @see User_Driver::remove_user_from_group + */ + public function remove_user_from_group($group_id, $user_id) { + $this->_driver->remove_user_from_group($group_id, $user_id); + } +} \ No newline at end of file -- cgit v1.2.3