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')} +

+
+
+
+ + + + +
diff --git a/ui/ui/customer/register-otp.tpl b/ui/ui/customer/register-otp.tpl index 9ae84f0b..3253509b 100644 --- a/ui/ui/customer/register-otp.tpl +++ b/ui/ui/customer/register-otp.tpl @@ -33,26 +33,33 @@ placeholder="{Lang::T('Verification Code')}" name="otp_code"> {if $_c['photo_register'] == 'yes'} -
- - -
+
+ + +
{/if} + {if $_c['man_fields_fname'] neq 'no'}
+ {/if} + {if $_c['man_fields_address'] neq 'no'}
+ {/if} + {if $_c['man_fields_address'] neq 'no'}
+ {if $_c['man_fields_custom'] neq 'no'} {$customFields} + {/if} @@ -114,21 +121,21 @@ {if $_c['tawkto'] != ''} - - - + + + {/if} {include file="customer/footer-public.tpl"} \ No newline at end of file diff --git a/ui/ui/customer/register.tpl b/ui/ui/customer/register.tpl index b6827ad3..df87e2dc 100644 --- a/ui/ui/customer/register.tpl +++ b/ui/ui/customer/register.tpl @@ -19,49 +19,57 @@
{if $_c['registration_username'] == 'phone'} - + {elseif $_c['registration_username'] == 'email'} - + {else} - + {/if}
{if $_c['photo_register'] == 'yes'} -
- - -
+
+ + +
{/if} + {if $_c['man_fields_fname'] neq 'no'}
+ {/if} + {if $_c['man_fields_email'] neq 'no'}
+ {/if} + {if $_c['man_fields_address'] neq 'no'}
+ {/if} + {if $_c['man_fields_custom'] neq 'no'} {$customFields} + {/if} diff --git a/ui/ui/sections/header.tpl b/ui/ui/sections/header.tpl index f3b7c9ce..1d8ad302 100644 --- a/ui/ui/sections/header.tpl +++ b/ui/ui/sections/header.tpl @@ -173,6 +173,7 @@ background-color: #efeb0a; border-color: #efeb0a; } + .panel-cron-danger>.panel-heading { border-bottom-right-radius: 21px; border-bottom-left-radius: 21px; @@ -276,7 +277,7 @@ font-weight: bold; } - .box.box-solid.box-primary > .box-header .btn { + .box.box-solid.box-primary>.box-header .btn { color: inherit; } @@ -1136,12 +1137,17 @@ border-radius: 4px; } + .dark-mode .container { + background-color: #353638; + + } + /* Dark Mode - Select2 Dropdown ends here */ /* dark mode styles start ends here */ {if isset($xheader)} - {$xheader} + {$xheader} {/if} @@ -1232,83 +1238,83 @@ {$_MENU_AFTER_DASHBOARD} {if !in_array($_admin['user_type'],['Report'])} -
  • - - {Lang::T('Customer')} - - - - - -
  • - {$_MENU_AFTER_CUSTOMERS} -
  • - - {Lang::T('Services')} - - - - - -
  • +
  • + + {Lang::T('Customer')} + + + + + +
  • + {$_MENU_AFTER_CUSTOMERS} +
  • + + {Lang::T('Services')} + + + + + +
  • {/if} {$_MENU_AFTER_SERVICES} {if in_array($_admin['user_type'],['SuperAdmin','Admin'])} -
  • - - {Lang::T('Internet Plan')} - - - - - -
  • +
  • + + {Lang::T('Internet Plan')} + + + + + +
  • {/if} {$_MENU_AFTER_PLANS}
  • {if in_array($_admin['user_type'],['SuperAdmin','Admin', 'Report'])} - - {Lang::T('Reports')} - - - - + + {Lang::T('Reports')} + + + + {/if} @@ -1493,11 +1499,11 @@ {if $_c['maintenance_mode'] == 1} -
    -

    {Lang::T('The website is currently in maintenance mode, this means that some or all functionality may be +

    +

    {Lang::T('The website is currently in maintenance mode, this means that some or all functionality may be unavailable to regular users during this time.')}   {Lang::T('Turn Off')}

    -
    + href="{$_url}settings/maintenance">{Lang::T('Turn Off')}

    +
    {/if}
    @@ -1509,19 +1515,19 @@
    {if isset($notify)} - -{/if} + + {/if} \ No newline at end of file