Exemplo n.º 1
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_validateEmail($handler_id, $args, &$data)
 {
     $message = array();
     $account_request = new fi_kilonkipinat_accountregistration_accountrequest_dba(trim($args[0]));
     if (isset($account_request) && isset($account_request->guid) && $account_request->guid == trim($args[0]) && $account_request->status == FI_KILONKIPINAT_ACCOUNTREGISTRATION_ACCOUNT_STATUS_NEW) {
         $_MIDCOM->auth->request_sudo('fi.kilonkipinat.accountregistration');
         $account_request->status = FI_KILONKIPINAT_ACCOUNTREGISTRATION_ACCOUNT_STATUS_EMAILVALIDATED;
         $account_request->update();
         $message['title'] = $this->_l10n_midcom->get("Sähköpostiosoite varmistettu");
         $message['content'] = $this->_l10n_midcom->get("Tunnuspyyntönne on nyt lähetetty eteenpäin sivuston ylläpitäjille, jotka palaavat asiaan sähköpostitse.");
         if ($this->_config->get('moderator') != null && $this->_config->get('moderator') != '') {
             $moderator = new midcom_db_person($this->_config->get('moderator'));
             if ($moderator->guid != '' && $moderator->guid == $this->_config->get('moderator')) {
                 $mail = new org_openpsa_mail();
                 $mail->from = $this->_config->get('mail_sender_title') . ' <' . $this->_config->get('mail_sender_address') . '>';
                 $mail->to = $moderator->firstname . ' ' . $moderator->lastname . ' <' . $moderator->email . '>';
                 $mail->body = "Henkilö " . $account_request->firstname . ' ' . $account_request->lastname . " on vahvistanut sähköpostiosoitteensa. \n\n";
                 $mail->body .= "Käy hyväksymässä tai estämässä tunnus osoitteessa http://kilonkipinat.fi/recovery/manage_request/" . $account_request->guid . "/\n\n";
                 $mail->body .= "Muita tunnuspyyntöjä voit tarkastella osoitteessa http://kilonkipinat.fi/recovery/list_pending/";
                 $mail->subject = "Uusi tunnuspyyntö kipinöiden sivuilla.";
                 $mail->send('mail');
             }
         }
         $_MIDCOM->auth->drop_sudo('fi.kilonkipinat.accountregistration');
     } else {
         $message['title'] = $this->_l10n_midcom->get("Virhe");
         $message['content'] = $this->_l10n_midcom->get("Tunnuspyyntöä ei löydetty. Sähköposti voi olla jo varmistettu.");
     }
     $this->_request_data['message'] = $message;
     return true;
 }
Exemplo n.º 2
0
 function _on_execute()
 {
     debug_push_class(__CLASS__, __FUNCTION__);
     if (!$_MIDCOM->auth->request_sudo('fi.kilonkipinat.accountregistration')) {
         $msg = "Could not get sudo, aborting operation, see error log for details";
         $this->print_error($msg);
         debug_add($msg, MIDCOM_LOG_ERROR);
         debug_pop();
         return;
     }
     $time_for_old = date('Y-m-d 00:00', time() - 3600 * 24);
     $qb_resetrequests = fi_kilonkipinat_accountregistration_resetrequest_dba::new_query_builder();
     $qb_resetrequests->add_constraint('metadata.revised', '<', $time_for_old);
     $qb_resetrequests->add_constraint('status', '=', FI_KILONKIPINAT_ACCOUNTREGISTRATION_PASSWORDRESETREQUEST_STATUS_NEW);
     $results = $qb_resetrequests->execute();
     foreach ($results as $result) {
         $result->status = FI_KILONKIPINAT_ACCOUNTREGISTRATION_PASSWORDRESETREQUEST_STATUS_INVALID;
         $result->update();
     }
     $time_for_old = date('Y-m-d 00:00', time() - 3600 * 24 * 31);
     $qb_accounts = fi_kilonkipinat_accountregistration_accountrequest_dba::new_query_builder();
     $qb_accounts->add_constraint('metadata.revised', '<', $time_for_old);
     $qb_accounts->add_constraint('status', '=', FI_KILONKIPINAT_ACCOUNTREGISTRATION_ACCOUNT_STATUS_NEW);
     $results2 = $qb_accounts->execute();
     foreach ($results2 as $result) {
         $result->status = FI_KILONKIPINAT_ACCOUNTREGISTRATION_ACCOUNT_STATUS_INVALID;
         $result->update();
     }
     $_MIDCOM->auth->drop_sudo();
     debug_pop();
 }
