config = $config; // Set driver name $driver = "Identity_".ucfirst($this->config["driver"])."_Driver"; // Load the driver if ( ! Kohana::auto_load($driver)) { throw new Kohana_Exception("core.driver_not_found", $this->config["driver"], get_class($this)); } // Initialize the driver $this->driver = new $driver($this->config["params"]); // Validate the driver if ( !($this->driver instanceof Identity_Driver)) throw new Kohana_Exception("core.driver_implements", $this->config["driver"], get_class($this), "Identity_Driver"); Kohana::log("debug", "Identity Library initialized"); } } /** * Determine if a feature is supported by the driver. * * @param string $feature the name of the feature to check * @return boolean true if supported */ public function is_writable() { return !empty($this->config["allow_updates"]); } /** * Return the guest user. * * @todo consider caching * * @return Identity_Model */ public function guest() { return $this->driver->guest(); } /** * Create a new user. * * @param string $name * @param string $full_name * @param string $password * @return Identity_Model */ public function create_user($name, $full_name, $password) { return $this->driver->create_user($name, $full_name, $password); } /** * Is the password provided correct? * * @param user Identity Model * @param string $password a plaintext password * @return boolean true if the password is correct */ public function is_correct_password($user, $password) { return $this->driver->is_correct_password($user, $password); } /** * Create the hashed passwords. * @param string $password a plaintext password * @return string hashed password */ public function hash_password($password) { return $this->driver->hash_password($password); } /** * Look up a user by field value. * @param string search field * @param string search value * @return Identity_Model the user object, or null if the name was invalid. */ public function lookup_user_by_field($field_name, $value) { return $this->driver->lookup_user_by_field($field_name, $value); } /** * Create a new group. * * @param string $name * @return Group_Model */ public function create_group($name) { return $this->driver->create_group($name); } /** * The group of all possible visitors. This includes the guest user. * * @return Group_Model */ public function everybody() { return $this->driver->everybody(); } /** * The group of all logged-in visitors. This does not include guest users. * * @return Group_Model */ public function registered_users() { return $this->driver->everybody(); } /** * Look up a group by name. * @param integer $id the group name * @return Group_Model the group object, or null if the name was invalid. */ public function lookup_group_by_field($field_name, $value) { return $this->driver->lookup_group_by_field($field_name, $value); } /** * List the users * @param mixed options to apply to the selection of the user * @return array the group list. */ public function get_user_list($filter=array()) { return $this->driver->get_user_list($filter); } /** * List the groups * @param mixed options to apply to the selection of the user * @return array the group list. */ public function get_group_list($filter=array()) { return $this->driver->get_group_list($filter); } /** * Return the edit rules associated with an group. * * @param string $object_type to return rules for ("user"|"group") * @return stdClass containing the rules */ public function get_edit_rules($object_type) { return $this->driver->get_edit_rules($object_type); } } // End Identity