Example #1
0
 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());
     }
 }
Example #2
0
 /**
  * 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;
 }
Example #3
0
 /**
  * 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;
 }
Example #4
0
 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;
 }
Example #5
0
 /**
  * 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;
 }
Example #6
0
 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;
         }
     }
 }
Example #7
0
            $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>