Exemplo n.º 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_index($handler_id, $args, &$data)
 {
     $this->_request_data['name'] = "fi.kilonkipinat.account";
     $this->_update_breadcrumb_line($handler_id);
     $title = $this->_l10n_midcom->get('index');
     $_MIDCOM->set_pagetitle(":: {$title}");
     $root_group_guid = $this->_config->get('root_group_to_show');
     $persons = array();
     if (isset($root_group_guid) && $root_group_guid != null && $root_group_guid != '') {
         $root_group = new midcom_db_group($root_group_guid);
         if ($root_group && $root_group->guid == $root_group_guid) {
             $mc_members = midcom_db_member::new_collector('gid', $root_group->id);
             $mc_members->add_value_property('uid');
             $mc_members->execute();
             $member_guids = $mc_members->list_keys();
             $member_ids = array();
             foreach ($member_guids as $guid => $array) {
                 $member_ids[] = $mc_members->get_subkey($guid, 'uid');
             }
             $qb_persons = fi_kilonkipinat_account_person_dba::new_query_builder();
             $qb_persons->add_constraint('id', 'IN', $member_ids);
             $qb_persons->add_order('lastname', 'ASC');
             $qb_persons->add_order('nickname', 'ASC');
             $qb_persons->add_order('firstname', 'ASC');
             $persons = $qb_persons->execute();
         }
     }
     $this->_request_data['requests'] = '';
     if ($_MIDCOM->auth->admin) {
         $regs_topic = midcom_helper_find_node_by_component('fi.kilonkipinat.accountregistration');
         $regs_prefix = '';
         if ($regs_topic) {
             $regs_prefix = $regs_topic['18'];
         }
         $mc = fi_kilonkipinat_accountregistration_accountrequest_dba::new_collector('status', FI_KILONKIPINAT_ACCOUNTREGISTRATION_ACCOUNT_STATUS_EMAILVALIDATED);
         //            $mc->add_constraint('status', '=', fi_kilonkipinat_accountregistration_interface::FI_KILONKIPINAT_ACCOUNTREGISTRATION_ACCOUNT_STATUS_EMAILVALIDATED);
         $requests_count = $mc->count();
         if ($requests_count > 0 && $regs_prefix != '') {
             $this->_request_data['requests'] = '<a href="' . $regs_prefix . 'list_pending/">' . $requests_count . ' tunnushakemusta</a>';
         }
     }
     $this->_request_data['persons'] = $persons;
     return true;
 }
Exemplo n.º 4
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;
 }
