feat: Implement standalone admin at /admin with custom login page and auth system
This commit is contained in:
84
admin/index.php
Normal file
84
admin/index.php
Normal file
@@ -0,0 +1,84 @@
|
||||
<?php
|
||||
/**
|
||||
* WooNooW Standalone Admin Entry Point
|
||||
*
|
||||
* Minimal WordPress bootstrap - no theme, no plugins bloat.
|
||||
* This file provides a clean, fast admin interface without wp_head/wp_footer.
|
||||
*
|
||||
* @package WooNooW
|
||||
*/
|
||||
|
||||
// Load WordPress core only (no theme, no plugins)
|
||||
define( 'WP_USE_THEMES', false );
|
||||
define( 'WOONOOW_STANDALONE_ADMIN', true );
|
||||
|
||||
// Load WordPress
|
||||
require_once( __DIR__ . '/../../../../wp-load.php' );
|
||||
|
||||
// Check if user is logged in and has permissions
|
||||
$is_authenticated = is_user_logged_in() && current_user_can( 'manage_woocommerce' );
|
||||
|
||||
// Get nonce for REST API
|
||||
$nonce = wp_create_nonce( 'wp_rest' );
|
||||
$rest_url = rest_url( 'woonoow/v1' );
|
||||
$wp_admin_url = admin_url( 'admin.php?page=woonoow' );
|
||||
|
||||
// Get current user data if authenticated
|
||||
$current_user = null;
|
||||
if ( $is_authenticated ) {
|
||||
$user = wp_get_current_user();
|
||||
$current_user = [
|
||||
'id' => $user->ID,
|
||||
'name' => $user->display_name,
|
||||
'email' => $user->user_email,
|
||||
'avatar' => get_avatar_url( $user->ID ),
|
||||
];
|
||||
}
|
||||
|
||||
// Get asset URLs
|
||||
$plugin_url = plugins_url( '', dirname( __FILE__ ) );
|
||||
$asset_url = $plugin_url . '/admin-spa/dist';
|
||||
$css_url = $asset_url . '/app.css';
|
||||
$js_url = $asset_url . '/app.js';
|
||||
|
||||
// Add cache busting
|
||||
$version = defined( 'WP_DEBUG' ) && WP_DEBUG ? time() : '1.0.0';
|
||||
$css_url .= '?ver=' . $version;
|
||||
$js_url .= '?ver=' . $version;
|
||||
?>
|
||||
<!DOCTYPE html>
|
||||
<html lang="<?php echo esc_attr( get_locale() ); ?>">
|
||||
<head>
|
||||
<meta charset="UTF-8">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||||
<meta name="robots" content="noindex, nofollow">
|
||||
<title>WooNooW Admin</title>
|
||||
|
||||
<!-- WooNooW Assets Only - NO wp_head() -->
|
||||
<link rel="stylesheet" href="<?php echo esc_url( $css_url ); ?>">
|
||||
</head>
|
||||
<body class="woonoow-standalone">
|
||||
<div id="woonoow-admin-root"></div>
|
||||
|
||||
<script>
|
||||
// Minimal config - no WordPress bloat
|
||||
window.WNW_CONFIG = {
|
||||
restUrl: <?php echo wp_json_encode( $rest_url ); ?>,
|
||||
nonce: <?php echo wp_json_encode( $nonce ); ?>,
|
||||
standaloneMode: true,
|
||||
wpAdminUrl: <?php echo wp_json_encode( $wp_admin_url ); ?>,
|
||||
isAuthenticated: <?php echo $is_authenticated ? 'true' : 'false'; ?>,
|
||||
currentUser: <?php echo wp_json_encode( $current_user ); ?>,
|
||||
locale: <?php echo wp_json_encode( get_locale() ); ?>,
|
||||
siteUrl: <?php echo wp_json_encode( home_url() ); ?>,
|
||||
siteName: <?php echo wp_json_encode( get_bloginfo( 'name' ) ); ?>
|
||||
};
|
||||
</script>
|
||||
|
||||
<script type="module" src="<?php echo esc_url( $js_url ); ?>"></script>
|
||||
|
||||
<?php
|
||||
// NO wp_footer() - we don't want theme/plugin scripts
|
||||
?>
|
||||
</body>
|
||||
</html>
|
||||
Reference in New Issue
Block a user