Implement custom login page settings with validation and image upload support
This commit is contained in:
parent
84500cdfc9
commit
1cb0e30e6b
@ -248,6 +248,75 @@ switch ($action) {
|
|||||||
$_POST['hide_pg'] = _post('hide_pg', 'no');
|
$_POST['hide_pg'] = _post('hide_pg', 'no');
|
||||||
$_POST['hide_aui'] = _post('hide_aui', 'no');
|
$_POST['hide_aui'] = _post('hide_aui', 'no');
|
||||||
|
|
||||||
|
// Login page post
|
||||||
|
$login_page_title = _post('login_page_head');
|
||||||
|
$login_page_description = _post('login_page_description');
|
||||||
|
$login_Page_template = _post('login_Page_template');
|
||||||
|
$login_page_type = _post('login_page_type');
|
||||||
|
$csrf_token = _post('csrf_token');
|
||||||
|
|
||||||
|
if (!Csrf::check($csrf_token)) {
|
||||||
|
r2(getUrl('settings/app'), 'e', Lang::T('Invalid or Expired CSRF Token') . ".");
|
||||||
|
}
|
||||||
|
|
||||||
|
if ($login_page_type == 'custom' && (empty($login_Page_template) || empty($login_page_title) || empty($login_page_description))) {
|
||||||
|
r2(getUrl('settings/app'), 'e', 'Please fill all required fields');
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (strlen($login_page_title) > 25) {
|
||||||
|
r2(getUrl('settings/app'), 'e', 'Login page title must not exceed 25 characters');
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
if (strlen($login_page_description) > 100) {
|
||||||
|
r2(getUrl('settings/app'), 'e', 'Login page description must not exceed 50 characters');
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
$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, $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);
|
||||||
|
$_POST['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(getUrl('settings/app'), 'e', 'Favicon must be a JPG, JPEG, or PNG image.');
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if ($_FILES['login_page_wallpaper']['name'] != '') {
|
||||||
|
$wallpaper_type = $_FILES['login_page_wallpaper']['type'];
|
||||||
|
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);
|
||||||
|
$_POST['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(getUrl('settings/app'), 'e', 'Wallpaper must be a JPG, JPEG, or PNG image.');
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if ($_FILES['login_page_logo']['name'] != '') {
|
||||||
|
$logo_type = $_FILES['login_page_logo']['type'];
|
||||||
|
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);
|
||||||
|
$_POST['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(getUrl('settings/app'), 'e', 'Logo must be a JPG, JPEG, or PNG image.');
|
||||||
|
}
|
||||||
|
}
|
||||||
foreach ($_POST as $key => $value) {
|
foreach ($_POST as $key => $value) {
|
||||||
$d = ORM::for_table('tbl_appconfig')->where('setting', $key)->find_one();
|
$d = ORM::for_table('tbl_appconfig')->where('setting', $key)->find_one();
|
||||||
if ($d) {
|
if ($d) {
|
||||||
@ -266,105 +335,6 @@ switch ($action) {
|
|||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case 'login-page-post':
|
|
||||||
|
|
||||||
if ($_app_stage == 'Demo') {
|
|
||||||
r2(getUrl('settings/app'), 'e', 'You cannot perform this action in Demo mode');
|
|
||||||
}
|
|
||||||
// Login page post
|
|
||||||
$login_page_title = _post('login_page_head');
|
|
||||||
$login_page_description = _post('login_page_description');
|
|
||||||
$login_Page_template = _post('login_Page_template');
|
|
||||||
$login_page_type = _post('login_page_type');
|
|
||||||
$csrf_token = _post('csrf_token');
|
|
||||||
|
|
||||||
if (!Csrf::check($csrf_token)) {
|
|
||||||
r2(getUrl('settings/app'), 'e', Lang::T('Invalid or Expired CSRF Token') . ".");
|
|
||||||
}
|
|
||||||
|
|
||||||
if ($login_page_type == 'custom' && (empty($login_Page_template) || empty($login_page_title) || empty($login_page_description))) {
|
|
||||||
r2(getUrl('settings/app'), 'e', 'Please fill all required fields');
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (strlen($login_page_title) > 25) {
|
|
||||||
r2(getUrl('settings/app'), 'e', 'Login page title must not exceed 25 characters');
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
if (strlen($login_page_description) > 100) {
|
|
||||||
r2(getUrl('settings/app'), 'e', 'Login page description must not exceed 50 characters');
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
$settings = [
|
|
||||||
'login_page_head' => $login_page_title,
|
|
||||||
'login_page_description' => $login_page_description,
|
|
||||||
'login_Page_template' => $login_Page_template,
|
|
||||||
'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, $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);
|
|
||||||
$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(getUrl('settings/app'), 'e', 'Favicon must be a JPG, JPEG, or PNG image.');
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
if ($_FILES['login_page_wallpaper']['name'] != '') {
|
|
||||||
$wallpaper_type = $_FILES['login_page_wallpaper']['type'];
|
|
||||||
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);
|
|
||||||
$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(getUrl('settings/app'), 'e', 'Wallpaper must be a JPG, JPEG, or PNG image.');
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
if ($_FILES['login_page_logo']['name'] != '') {
|
|
||||||
$logo_type = $_FILES['login_page_logo']['type'];
|
|
||||||
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);
|
|
||||||
$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(getUrl('settings/app'), 'e', 'Logo must be a JPG, JPEG, or PNG image.');
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
foreach ($settings as $key => $value) {
|
|
||||||
$d = ORM::for_table('tbl_appconfig')->where('setting', $key)->find_one();
|
|
||||||
if ($d) {
|
|
||||||
$d->value = $value;
|
|
||||||
$d->save();
|
|
||||||
} else {
|
|
||||||
$d = ORM::for_table('tbl_appconfig')->create();
|
|
||||||
$d->setting = $key;
|
|
||||||
$d->value = $value;
|
|
||||||
$d->save();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
_log('[' . $admin['username'] . ']: ' . Lang::T('Login Page Settings Saved Successfully'), $admin['user_type'], $admin['id']);
|
|
||||||
r2(getUrl('settings/app'), 's', Lang::T('Login Page Settings Saved Successfully'));
|
|
||||||
break;
|
|
||||||
|
|
||||||
case 'localisation':
|
case 'localisation':
|
||||||
if (!in_array($admin['user_type'], ['SuperAdmin', 'Admin'])) {
|
if (!in_array($admin['user_type'], ['SuperAdmin', 'Admin'])) {
|
||||||
_alert(Lang::T('You do not have permission to access this page'), 'danger', "dashboard");
|
_alert(Lang::T('You do not have permission to access this page'), 'danger', "dashboard");
|
||||||
@ -590,7 +560,7 @@ switch ($action) {
|
|||||||
}
|
}
|
||||||
//allow see himself
|
//allow see himself
|
||||||
if ($admin['id'] == $id) {
|
if ($admin['id'] == $id) {
|
||||||
$d = ORM::for_table('tbl_users')->where('id', $id)->find_array($id)[0];
|
$d = ORM::for_table('tbl_users')->where('id', $id)->find_array()[0];
|
||||||
} else {
|
} else {
|
||||||
if (in_array($admin['user_type'], ['SuperAdmin', 'Admin'])) {
|
if (in_array($admin['user_type'], ['SuperAdmin', 'Admin'])) {
|
||||||
// Super Admin can see anyone
|
// Super Admin can see anyone
|
||||||
|
Loading…
x
Reference in New Issue
Block a user