Exemplo n.º 5
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_index($handler_id, $args, &$data)
 {
     $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'];
     $this->_request_data['sort_order'] = $this->_config->get('sort_order');
     if (isset($_POST) && isset($_POST['action_type']) && ($_POST['action_type'] == 'reset_password' || $_POST['action_type'] == 'registration')) {
         $_MIDCOM->auth->request_sudo('fi.kilonkipinat.accountregistration');
         if ($_POST['action_type'] == 'reset_password') {
             if (trim($_POST['username']) == '') {
                 $error_msg = 'Täytä käyttäjätunnus-kenttä';
             } else {
                 $qb = fi_kilonkipinat_account_person_dba::new_query_builder();
                 $qb->add_constraint('username', '=', trim($_POST['username']));
                 $qb->set_limit(1);
                 $user = $qb->execute();
                 if (isset($user) && count($user) > 0) {
                     $reset_request = new fi_kilonkipinat_accountregistration_resetrequest_dba();
                     $reset_request->username = $user[0]->username;
                     $reset_request->person = $user[0]->id;
                     $reset_request->status = FI_KILONKIPINAT_ACCOUNTREGISTRATION_PASSWORDRESETREQUEST_STATUS_NEW;
                     $reset_request->create();
                     $reset_request_quid = $reset_request->guid;
                     $subject = sprintf('Salasanan vaihto palvelimella %s', $_SERVER['SERVER_NAME']);
                     $body = sprintf('Hei %s', $user[0]->firstname);
                     $body .= "\n\n";
                     $body .= sprintf($this->_l10n_midcom->get('Pyysit salasanasi resetointia palvelimella %s'), $_SERVER['SERVER_NAME']);
                     $body .= "\n\n";
                     $body .= sprintf($this->_l10n_midcom->get('Resetoidaksesi salasanasi käyttäjätunnukselle %s, klikkaa alla olevaa linkkiä'), $user[0]->username);
                     $body .= "\n\n";
                     $body .= 'http://' . $_SERVER['SERVER_NAME'] . $prefix . 'approve_reset/' . $reset_request_quid . '/';
                     $mail = new org_openpsa_mail();
                     $mail->from = $this->_config->get('mail_sender_title') . ' <' . $this->_config->get('mail_sender_address') . '>';
                     $mail->to = $user[0]->firstname . ' ' . $user[0]->lastname . ' <' . $user[0]->email . '>';
                     $mail->body = $body;
                     $mail->subject = $subject;
                     if ($mail->send('mail')) {
                         $success_msg = $this->_l10n_midcom->get("Salasanan resetointipyyntö vastaanotettu, katso sähköpostiasi.");
                     }
                 }
             }
         } elseif ($_POST['action_type'] == 'registration') {
             if ($_POST['firstname'] == '' || $_POST['lastname'] == '' || $_POST['email'] == '') {
                 $error_msg = 'Täytä kaikki pakolliset kentät';
             } else {
                 $accountrequest = new fi_kilonkipinat_accountregistration_accountrequest_dba();
                 $accountrequest->firstname = $_POST['firstname'];
                 $accountrequest->lastname = $_POST['lastname'];
                 $accountrequest->email = $_POST['email'];
                 $accountrequest->status = FI_KILONKIPINAT_ACCOUNTREGISTRATION_ACCOUNT_STATUS_NEW;
                 $accountrequest->create();
                 $accountrequest_quid = $accountrequest->guid;
                 $subject = sprintf('Käyttäjätunnuksen rekisteröinti palvelimelle %s', $_SERVER['SERVER_NAME']);
                 $body = sprintf('Hei %s', $accountrequest->firstname);
                 $body .= "\n\n";
                 $body .= sprintf($this->_l10n_midcom->get('Käyttäjätunnuksen rekisteröinti palvelimelle %s.'), $_SERVER['SERVER_NAME']);
                 $body .= "\n\n";
                 $body .= $this->_l10n_midcom->get('Varmistaaksesi sähköpostisi, klikkaa alla olevaa linkkiä');
                 $body .= "\n\n";
                 $body .= 'http://' . $_SERVER['SERVER_NAME'] . $prefix . 'validate_email/' . $accountrequest_quid . '/';
                 $mail = new org_openpsa_mail();
                 $mail->from = $this->_config->get('mail_sender_title') . ' <' . $this->_config->get('mail_sender_address') . '>';
                 $mail->to = $accountrequest->firstname . ' ' . $accountrequest->lastname . ' <' . $accountrequest->email . '>';
                 $mail->body = $body;
                 $mail->subject = $subject;
                 if ($mail->send('mail')) {
                     $success_msg = 'Käyttäjätunnuksen rekisteröinti vastaanotettu, katso sähköpostisi';
                 }
             }
         }
         $_MIDCOM->auth->drop_sudo('fi.kilonkipinat.accountregistration');
     }
     $message = array();
     if (isset($success_msg) && $success_msg != '') {
         $message['title'] = 'Onnistui';
         $message['content'] = $success_msg;
         $this->_request_data['message'] = $message;
     }
     if (isset($error_msg) && $error_msg != '') {
         $message['title'] = 'Virhe';
         $message['content'] = $error_msg;
         $this->_request_data['message'] = $message;
     }
     return true;
 }