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.

This commit is contained in:
Tim Almdal
2008-11-10 20:17:09 +00:00
parent ddf0a51900
commit 0a8d5edbdc
6 changed files with 451 additions and 65 deletions
+5 -63
View File
@@ -22,71 +22,13 @@ class user_installer {
public static function install() {
Kohana::log("debug", "user_installer::install");
$db = Database::instance();
try {
$base_version = ORM::factory("module")->where("name", "user")->find()->version;
} catch (Exception $e) {
if ($e->getCode() == E_DATABASE_ERROR) {
$base_version = 0;
} else {
Kohana::log("error", $e);
throw $e;
}
}
Kohana::log("debug", "base_version: $base_version");
if ($base_version == 0) {
$db->query("CREATE TABLE IF NOT EXISTS `users` (
`id` int(9) NOT NULL auto_increment,
`name` varchar(255) NOT NULL,
`display_name` char(255) NOT NULL,
`email` int(9) default NULL,
PRIMARY KEY (`id`),
UNIQUE KEY(`display_name`))
ENGINE=InnoDB DEFAULT CHARSET=utf8;");
$db->query("CREATE TABLE IF NOT EXISTS`groups` (
`id` int(9) NOT NULL auto_increment,
`name` char(255) default NULL,
PRIMARY KEY (`id`),
UNIQUE KEY(`name`))
ENGINE=InnoDB DEFAULT CHARSET=utf8;");
$db->query("CREATE TABLE IF NOT EXISTS `groups_users` (
`group_id` int(9) NOT NULL,
`user_id` int(9) NOT NULL,
PRIMARY KEY (`group_id`, `user_id`),
UNIQUE KEY(`user_id`, `group_id`))
ENGINE=InnoDB DEFAULT CHARSET=utf8;");
$user_module = ORM::factory("module")->where("name", "user")->find();
$user_module->name = "user";
$user_module->version = 1;
$user_module->save();
$user = ORM::factory("user")->where("display_name", "admin")->find();
$user->name = "admin";
$user->display_name = "Gallery Administrator";
$user->save();
$id = $user->id;
$db->query("UPDATE `items` SET `owner_id` = $id WHERE `owner_id` IS NULL");
foreach (array("administrator", "registered") as $group_name) {
$group = ORM::factory("group")->where("name", $group_name)->find();
$group->name = $group_name;
$group->save();
if (!$group->add($user)) {
throw new Exception("@todo {$user->name} WAS_NOT_ADDED_TO {$group_name}");
}
}
}
$user = User::instance();
$user->install();
}
public static function uninstall() {
$db = Database::instance();
$db->query("DROP TABLE IF EXISTS `users`;");
$db->query("DROP TABLE IF EXISTS `groups`;");
$db->query("DROP TABLE IF EXISTS `groups_users`;");
ORM::factory("module")->where("name", "user")->find()->delete();
Kohana::log("debug", "user_installer::install");
$user = User::instance();
$user->uninstall();
}
}