Exemplo n.º 1
0
 public function resetAction()
 {
     $request = $this->getRequest();
     if (!JO_Session::get('user[user_id]')) {
         $this->redirect(WM_Router::create($request->getBaseUrl() . '?controller=users&action=login'));
     }
     $done = $request->issetQuery('done');
     if ($done) {
         $this->forward('password', 'done');
     }
     if ($request->isPost()) {
         $validate = new Helper_Validate();
         $validate->_set_rules($request->getPost('email'), $this->translate('E-mail'), 'not_empty;min_length[5];max_length[100];email');
         if ($validate->_valid_form()) {
             $result = Model_Users::forgotPassword($request->getPost('email'));
             if ($result) {
                 if ($result['status']) {
                     $new_password = Model_Users::generatePassword(8);
                     $key_forgot = md5($result['user_id'] . md5($new_password));
                     $add_new_pass = Model_Users::edit($result['user_id'], array('new_password' => $new_password, 'new_password_key' => $key_forgot));
                     if ($add_new_pass) {
                         $is_mail_smtp = JO_Registry::forceGet('config_mail_smtp');
                         $mail = new JO_Mail();
                         if ($is_mail_smtp) {
                             $mail->setSMTPParams(JO_Registry::forceGet('config_mail_smtp_host'), JO_Registry::forceGet('config_mail_smtp_port'), JO_Registry::forceGet('config_mail_smtp_user'), JO_Registry::forceGet('config_mail_smtp_password'));
                         }
                         $this->view->new_password = $new_password;
                         $this->view->user_info = $result;
                         $this->view->forgot_password_href = WM_Router::create($request->getBaseUrl() . '?controller=users&action=login&user_id=' . $result['user_id'] . '&key=' . $key_forgot);
                         $this->view->header_title = JO_Registry::get('site_name');
                         $this->view->base_href = WM_Router::create($request->getBaseUrl());
                         $mail->setFrom(JO_Registry::get('noreply_mail'));
                         $mail->setReturnPath(JO_Registry::get('noreply_mail'));
                         $mail->setSubject($this->translate('Request for forgotten password') . ' ' . JO_Registry::get('site_name'));
                         $mail->setHTML($this->view->render('send_forgot_password_request', 'mail'));
                         $result_send = (int) $mail->send(array($result['email']), $is_mail_smtp ? 'smtp' : 'mail');
                         if ($result_send) {
                             $this->redirect(WM_Router::create($request->getBaseUrl() . '?controller=password&action=reset&done='));
                         } else {
                             $this->view->error = $this->translate('There was an error. Please try again later!');
                         }
                     } else {
                         $this->view->error = $this->translate('There was a problem with the record. Please try again!');
                     }
                 } else {
                     $this->view->error = $this->translate('This profile is not active.');
                 }
             } else {
                 $this->view->error = $this->translate('E-mail address was not found!');
             }
         } else {
             $this->view->error = $validate->_get_error_messages();
         }
     }
     $this->view->form_action = WM_Router::create($request->getBaseUrl() . '?controller=password&action=reset');
     $this->view->children = array('header_part' => 'layout/header_part', 'footer_part' => 'layout/footer_part');
 }
