| Server IP : 35.201.19.92 / Your IP : 216.73.216.156 Web Server : nginx System : Linux pod-200961 6.8.0-1055-gke #61-Ubuntu SMP Tue May 26 22:57:42 UTC 2026 x86_64 User : fpm200098 ( 200098) PHP Version : 8.2.33 Disable Function : apache_child_terminate,apache_get_modules,apache_get_version,apache_getenv,apache_note,apache_setenv,disk_free_space,disk_total_space,diskfreespace,dl,exec,fastcgi_finish_request,link,opcache_compile_file,opcache_get_configuration,opcache_invalidate,opcache_is_script_cached,opcache_reset,passthru,pclose,pcntl_exec,popen,posix_getpid,posix_getppid,posix_getpwuid,posix_kill,posix_mkfifo,posix_setegid,posix_seteuid,posix_setgid,posix_setpgid,posix_setsid,posix_setuid,posix_uname,proc_close,proc_get_status,proc_nice,proc_open,proc_terminate,realpath_cache_get,shell_exec,show_source,symlink,system MySQL : OFF | cURL : ON | WGET : OFF | Perl : ON | Python : OFF | Sudo : OFF | Pkexec : OFF Directory : /nas/content/live/questfamilyday/wp-content/themes/generatepress_child/portal/ |
Upload File : |
<?php
/**
* Template Name: Login Portal
* The template for displaying portal account
*
* This is the template that displays all pages by default.
* Please note that this is the WordPress construct of pages
* and that other 'pages' on your WordPress site will use a
* different template.
*
* @package GeneratePress
*/
if (is_user_logged_in()) {
wp_redirect(home_url('/dashboard')); // or custom dashboard URL
exit;
}
if ( ! defined( 'ABSPATH' ) ) {
exit; // Exit if accessed directly.
}
?>
<!DOCTYPE html>
<html lang="en">
<head>
<?php wp_head();?>
<!-- Theme CSS -->
<link rel="stylesheet" href="<?php echo esc_url( get_stylesheet_directory_uri() ); ?>/portal/assets/css/style.css" />
<!-- Bootstrap CSS -->
<link href="<?php echo esc_url( get_stylesheet_directory_uri() ); ?>/portal/assets/vendor/bootstrap/css/bootstrap.min.css" rel="stylesheet"/>
<!-- Font Awesome for Icons -->
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/5.15.1/css/all.min.css"/>
</head>
<body>
<div class="login-container">
<!-- Login Card -->
<div class="login-card">
<div class="logo mb-5">
<img src="<?php echo esc_url( get_stylesheet_directory_uri() ); ?>/portal/assets/img/logos/logo.svg" alt="logo" class="m-0 img-fluid" />
</div>
<form id="loginForm" name="loginForm">
<div class="input-group mb-3">
<input type="text" class="form-control" id="username" name="username" placeholder="Enter email address"autocomplete="false"/>
<div class="input-group-prepend">
<span class="input-group-text">
<img src="<?php echo esc_url( get_stylesheet_directory_uri() ); ?>/portal/assets/img/icons/user.svg" alt="" class="input-img" />
</span>
</div>
</div>
<div class="input-group mb-3">
<input type="password" class="form-control" id="password" name="password" placeholder="Enter password" autocomplete="false" />
<div class="input-group-prepend">
<span class="input-group-text">
<img src="<?php echo esc_url( get_stylesheet_directory_uri() ); ?>/portal/assets/img/icons/lock.svg" alt="" class="input-img" />
</span>
</div>
</div>
<input type="submit" class="btn-theme btn-theme-primary w100" name="submit" value="Login">
<?php wp_nonce_field('portal_login_action', 'portal_login_nonce'); ?>
<input type="hidden" name="action" value="PortalLogin">
</form>
<div id="login-error" style="color: red; display: none;"></div>
<div class="card-bottom-wrap">
<a href="<?php echo home_url('/forgot-password/');?>" class="f_link">Forgot Password?</a>
</div>
</div>
</div>
<div id="login-loader" style="display: none;">
<div class="spinner"></div>
</div>
<!-- Bootstrap JS and dependencies -->
<script src="<?php echo esc_url( get_stylesheet_directory_uri() ); ?>/portal/assets/vendor/jquery/jquery.min.js"></script>
<script src="https://cdn.jsdelivr.net/npm/@popperjs/core@2.5.4/dist/umd/popper.min.js"></script>
<script src="<?php echo esc_url( get_stylesheet_directory_uri() ); ?>/portal/assets/vendor/bootstrap/js/bootstrap.min.js"></script>
<?php wp_footer();?>
<script src="https://cdn.jsdelivr.net/npm/jquery-validation@1.19.5/dist/jquery.validate.js"></script>
<script>
$(document).ready(function() {
var rules = {
rules: {
username: {
required: true,
// email: true // remove this line if username is not an email
},
password: {
required: true,
minlength: 6
}
},
messages: {
username: {
required: "Please enter your username or email",
// email: "Please enter a valid email address"
},
password: {
required: "Please enter your password",
minlength: "Password must be at least 6 characters"
}
},
errorPlacement: function (error, element) {
var name = $(element).attr("name");
var $obj = $("#" + name + "_validate");
$obj.html("");
if($obj.length){
error.appendTo($obj);
}
else {
error.insertAfter(element);
}
},
submitHandler: function (form) {
$('#login-error').hide();
$('#login-loader').show(); // 👉 Show loader
jQuery.ajax({
type: "POST",
url: '<?php echo admin_url('admin-ajax.php');?>',
data: jQuery("#loginForm").serialize(),
success: function(response)
{
$('#login-loader').hide(); // 👉 hide loader
if (response.success) {
// Success: redirect or do something
window.location.href = response.data.redirect;
} else {
// ❌ Show error message
// $('#login-error').text(response.data.message).show();
$('#login-error').html('<div class="alert alert-danger" role="alert">'+response.data.message+'</div>').show();
}
},
error: function(xhr, status, error) {
$('#login-loader').hide(); // 👉 hide loader
// $('#login-error').text('An unexpected error occurred.').show();
$('#login-error').html('<div class="alert alert-danger" role="alert">An unexpected error occurred.</div>').show();
}
});
}
};
$("#loginForm").validate(rules);
});
</script>
<style type="text/css">
#login-loader {
position: fixed;
top: 50%;
left: 50%;
z-index: 9999;
transform: translate(-50%, -50%);
}
.spinner {
border: 4px solid #f3f3f3; /* Light grey */
border-top: 4px solid #3498db; /* Blue */
border-radius: 50%;
width: 40px;
height: 40px;
animation: spin 0.8s linear infinite;
}
@keyframes spin {
0% { transform: rotate(0deg); }
100% { transform: rotate(360deg); }
}
</style>
</body>
</html>