/** * Test Router Url */ public function testRouterFullUrl() { if (!isset($_SERVER['SERVER_NAME'])) { $_SERVER['SERVER_NAME'] = 'localhost'; } $this->assertEquals('http://' . $_SERVER['SERVER_NAME'] . '/', Router::getFullUrl()); }
/** * @param array $data * @throws Exception * @throws ValidatorException * @return integer */ public function createOne($data) { // password $password = $data['password'] ?? null; $password2 = $data['password2'] ?? null; if (empty($password)) { throw ValidatorException::exception('password', __('Password can\'t be empty')); } if ($password !== $password2) { throw ValidatorException::exception('password2', __('Password is not equal')); } if ($data['id'] == '') { unset($data['id']); } /** @var $row Row */ $row = $this->getTable()->create(); $row->setFromArray($data); $row->status = Table::STATUS_PENDING; $row->save(); $userId = $row->id; // create auth Auth\Table::getInstance()->generateEquals($row, $password); // create activation token // valid for 5 days $actionRow = UsersActions\Table::getInstance()->generate($userId, UsersActions\Table::ACTION_ACTIVATION, 5); // send activation email // generate activation URL $activationUrl = Router::getFullUrl('users', 'activation', ['code' => $actionRow->code, 'id' => $userId]); $subject = "Activation"; $body = Application::getInstance()->dispatch('users', 'mail/template', ['template' => 'registration', 'vars' => ['user' => $row, 'activationUrl' => $activationUrl, 'password' => $password]])->render(); try { $mail = Mailer::create(); $mail->Subject = $subject; $mail->msgHTML(nl2br($body)); $mail->addAddress($data['email']); Mailer::send($mail); } catch (\Exception $e) { Logger::log('error', $e->getMessage(), ['module' => 'users', 'controller' => 'change-email', 'userId' => $userId]); throw new Exception('Unable to send email. Please contact administrator.'); } // show notification and redirect Messages::addSuccess("Your account has been created and an activation link has" . "been sent to the e-mail address you entered.<br/>" . "Note that you must activate the account by clicking on the activation link" . "when you get the e-mail before you can login."); // wtf? // redirectTo('index', 'index'); return $userId; }
try { if (empty($password)) { throw new Exception('Password is empty'); } // login/password Auth\Table::getInstance()->checkEquals($user->login, $password); // check email for unique $emailUnique = Users\Table::findRowWhere(['email' => $email]); if ($emailUnique && $emailUnique->id != $userId) { throw new Exception('User with email "' . htmlentities($email) . '" already exists'); } // generate change mail token and get full url $actionRow = UsersActions\Table::getInstance()->generate($userId, Table::ACTION_CHANGE_EMAIL, 5, ['email' => $email]); $changeUrl = Router::getFullUrl('users', 'change-email', ['token' => $actionRow->code]); $subject = __("Change email"); $body = $this->dispatch('users', 'mail/template', ['template' => 'change-email', 'vars' => ['user' => $user, 'email' => $email, 'changeUrl' => $changeUrl, 'profileUrl' => Router::getFullUrl('users', 'profile')]])->render(); try { $mail = Mailer::create(); $mail->Subject = $subject; $mail->msgHTML(nl2br($body)); $mail->addAddress($email); Mailer::send($mail); Messages::addNotice('Check your email and follow instructions in letter.'); } catch (\Exception $e) { Logger::log('error', $e->getMessage(), ['module' => 'users', 'controller' => 'change-email', 'userId' => $userId]); throw new Exception('Unable to send email. Please contact administrator.'); } // try back to index Response::redirectTo('users', 'profile'); } catch (Exception $e) { Messages::addError($e->getMessage());
/** * Test Router Url */ public function testRouterFullUrl() { $this->setRequestParams('/', [], [], Request::METHOD_GET); $this->assertEquals('http://127.0.0.1/', Router::getFullUrl()); }
<?php /** * Generate Swagger configuration * * @author Anton Shevchuk * @created 22.08.12 17:14 */ namespace Application; use Bluz\Proxy\Router; use Swagger\Swagger; return function ($resource = null) { /** * @var Bootstrap $this */ $this->useJson(); $paths = array(PATH_APPLICATION . '/models', PATH_APPLICATION . '/modules'); $exclude = array(); $swagger = new Swagger($paths, $exclude); if ($resource) { return $swagger->getResource('/' . $resource, ['defaultBasePath' => rtrim(Router::getFullUrl(), '/')]); } else { return $swagger->getResourceList(['basePath' => '/system/api/resource']); } };
} // check exists $user = Users\Table::findRowWhere(['email' => $email]); if (!$user) { throw new Exception('Email not found'); } // check status, only for active users if ($user->status != Users\Table::STATUS_ACTIVE) { throw new Exception('User is inactive'); } // create activation token // valid for 5 days $actionRow = UsersActions\Table::getInstance()->generate($user->id, UsersActions\Table::ACTION_RECOVERY, 5); // send activation email // generate restore URL $resetUrl = Router::getFullUrl('users', 'recovery-reset', ['code' => $actionRow->code, 'id' => $user->id]); $subject = "Password Recovery"; $body = $this->dispatch('users', 'mail-template', ['template' => 'recovery', 'vars' => ['user' => $user, 'resetUrl' => $resetUrl]])->render(); try { $mail = Mailer::create(); // subject $mail->Subject = $subject; $mail->MsgHTML(nl2br($body)); $mail->AddAddress($user->email); Mailer::send($mail); } catch (\Exception $e) { // log it Logger::log('error', $e->getMessage(), ['module' => 'users', 'controller' => 'recovery', 'email' => $email]); throw new Exception('Unable to send email. Please contact administrator.'); } // show notification and redirect