public function add_member($guid) { $qb = midcom_db_member::new_query_builder(); $qb->add_constraint('gid', '=', $this->id); $qb->add_constraint('uid.guid', '=', $guid); if ($qb->count() > 1) { debug_add('Person ' . $guid . ' is already on the user\'s contact list, skipping'); return; } $person = new midcom_db_person($guid); $member = new midcom_db_member(); $member->gid = $this->id; $member->uid = $person->id; if (!$member->create()) { throw new midcom_error('Failed to add new member: ' . midcom_connection::get_error_string()); } }
/** * Helper function, adds the given person to this group. The current user must have * midgard:create privileges on this object for this to succeed. If the person is * already a member of this group, nothing is done. * * @param midcom_db_person The person to add. * @return boolean Indicating success. */ function add_member($person) { $this->require_do('midgard:create'); if ($this->is_member($person)) { return true; } $member = new midcom_db_member(); $member->gid = $this->id; $member->uid = $person->id; if (!$member->create()) { return false; } // Adjust privileges, owner is the group in question. $member->set_privilege('midgard:owner', "group:{$this->guid}"); $member->unset_privilege('midgard:owner'); return true; }
/** * The handler for the index article. * * @param mixed $handler_id the array key from the request array * @param array $args the arguments given to the handler * @param Array &$data The local request data. * @return boolean Indicating success. */ function _handler_manageRequest($handler_id, $args, &$data) { $_MIDCOM->auth->require_admin_user(); $this->_request_data['name'] = "fi.kilonkipinat.accountregistration"; $this->_update_breadcrumb_line($handler_id); $title = $this->_l10n_midcom->get('fi.kilonkipinat.accountregistration'); $_MIDCOM->set_pagetitle(":: {$title}"); $prefix = $this->_request_data['prefix']; $request = new fi_kilonkipinat_accountregistration_accountrequest_dba(trim($args[0])); if (!isset($request) || !isset($request->guid) || $request->guid == '' || $request->guid != $args[0]) { debug_push_class(__CLASS__, __FUNCTION__); debug_pop(); $_MIDCOM->generate_error(MIDCOM_ERRNOTFOUND, 'Failed to load request, cannot continue. Last Midgard error was: ' . midcom_application::get_error_string()); // This will exit. } $this->_request_data['request'] = $request; if (isset($_POST) && isset($_POST['username'])) { if (isset($_POST['isduplicate']) && $_POST['isduplicate'] == '1') { $request->status = FI_KILONKIPINAT_ACCOUNTREGISTRATION_ACCOUNT_STATUS_INVALID; $request->update(); $message['title'] = $this->_l10n_midcom->get("Poistettu"); $message['content'] = $this->_l10n_midcom->get("Kyseinen hakemus on merkattu duplikaatiksi, ts poistettu."); } else { if (isset($_POST['merge_user_guid']) && $_POST['merge_user_guid'] != '') { $person = new fi_kilonkipinat_account_person_dba(trim($_POST['merge_user_guid'])); } else { $qb = fi_kilonkipinat_account_person_dba::new_query_builder(); $qb->add_constraint('username', '=', trim($_POST['username'])); $results = $qb->execute(); if (count($results) > 0) { $message['title'] = $this->_l10n_midcom->get("error"); $message['content'] = $this->_l10n_midcom->get("Kyseinen tyyppi on jo olemassa"); } else { $person = new fi_kilonkipinat_account_person_dba(); $person->username = trim($_POST['username']); $person->create(); } } if (isset($person)) { $person->firstname = $request->firstname; $person->lastname = $request->lastname; $person->email = $request->email; $password = fi_kilonkipinat_accountregistration_viewer::generatePassword($this->_config->get('password_length')); // Enforce crypt mode $salt = chr(rand(64, 126)) . chr(rand(64, 126)); $crypt_password = crypt($password, $salt); $person->password = $crypt_password; $person->update(); if (isset($_POST['add_to_groups']) && count($_POST['add_to_groups']) > 0) { foreach ($_POST['add_to_groups'] as $group_guid) { $group = new midcom_db_group($group_guid); if (isset($group) && isset($group->guid) && $group->guid == $group_guid) { $membership = new midcom_db_member(); $membership->uid = $person->id; $membership->gid = $group->id; $membership->create(); } } } $person->set_privilege('midgard:owner', "user:{$person->guid}"); $request->status = FI_KILONKIPINAT_ACCOUNTREGISTRATION_ACCOUNT_STATUS_RESOLVED; $request->personGuid = $person->guid; $request->update(); $subject = 'Tunnuksesi kilonkipinat.fi-sivustolle'; $body = sprintf('Hei %s', $person->firstname); $body .= "\n\n"; $body .= sprintf('käyttäjätunnus: %s', $person->username); $body .= "\n\n"; $body .= sprintf('salasana: %s', $password); $mail = new org_openpsa_mail(); $mail->from = $this->_config->get('mail_sender_title') . ' <' . $this->_config->get('mail_sender_address') . '>'; $mail->to = $person->firstname . ' ' . $person->lastname . ' <' . $person->email . '>'; $mail->body = $body; $mail->subject = $subject; $message = array(); if ($mail->send('mail')) { $message['title'] = $this->_l10n_midcom->get("Onnistui"); $message['content'] = ''; } else { $message['title'] = $this->_l10n_midcom->get("error"); $message['content'] = $this->_l10n_midcom->get("Oops, something went wrong."); } } } $this->_request_data['message'] = $message; } return true; }
private function _import_subscribers_organization_member($subscriber, $person, $organization) { // Check if person is already in organization $member = null; $qb = midcom_db_member::new_query_builder(); $qb->add_constraint('uid', '=', $person->id); $qb->add_constraint('gid', '=', $organization->id); $members = $qb->execute_unchecked(); if (count($members) > 0) { // Match found, use it // Use first match $member = $members[0]; } if (!$member) { // We didn't have person matching the email in DB. Create a new one. $member = new midcom_db_member(); $member->uid = $person->id; $member->gid = $organization->id; if (!$member->create()) { $this->_request_data['new_objects']['organization_member'] =& $member; debug_add("Failed to create organization member, reason " . midcom_connection::get_error_string()); return false; } } if (!$this->_datamanager_process('organization_member', $subscriber, $member)) { return false; } return $member; }
/** * Adds a user to a given Midgard Group. Caller must ensure access permissions * are right. * * @param string $name The name of the group we should be added to. * @return boolean Indicating success. * * @todo Check if user is already assigned to the group. */ function add_to_group($name) { $group = midcom::get('auth')->get_midgard_group_by_name($name); if (!$group) { debug_add("Failed to add the person {$this->id} to group {$name}, the group does not exist.", MIDCOM_LOG_WARN); return false; } $storage = $group->get_storage(); $member = new midcom_db_member(); $member->uid = $this->id; $member->gid = $storage->id; if (!$member->create()) { debug_add("Failed to add the person {$this->id} to group {$name}, object could not be created.", MIDCOM_LOG_WARN); debug_add('Last Midgard error was: ' . midcom_connection::get_error_string(), MIDCOM_LOG_WARN); debug_print_r('Tried to create this object:', $member); return false; } return true; }
private function _batch_process() { foreach ($_POST['midcom_admin_user'] as $person_id) { try { if (is_numeric($person_id)) { $person = new midcom_db_person((int) $person_id); } else { $person = new midcom_db_person($person_id); } } catch (midcom_error $e) { continue; } switch ($_POST['midcom_admin_user_action']) { case 'removeaccount': if (!$this->_config->get('allow_manage_accounts')) { break; } $person->parameter('midcom.admin.user', 'username', $person->username); $person->username = ''; $person->password = ''; if ($person->update()) { midcom::get('uimessages')->add($this->_l10n->get('midcom.admin.user'), sprintf($this->_l10n->get('user account revoked for %s'), $person->name)); } break; case 'groupadd': if (isset($_POST['midcom_admin_user_group'])) { $member = new midcom_db_member(); $member->uid = $person->id; $member->gid = (int) $_POST['midcom_admin_user_group']; if ($member->create()) { midcom::get('uimessages')->add($this->_l10n->get('midcom.admin.user'), sprintf($this->_l10n->get('user %s added to group'), $person->name)); } } break; } } }
$person->username = $username; // Generate a random password and activation Hash $password = '******'; $length = 8; // Create a random password for ($i = 0; $i < $length; $i++) { $password .= chr(rand(97, 122)); } $person->password = $password; $person->create(); $group = new midcom_db_group(); $group->get_by_path('/kkp_admins/editoijat'); $member = new midcom_db_member(); $member->uid = $person->id; $member->gid = $group->id; $member->create(); $mail = new org_openpsa_mail(); $mail->from = '*****@*****.**'; $mail->subject = '[KKp-web] Tunnukset sivustolle'; $mail->body = "Hei\n\nTunnus: " . $username; $mail->body .= "\nSalasana: " . str_replace('**', '', $password); $mail->to = $person->email; $mail->send(); $status = 'Tunnukset lähetetty.'; } } $_MIDCOM->auth->drop_sudo(); } ?> <h1>&(view['title']:h);</h1>