Exemplo n.º 2
0
 public function loginAction()
 {
     $request = $this->getRequest();
     if ($request->getQuery('verify')) {
         if (Model_Users::verifyEmailCheck($request->getQuery('verify'), $request->getParam('user_id'))) {
             JO_Session::set('successful', $this->translate('You verifying your email. Now you can access with the data from e-mail!'));
             $this->redirect(WM_Router::create($request->getBaseUrl() . '?controller=users&action=login'));
         } else {
             $this->view->error = $this->translate('There was a problem with the record. Please try again!');
         }
     } else {
         if (JO_Session::get('user[user_id]')) {
             $this->redirect(WM_Router::create($request->getBaseUrl() . '?controller=users&action=profile&user_id=' . JO_Session::get('user[user_id]')));
         }
     }
     $this->view->successful = false;
     if (JO_Session::get('successful')) {
         $this->view->successful = JO_Session::get('successful');
         JO_Session::clear('successful');
     }
     $this->view->error = false;
     if ($request->getParam('user_id') && $request->getQuery('key')) {
         if (Model_Users::forgotPasswordCheck($request->getQuery('key'), $request->getParam('user_id'))) {
             JO_Session::set('successful', $this->translate('You verifying forgotten password. Now you can access with the data from e-mail!'));
             $this->redirect(WM_Router::create($request->getBaseUrl() . '?controller=users&action=login'));
         } else {
             $this->view->error = $this->translate('There was a problem with the record. Please try again!');
         }
     }
     $referer = $request->getServer('HTTP_REFERER');
     $this->view->next = urlencode($request->getBaseUrl());
     if ($referer) {
         $data = parse_url($referer);
         if (isset($data['host'])) {
             if (str_replace('www.', '', $data['host']) == $request->getDomain()) {
                 $this->view->next = urlencode($referer);
             }
         }
     }
     if ($request->issetPost('next')) {
         $this->view->next = html_entity_decode($request->getPost('next'));
     } elseif ($request->getQuery('popup') == 'true' && $request->issetQuery('next')) {
         $this->view->next = urlencode(html_entity_decode($request->getQuery('next')));
     }
     $this->view->is_forgot_password = (int) $request->getPost('forgot_password');
     if ($request->isPost() && $request->issetPost('login')) {
         $validate = new Helper_Validate();
         $validate->_set_rules($request->getPost('email'), $this->translate('Email Address'), 'not_empty;min_length[5];max_length[100];email');
         if ($request->getPost('forgot_password') != 1) {
             $validate->_set_rules($request->getPost('password'), $this->translate('Password'), 'not_empty;min_length[4];max_length[30]');
         }
         if ($validate->_valid_form()) {
             if ($request->getPost('forgot_password') == 1) {
                 $result = Model_Users::forgotPassword($request->getPost('email'));
                 if ($result) {
                     if ($result['status']) {
                         $new_password = Model_Users::generatePassword(8);
                         $key_forgot = md5($result['user_id'] . md5($new_password));
                         $add_new_pass = Model_Users::edit($result['user_id'], array('new_password' => $new_password, 'new_password_key' => $key_forgot));
                         if ($add_new_pass) {
                             $this->view->new_password = $new_password;
                             $this->view->user_info = $result;
                             $this->view->forgot_password_href = WM_Router::create($request->getBaseUrl() . '?controller=users&action=login&user_id=' . $result['user_id'] . '&key=' . $key_forgot);
                             $this->view->header_title = JO_Registry::get('site_name');
                             $this->view->base_href = WM_Router::create($request->getBaseUrl());
                             $result_send = Model_Email::send($result['email'], JO_Registry::get('noreply_mail'), $this->translate('Request for forgotten password') . ' ' . JO_Registry::get('site_name'), $this->view->render('send_forgot_password_request', 'mail'));
                             if ($result_send) {
                                 JO_Session::set('successful', $this->translate('Was sent the e-mail with instructions for the new password!'));
                                 $this->redirect(WM_Router::create($request->getBaseUrl() . '?controller=users&action=login'));
                             } else {
                                 $this->view->error = $this->translate('There was an error. Please try again later!');
                             }
                         } else {
                             $this->view->error = $this->translate('There was a problem with the record. Please try again!');
                         }
                     } else {
                         $this->view->error = $this->translate('This profile is not active.');
                     }
                 } else {
                     $this->view->error = $this->translate('E-mail address was not found!');
                 }
             } else {
                 $result = Model_Users::checkLogin($request->getPost('email'), $request->getPost('password'));
                 if ($result) {
                     if ($result['status']) {
                         @setcookie('csrftoken_', md5($result['user_id'] . $request->getDomain() . $result['date_added']), time() + 86400 * 366 * 5, '/', '.' . $request->getDomain());
                         JO_Session::set(array('user' => $result));
                         $this->redirect(urldecode($this->view->next));
                     } else {
                         $this->view->error = $this->translate('This profile is not active.');
                     }
                 } else {
                     $this->view->error = $this->translate('E-mail address and password do not match');
                 }
             }
         } else {
             $this->view->error = $validate->_get_error_messages();
         }
     }
     $this->view->login_facebook = WM_Router::create($request->getBaseUrl() . '?controller=facebook&next=' . $this->view->next);
     $this->view->login_twitter = WM_Router::create($request->getBaseUrl() . '?controller=twitter&next=' . $this->view->next);
     $this->view->login_instagram = WM_Router::create($request->getBaseUrl() . '?controller=instagram&next=' . $this->view->next);
     $this->view->login_login = WM_Router::create($request->getBaseUrl() . '?controller=users&action=login');
     if ($request->getQuery('popup') == 'true') {
         $this->view->site_name = JO_Registry::get('site_name');
         $this->view->meta_title = JO_Registry::get('meta_title');
         $this->view->popup = true;
         $this->view->baseUrl = $request->getBaseUrl();
         $this->view->site_logo = $request->getBaseUrl() . 'data/images/logo.png';
         if (JO_Registry::get('site_logo') && file_exists(BASE_PATH . '/uploads' . JO_Registry::get('site_logo'))) {
             $this->view->site_logo = $request->getBaseUrl() . 'uploads' . JO_Registry::get('site_logo');
         }
         $this->setViewChange('loginPopup');
         $this->view->children = array('header_part' => 'layout/header_part', 'footer_part' => 'layout/footer_part');
     } else {
         $this->view->loginPopup = $this->view->render('loginPopup', 'users');
         $this->view->children = array('header_part' => 'layout/header_part', 'footer_part' => 'layout/footer_part');
     }
 }