private function create_account(array $ldapuser, array $tokens) { midgardmvc_core::get_instance()->authorization->enter_sudo('midgardmvc_core'); $transaction = new midgard_transaction(); $transaction->begin(); $qb = new midgard_query_builder('midgard_person'); $qb->add_constraint('firstname', '=', $ldapuser['firstname']); $qb->add_constraint('lastname', '=', $ldapuser['lastname']); $persons = $qb->execute(); if (count($persons) == 0) { $person = new midgard_person(); $person->firstname = $ldapuser['firstname']; $person->lastname = $ldapuser['lastname']; if (!$person->create()) { midgardmvc_core::get_instance()->log(__CLASS__, "Creating midgard_person for LDAP user failed: " . midgard_connection::get_instance()->get_error_string(), 'warning'); $transaction->rollback(); midgardmvc_core::get_instance()->authorization->leave_sudo(); return false; } } else { $person = $persons[0]; } $person->set_parameter('midgardmvc_core_services_authentication_ldap', 'employeenumber', $ldapuser['employeenumber']); $user = new midgard_user(); $user->login = $tokens['login']; $user->password = ''; $user->usertype = 1; $user->authtype = 'LDAP'; $user->active = true; $user->set_person($person); if (!$user->create()) { midgardmvc_core::get_instance()->log(__CLASS__, "Creating midgard_user for LDAP user failed: " . midgard_connection::get_instance()->get_error_string(), 'warning'); $transaction->rollback(); midgardmvc_core::get_instance()->authorization->leave_sudo(); return false; } if (!$transaction->commit()) { midgardmvc_core::get_instance()->authorization->leave_sudo(); return false; } midgardmvc_core::get_instance()->authorization->leave_sudo(); return true; }
/** * do a midgard query for username * return if username alresdy eixst in db * otherwise do an _ldap_search for username * if user exists in LDAP then create an account in db * if user does not exist then .. give up :) */ function ldap_auth_pre_callback($username) { $qb = new midgard_query_builder('midgard_person'); $qb->add_constraint('username', '=', $username); if ($qb->count() > 0) { return; } else { $ldap_user = _ldap_search($username); if ($ldap_user) { $user = new midgard_person(); $user->username = $ldap_user['username']; $user->firstname = $ldap_user['firstname']; $user->email = $ldap_user['email']; $user->create(); // use this parameter to fetch avatars from meego.com $user->set_parameter('org.maemo.socialnews', 'employeenumber', $ldap_user['employeenumber']); } } unset($ldap_user); }
private function get_person_by_name($name) { // We know the real name, try to match to a Midgard Person $name_parts = explode(' ', $_ENV['MIDGARD_ENV_REAL_NAME']); if (count($name_parts) < 2) { return null; } $qb = new midgard_query_builder('midgard_person'); $qb->add_constraint('firstname', '=', $name_parts[0]); $qb->add_constraint('lastname', '=', $name_parts[1]); $persons = $qb->execute(); if (count($persons) > 0) { return $persons[0]; } $person = new midgard_person(); $person->firstname = $name_parts[0]; $person->lastname = $name_parts[1]; $person->create(); return $person; }
/** * Creates and returns a person object */ private function create_person($ldapuser = null, $tokens = null) { if (!$ldapuser) { return false; } $person = new midgard_person(); $firstname = $ldapuser['firstname']; $lastname = $ldapuser['lastname']; if ($firstname == '' || $firstname == '--') { $firstname = $tokens['login']; } if ($lastname == '' || $lastname == '--') { $lastname = ''; } $person->firstname = $firstname; $person->lastname = $lastname; if (!$person->create()) { midgardmvc_core::get_instance()->log(__CLASS__, "Creating midgard_person for LDAP user failed: " . midgard_connection::get_instance()->get_error_string(), 'warning'); $transaction->rollback(); midgardmvc_core::get_instance()->authorization->leave_sudo(); return false; } $person->set_parameter('midgardmvc_core_services_authentication_ldap', 'employeenumber', $ldapuser['employeenumber']); return $person; }
foreach ($classes as $refclass) { $parent_class = $refclass->getParentClass(); if (!$parent_class) { continue; } if ($parent_class->getName() != 'midgard_object') { continue; } $type = $refclass->getName(); midgard_storage::create_class_storage($type); echo " Created storage for {$type}\n"; } $page = new midgardmvc_core_node(); $page->name = 'midgardmvc_root'; $page->title = 'Midgard MVC root page'; $page->content = 'Welcome to Midgard MVC!'; $page->component = 'midgardmvc_core'; if (!$page->create()) { die("Failed to create Midgard MVC root node: " . $midgard->get_error_string() . "\n"); } echo "Created Midgard MVC root page {$page->guid}\n"; $person = new midgard_person(); $person->set_guid('f6b665f1984503790ed91f39b11b5392'); $person->firstname = 'Midgard'; $person->lastname = 'Administrator'; $person->email = '*****@*****.**'; $person->homepage = 'http://www.midgard-project.org/'; $person->birthdate = new midgard_datetime('1999-05-08'); $person->create(); echo "Create Midgard person {$person->firstname} {$person->lastname}\n"; echo "All set up\n";
/** * Creates and returns a midgard_person object * */ private function createUser($login) { # create the person object $person = new midgard_person(); $person->firstname = $login; $person->lastname = $login; if (!$person->create()) { $error = midgard_connection::get_instance()->get_error_string(); midgard_error::error(__CLASS__ . " Failed to create midgard person: " . $error); return false; } else { midgard_error::info(__CLASS__ . " Created midgard person: " . $person->guid); $user = new midgard_user(); $user->login = $login; $user->password = ''; $user->usertype = 1; $user->authtype = $this->config['default_auth_type'] ? $this->config['default_auth_type'] : 'SHA1'; $user->active = true; $user->set_person($person); if (!$user->create()) { $error = midgard_connection::get_instance()->get_error_string(); midgard_error::error(__CLASS__ . "Failed to create midgard user: "******" Created midgard user: " . $user->login); } // @todo: not sure if this is the best solution; // but it is simple to create midgardmvc_account objects // this does not work, as we are not an MVC app /* $dummy_session = new midgardmvc_core_login_session(); $dummy_session->userid = ''; $dummy_session->username = $user->login; $dummy_session->authtype = $user->authtype; midgardmvc_account_injector::create_account_from_session($dummy_session); unset($dummy_session); */ return $user; }