/** * 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); }
/** * 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; }