public function test_update_person()
 {
     $called = 0;
     if (!class_exists('midgard_person')) {
         $this->markTestSkipped();
     }
     // Connect
     midgardmvc_core::get_instance()->observation->add_listener(function ($object) use(&$called) {
         $called++;
     }, array('action-update-hook', 'action-update', 'action-updated'), array('midgard_person'));
     $person = new midgard_person(1);
     $person->update();
     $this->assertEquals(3, $called);
 }
Example #2
0
 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;
 }
Example #3
0
/**
 * 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);
}
Example #4
0
 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;
 }
Example #5
0
 /**
  * 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;
 }
Example #6
0
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;
 }
Example #8
0
 /**
  * Returns the first login time of the user, if available.
  *
  * In contrast to get_last_login and is_online this query does not require
  * the isonline privilege, as it is usually used to determine the "age"
  * of a user account in a community.
  *
  * @return int The time of the first login, or zero in case of users which have never
  *     logged in.
  */
 public function get_first_login()
 {
     return (int) $this->_storage->parameter('midcom', 'first_login');
 }