diff --git a/system/controllers/login.php b/system/controllers/login.php
index af3f22e8..736e5b2a 100644
--- a/system/controllers/login.php
+++ b/system/controllers/login.php
@@ -314,11 +314,32 @@ switch ($do) {
$ui->display('customer/login-noreg.tpl');
} else {
$UPLOAD_URL_PATH = str_replace($root_path, '', $UPLOAD_PATH);
- $login_logo = (file_exists($UPLOAD_URL_PATH . DIRECTORY_SEPARATOR . 'login-logo.png')) ? $UPLOAD_URL_PATH . DIRECTORY_SEPARATOR . 'login-logo.png' : $UPLOAD_URL_PATH . DIRECTORY_SEPARATOR . 'login-logo.default.png';
+ if (!empty($config['login_page_logo']) && file_exists($UPLOAD_URL_PATH . DIRECTORY_SEPARATOR . $config['login_page_logo'])) {
+ $login_logo = $UPLOAD_URL_PATH . DIRECTORY_SEPARATOR . $config['login_page_logo'];
+ } elseif (file_exists($UPLOAD_URL_PATH . DIRECTORY_SEPARATOR . 'login-logo.png')) {
+ $login_logo = $UPLOAD_URL_PATH . DIRECTORY_SEPARATOR . 'login-logo.png';
+ } else {
+ $login_logo = $UPLOAD_URL_PATH . DIRECTORY_SEPARATOR . 'login-logo.default.png';
+ }
+
+ if (!empty($config['login_page_wallpaper']) && file_exists($UPLOAD_URL_PATH . DIRECTORY_SEPARATOR . $config['login_page_wallpaper'])) {
+ $wallpaper = $UPLOAD_URL_PATH . DIRECTORY_SEPARATOR . $config['login_page_wallpaper'];
+ } elseif (file_exists($UPLOAD_URL_PATH . DIRECTORY_SEPARATOR . 'wallpaper.png')) {
+ $wallpaper = $UPLOAD_URL_PATH . DIRECTORY_SEPARATOR . 'wallpaper.png';
+ } else {
+ $wallpaper = $UPLOAD_URL_PATH . DIRECTORY_SEPARATOR . 'wallpaper.default.png';
+ }
+
+ if (!empty($config['login_page_favicon']) && file_exists($UPLOAD_URL_PATH . DIRECTORY_SEPARATOR . $config['login_page_favicon'])) {
+ $favicon = $UPLOAD_URL_PATH . DIRECTORY_SEPARATOR . $config['login_page_favicon'];
+ } elseif (file_exists($UPLOAD_URL_PATH . DIRECTORY_SEPARATOR . 'favicon.png')) {
+ $favicon = $UPLOAD_URL_PATH . DIRECTORY_SEPARATOR . 'favicon.png';
+ } else {
+ $favicon = $UPLOAD_URL_PATH . DIRECTORY_SEPARATOR . 'favicon.default.png';
+ }
+
$ui->assign('login_logo', $login_logo);
- $wallpaper = (file_exists($UPLOAD_URL_PATH . DIRECTORY_SEPARATOR . 'wallpaper.png')) ? $UPLOAD_URL_PATH . DIRECTORY_SEPARATOR . 'wallpaper.png' : $UPLOAD_URL_PATH . DIRECTORY_SEPARATOR . 'wallpaper.default.png';
$ui->assign('wallpaper', $wallpaper);
- $favicon = (file_exists($UPLOAD_PATH . DIRECTORY_SEPARATOR . 'favicon.png')) ? $UPLOAD_URL_PATH . DIRECTORY_SEPARATOR . 'favicon.png' : $UPLOAD_URL_PATH . DIRECTORY_SEPARATOR . 'favicon.default.png';
$ui->assign('favicon', $favicon);
$ui->assign('csrf_token', $csrf_token);
$ui->assign('_title', Lang::T('Login'));
diff --git a/system/controllers/register.php b/system/controllers/register.php
index b8550dc1..ea699570 100644
--- a/system/controllers/register.php
+++ b/system/controllers/register.php
@@ -27,24 +27,24 @@ switch ($do) {
$address = _post('address');
// Separate phone number input if OTP is required
- if ($config['sms_otp_registration'] == 'yes') {
- $phone_number = alphanumeric(_post('phone_number'), "+_.@-");
- } else {
- $phone_number = $username; // When OTP is not required, treat username as phone number
- }
+ $phone_number = ($config['sms_otp_registration'] == 'yes') ? alphanumeric(_post('phone_number'), "+_.@-") : $username;
$msg = '';
if (Validator::Length($username, 35, 2) == false) {
- $msg .= 'Username should be between 3 to 55 characters' . '
';
+ $msg .= "Username should be between 3 to 55 characters
";
}
- if (Validator::Length($fullname, 36, 2) == false) {
- $msg .= 'Full Name should be between 3 to 25 characters' . '
';
+ if ($config['man_fields_fname'] == 'yes') {
+ if (Validator::Length($fullname, 36, 2) == false) {
+ $msg .= "Full Name should be between 3 to 25 characters
";
+ }
}
if (!Validator::Length($password, 35, 2)) {
- $msg .= 'Password should be between 3 to 35 characters' . '
';
+ $msg .= "Password should be between 3 to 35 characters
";
}
- if (!Validator::Email($email)) {
- $msg .= 'Email is not Valid
';
+ if ($config['man_fields_email'] == 'yes') {
+ if (!Validator::Email($email)) {
+ $msg .= 'Email is not Valid
';
+ }
}
if ($password != $cpassword) {
$msg .= Lang::T('Passwords does not match') . '
';
@@ -52,7 +52,7 @@ switch ($do) {
// OTP verification if OTP is enabled
if ($_c['sms_otp_registration'] == 'yes') {
- $otpPath .= sha1($phone_number . $db_pass) . ".txt";
+ $otpPath .= sha1("$phone_number$db_pass") . ".txt";
run_hook('validate_otp'); #HOOK
// Expire after 10 minutes
if (file_exists($otpPath) && time() - filemtime($otpPath) > 1200) {
@@ -116,6 +116,10 @@ switch ($do) {
if (file_exists($_FILES['photo']['tmp_name'])) unlink($_FILES['photo']['tmp_name']);
User::setFormCustomField($user);
run_hook('register_user'); #HOOK
+ $msg .= Lang::T('Registration successful') . '
';
+ if ($config['reg_nofify_admin'] == 'yes') {
+ sendTelegram($config['CompanyName'] . ' - ' . Lang::T('New User Registration') . "\n\nFull Name: " . $fullname . "\nUsername: " . $username . "\nEmail: " . $email . "\nPhone Number: " . $phone_number . "\nAddress: " . $address);
+ }
r2(U . 'login', 's', Lang::T('Register Success! You can login now'));
} else {
$ui->assign('username', $username);
@@ -171,13 +175,13 @@ switch ($do) {
} else {
$otp = rand(100000, 999999);
file_put_contents($otpPath, $otp);
- if($config['phone_otp_type'] == 'whatsapp'){
- Message::sendWhatsapp($phone_number, $config['CompanyName'] . "\n\n".Lang::T("Registration code")."\n$otp");
- }else if($config['phone_otp_type'] == 'both'){
- Message::sendWhatsapp($phone_number, $config['CompanyName'] . "\n\n".Lang::T("Registration code")."\n$otp");
- Message::sendSMS($phone_number, $config['CompanyName'] . "\n\n".Lang::T("Registration code")."\n$otp");
- }else{
- Message::sendSMS($phone_number, $config['CompanyName'] . "\n\n".Lang::T("Registration code")."\n$otp");
+ if ($config['phone_otp_type'] == 'whatsapp') {
+ Message::sendWhatsapp($phone_number, $config['CompanyName'] . "\n\n" . Lang::T("Registration code") . "\n$otp");
+ } else if ($config['phone_otp_type'] == 'both') {
+ Message::sendWhatsapp($phone_number, $config['CompanyName'] . "\n\n" . Lang::T("Registration code") . "\n$otp");
+ Message::sendSMS($phone_number, $config['CompanyName'] . "\n\n" . Lang::T("Registration code") . "\n$otp");
+ } else {
+ Message::sendSMS($phone_number, $config['CompanyName'] . "\n\n" . Lang::T("Registration code") . "\n$otp");
}
$ui->assign('phone_number', $phone_number);
$ui->assign('notify', 'Registration code has been sent to your phone');
@@ -204,5 +208,3 @@ switch ($do) {
}
break;
}
-
-?>
diff --git a/system/controllers/settings.php b/system/controllers/settings.php
index 698101b6..7aac403c 100644
--- a/system/controllers/settings.php
+++ b/system/controllers/settings.php
@@ -82,11 +82,32 @@ switch ($action) {
}
$ui->assign('logo', $logo);
- $login_logo = (file_exists($UPLOAD_URL_PATH . DIRECTORY_SEPARATOR . 'login-logo.png')) ? $UPLOAD_URL_PATH . DIRECTORY_SEPARATOR . 'login-logo.png' : $UPLOAD_URL_PATH . DIRECTORY_SEPARATOR . 'login-logo.default.png';
+ if (!empty($config['login_page_logo']) && file_exists($UPLOAD_URL_PATH . DIRECTORY_SEPARATOR . $config['login_page_logo'])) {
+ $login_logo = $UPLOAD_URL_PATH . DIRECTORY_SEPARATOR . $config['login_page_logo'];
+ } elseif (file_exists($UPLOAD_URL_PATH . DIRECTORY_SEPARATOR . 'login-logo.png')) {
+ $login_logo = $UPLOAD_URL_PATH . DIRECTORY_SEPARATOR . 'login-logo.png';
+ } else {
+ $login_logo = $UPLOAD_URL_PATH . DIRECTORY_SEPARATOR . 'login-logo.default.png';
+ }
+
+ if (!empty($config['login_page_wallpaper']) && file_exists($UPLOAD_URL_PATH . DIRECTORY_SEPARATOR . $config['login_page_wallpaper'])) {
+ $wallpaper = $UPLOAD_URL_PATH . DIRECTORY_SEPARATOR . $config['login_page_wallpaper'];
+ } elseif (file_exists($UPLOAD_URL_PATH . DIRECTORY_SEPARATOR . 'wallpaper.png')) {
+ $wallpaper = $UPLOAD_URL_PATH . DIRECTORY_SEPARATOR . 'wallpaper.png';
+ } else {
+ $wallpaper = $UPLOAD_URL_PATH . DIRECTORY_SEPARATOR . 'wallpaper.default.png';
+ }
+
+ if (!empty($config['login_page_favicon']) && file_exists($UPLOAD_URL_PATH . DIRECTORY_SEPARATOR . $config['login_page_favicon'])) {
+ $favicon = $UPLOAD_URL_PATH . DIRECTORY_SEPARATOR . $config['login_page_favicon'];
+ } elseif (file_exists($UPLOAD_URL_PATH . DIRECTORY_SEPARATOR . 'favicon.png')) {
+ $favicon = $UPLOAD_URL_PATH . DIRECTORY_SEPARATOR . 'favicon.png';
+ } else {
+ $favicon = $UPLOAD_URL_PATH . DIRECTORY_SEPARATOR . 'favicon.default.png';
+ }
+
$ui->assign('login_logo', $login_logo);
- $wallpaper = (file_exists($UPLOAD_URL_PATH . DIRECTORY_SEPARATOR . 'wallpaper.png')) ? $UPLOAD_URL_PATH . DIRECTORY_SEPARATOR . 'wallpaper.png' : $UPLOAD_URL_PATH . DIRECTORY_SEPARATOR . 'wallpaper.default.png';
$ui->assign('wallpaper', $wallpaper);
- $favicon = (file_exists($UPLOAD_PATH . DIRECTORY_SEPARATOR . 'favicon.png')) ? $UPLOAD_URL_PATH . DIRECTORY_SEPARATOR . 'favicon.png' : $UPLOAD_URL_PATH . DIRECTORY_SEPARATOR . 'favicon.default.png';
$ui->assign('favicon', $favicon);
$themes = [];
@@ -133,7 +154,7 @@ switch ($action) {
$d->save();
}
}
- if(empty($config['mikrotik_sms_command'])){
+ if (empty($config['mikrotik_sms_command'])) {
$config['mikrotik_sms_command'] = "/tool sms send";
}
$ui->assign('template_files', $templates);
@@ -188,6 +209,10 @@ switch ($action) {
}
}
// Save all settings including tax system
+ $_POST['man_fields_email'] = isset($_POST['man_fields_email']) ? 'yes' : 'no';
+ $_POST['man_fields_fname'] = isset($_POST['man_fields_fname']) ? 'yes' : 'no';
+ $_POST['man_fields_address'] = isset($_POST['man_fields_address']) ? 'yes' : 'no';
+ $_POST['man_fields_custom'] = isset($_POST['man_fields_custom']) ? 'yes' : 'no';
$enable_session_timeout = isset($_POST['enable_session_timeout']) ? 1 : 0;
$_POST['enable_session_timeout'] = $enable_session_timeout;
foreach ($_POST as $key => $value) {
@@ -220,8 +245,6 @@ switch ($action) {
r2(U . 'settings/app', 'e', Lang::T('Invalid or Expired CSRF Token') . ".");
}
- $image_paths = [];
-
if ($login_page_type == 'custom' && (empty($login_Page_template) || empty($login_page_title) || empty($login_page_description))) {
r2(U . 'settings/app', 'e', 'Please fill all required fields');
return;
@@ -231,7 +254,7 @@ switch ($action) {
r2(U . 'settings/app', 'e', 'Login page title must not exceed 25 characters');
return;
}
- if (strlen($login_page_description) > 50) {
+ if (strlen($login_page_description) > 100) {
r2(U . 'settings/app', 'e', 'Login page description must not exceed 50 characters');
return;
}
@@ -243,12 +266,16 @@ switch ($action) {
'login_page_type' => $login_page_type,
];
+ $image_paths = [];
+ $allowed_types = ['image/jpeg', 'image/png'];
+
if ($_FILES['login_page_favicon']['name'] != '') {
$favicon_type = $_FILES['login_page_favicon']['type'];
- if (in_array($favicon_type, ['image/jpeg', 'image/png']) && preg_match('/\.(jpg|jpeg|png)$/i', $_FILES['login_page_favicon']['name'])) {
- $favicon_path = $UPLOAD_PATH . DIRECTORY_SEPARATOR . 'favicon.png';
+ if (in_array($favicon_type, $allowed_types) && preg_match('/\.(jpg|jpeg|png)$/i', $_FILES['login_page_favicon']['name'])) {
+ $extension = pathinfo($_FILES['login_page_favicon']['name'], PATHINFO_EXTENSION);
+ $favicon_path = $UPLOAD_PATH . DIRECTORY_SEPARATOR . uniqid('favicon_') . '.' . $extension;
File::resizeCropImage($_FILES['login_page_favicon']['tmp_name'], $favicon_path, 16, 16, 100);
- $image_paths['favicon'] = $favicon_path;
+ $settings['login_page_favicon'] = basename($favicon_path); // Save dynamic file name
if (file_exists($_FILES['login_page_favicon']['tmp_name'])) unlink($_FILES['login_page_favicon']['tmp_name']);
} else {
r2(U . 'settings/app', 'e', 'Favicon must be a JPG, JPEG, or PNG image.');
@@ -257,10 +284,11 @@ switch ($action) {
if ($_FILES['login_page_wallpaper']['name'] != '') {
$wallpaper_type = $_FILES['login_page_wallpaper']['type'];
- if (in_array($wallpaper_type, ['image/jpeg', 'image/png']) && preg_match('/\.(jpg|jpeg|png)$/i', $_FILES['login_page_wallpaper']['name'])) {
- $wallpaper_path = $UPLOAD_PATH . DIRECTORY_SEPARATOR . 'wallpaper.png';
+ if (in_array($wallpaper_type, $allowed_types) && preg_match('/\.(jpg|jpeg|png)$/i', $_FILES['login_page_wallpaper']['name'])) {
+ $extension = pathinfo($_FILES['login_page_wallpaper']['name'], PATHINFO_EXTENSION);
+ $wallpaper_path = $UPLOAD_PATH . DIRECTORY_SEPARATOR . uniqid('wallpaper_') . '.' . $extension;
File::resizeCropImage($_FILES['login_page_wallpaper']['tmp_name'], $wallpaper_path, 1920, 1080, 100);
- $image_paths['wallpaper'] = $wallpaper_path;
+ $settings['login_page_wallpaper'] = basename($wallpaper_path); // Save dynamic file name
if (file_exists($_FILES['login_page_wallpaper']['tmp_name'])) unlink($_FILES['login_page_wallpaper']['tmp_name']);
} else {
r2(U . 'settings/app', 'e', 'Wallpaper must be a JPG, JPEG, or PNG image.');
@@ -269,10 +297,11 @@ switch ($action) {
if ($_FILES['login_page_logo']['name'] != '') {
$logo_type = $_FILES['login_page_logo']['type'];
- if (in_array($logo_type, ['image/jpeg', 'image/png']) && preg_match('/\.(jpg|jpeg|png)$/i', $_FILES['login_page_logo']['name'])) {
- $logo_path = $UPLOAD_PATH . DIRECTORY_SEPARATOR . 'login-logo.png';
+ if (in_array($logo_type, $allowed_types) && preg_match('/\.(jpg|jpeg|png)$/i', $_FILES['login_page_logo']['name'])) {
+ $extension = pathinfo($_FILES['login_page_logo']['name'], PATHINFO_EXTENSION);
+ $logo_path = $UPLOAD_PATH . DIRECTORY_SEPARATOR . uniqid('logo_') . '.' . $extension;
File::resizeCropImage($_FILES['login_page_logo']['tmp_name'], $logo_path, 300, 60, 100);
- $image_paths['logo'] = $logo_path;
+ $settings['login_page_logo'] = basename($logo_path); // Save dynamic file name
if (file_exists($_FILES['login_page_logo']['tmp_name'])) unlink($_FILES['login_page_logo']['tmp_name']);
} else {
r2(U . 'settings/app', 'e', 'Logo must be a JPG, JPEG, or PNG image.');
diff --git a/ui/ui/app-settings.tpl b/ui/ui/app-settings.tpl
index 6d4d030d..4a002bfd 100644
--- a/ui/ui/app-settings.tpl
+++ b/ui/ui/app-settings.tpl
@@ -368,6 +368,45 @@
{Lang::T('The method which OTP will be sent to user')}
{Lang::T('For Registration and Update Phone Number')}
+ {Lang::T('Notify Admin upon self registration')} +
+