feat(cloudron): add tirreno package artifacts
- Add CloudronStack/output/CloudronPackages-Artifacts/tirreno/ directory and its contents - Includes package manifest, Dockerfile, source code, documentation, and build artifacts - Add tirreno-1761840148.tar.gz as a build artifact - Add tirreno-cloudron-package-1761841304.tar.gz as the Cloudron package - Include all necessary files for the tirreno Cloudron package This adds the complete tirreno Cloudron package artifacts to the repository.
This commit is contained in:
@@ -0,0 +1,146 @@
|
||||
<?php
|
||||
|
||||
/**
|
||||
* Tirreno ~ Open source user analytics
|
||||
* Copyright (c) Tirreno Technologies Sàrl (https://www.tirreno.com)
|
||||
*
|
||||
* Licensed under GNU Affero General Public License version 3 of the or any later version.
|
||||
* For full copyright and license information, please see the LICENSE
|
||||
* Redistributions of files must retain the above copyright notice.
|
||||
*
|
||||
* @copyright Copyright (c) Tirreno Technologies Sàrl (https://www.tirreno.com)
|
||||
* @license https://opensource.org/licenses/AGPL-3.0 AGPL License
|
||||
* @link https://www.tirreno.com Tirreno(tm)
|
||||
*/
|
||||
|
||||
namespace Controllers\Pages;
|
||||
|
||||
class Signup extends Base {
|
||||
public $page = 'Signup';
|
||||
|
||||
public function getPageParams() {
|
||||
$model = new \Models\Operator();
|
||||
if (count($model->getAll())) {
|
||||
$this->f3->error(404);
|
||||
}
|
||||
|
||||
$pageParams = [
|
||||
'HTML_FILE' => 'signup.html',
|
||||
'TIMEZONES' => \Utils\TimeZones::timeZonesList(),
|
||||
];
|
||||
|
||||
if ($this->isPostRequest()) {
|
||||
$params = $this->f3->get('POST');
|
||||
$errorCode = $this->validate($params);
|
||||
|
||||
$pageParams['ERROR_CODE'] = $errorCode;
|
||||
|
||||
if ($errorCode) {
|
||||
$pageParams['VALUES'] = $params;
|
||||
} else {
|
||||
$operatorModel = $this->addUser($params);
|
||||
|
||||
$operatorId = $operatorModel->id;
|
||||
$apiKey = $this->addDefaultApiKey($operatorId);
|
||||
$this->addDefaultRules($apiKey);
|
||||
|
||||
//$this->sendActivationEmail($operatorModel);
|
||||
$pageParams['SUCCESS_CODE'] = \Utils\ErrorCodes::ACCOUNT_CREATED;
|
||||
}
|
||||
}
|
||||
|
||||
return parent::applyPageParams($pageParams);
|
||||
}
|
||||
|
||||
private function addDefaultApiKey($operatorId) {
|
||||
$data = [
|
||||
'quote' => $this->f3->get('DEFAULT_API_KEY_QUOTE'),
|
||||
'operator_id' => $operatorId,
|
||||
'skip_enriching_attributes' => \json_encode(array_keys(\Utils\Constants::get('ENRICHING_ATTRIBUTES'))),
|
||||
'skip_blacklist_sync' => true,
|
||||
];
|
||||
|
||||
$model = new \Models\ApiKeys();
|
||||
|
||||
return $model->add($data);
|
||||
}
|
||||
|
||||
private function addDefaultRules(int $apiKey): void {
|
||||
$model = new \Models\OperatorsRules();
|
||||
$defaultRules = \Utils\Constants::get('DEFAULT_RULES');
|
||||
|
||||
if (\Utils\Variables::getEmailPhoneAllowed()) {
|
||||
$defaultRules = array_merge($defaultRules, \Utils\Constants::get('DEFAULT_RULES_EXTENSION'));
|
||||
}
|
||||
|
||||
foreach ($defaultRules as $key => $value) {
|
||||
$model->updateRule($key, $value, $apiKey);
|
||||
}
|
||||
}
|
||||
|
||||
private function addUser($data) {
|
||||
$model = new \Models\Operator();
|
||||
$model->add($data);
|
||||
|
||||
return $model;
|
||||
}
|
||||
|
||||
private function sendActivationEmail(\Models\Operator $operatorModel): void {
|
||||
$url = \Utils\Variables::getSiteWithProtocol();
|
||||
|
||||
$toName = $operatorModel->firstname;
|
||||
$toAddress = $operatorModel->email;
|
||||
$activationKey = $operatorModel->activation_key;
|
||||
|
||||
$subject = $this->f3->get('Signup_activation_email_subject');
|
||||
$message = $this->f3->get('Signup_activation_email_body');
|
||||
|
||||
$activationUrl = sprintf('%s/account-activation/%s', $url, $activationKey);
|
||||
$message = sprintf($message, $activationUrl);
|
||||
|
||||
\Utils\Mailer::send($toName, $toAddress, $subject, $message);
|
||||
}
|
||||
|
||||
private function validate(array $params): int|false {
|
||||
$errorCode = \Utils\Access::CSRFTokenValid($params, $this->f3);
|
||||
if ($errorCode) {
|
||||
return $errorCode;
|
||||
}
|
||||
|
||||
$email = $params['email'];
|
||||
$password = $params['password'];
|
||||
|
||||
if (!$email) {
|
||||
return \Utils\ErrorCodes::EMAIL_DOES_NOT_EXIST;
|
||||
}
|
||||
|
||||
$audit = \Audit::instance();
|
||||
if (!$audit->email($email, true)) {
|
||||
return \Utils\ErrorCodes::EMAIL_IS_NOT_CORRECT;
|
||||
}
|
||||
|
||||
$operatorsModel = new \Models\Operator();
|
||||
$operator = $operatorsModel->getByEmail($email);
|
||||
if ($operator) {
|
||||
return \Utils\ErrorCodes::EMAIL_ALREADY_EXIST;
|
||||
}
|
||||
|
||||
if (!$password) {
|
||||
return \Utils\ErrorCodes::PASSWORD_DOES_NOT_EXIST;
|
||||
}
|
||||
|
||||
$passwordLegth = strlen($password);
|
||||
$minPasswordLegth = $this->f3->get('MIN_PASSWORD_LENGTH');
|
||||
if ($passwordLegth < $minPasswordLegth) {
|
||||
return \Utils\ErrorCodes::PASSWORD_IS_TO_SHORT;
|
||||
}
|
||||
|
||||
$timezone = $params['timezone'] ?? null;
|
||||
$timezones = $this->f3->get('timezones');
|
||||
if (!$timezone || !array_key_exists($timezone, $timezones)) {
|
||||
return \Utils\ErrorCodes::TIME_ZONE_DOES_NOT_EXIST;
|
||||
}
|
||||
|
||||
return false;
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user