first commit

This commit is contained in:
kyy
2026-01-13 17:10:25 +09:00
commit 24f05eb279
5 changed files with 260 additions and 0 deletions

View File

@@ -0,0 +1,29 @@
# SSO 로그인 버튼 워드프레스 플러그인
## 설명
`[sso_login_button]` 숏코드를 제공하는 간단한 워드프레스 플러그인입니다. 이 숏코드는 로그인 버튼을 표시하며, 버튼을 클릭하면 설정된 SSO URL로 팝업 창을 엽니다.
이 플러그인은 프론트엔드 SSO 흐름을 워드프레스 사이트에 통합하는 방법을 보여주는 경량 데모용으로 제작되었습니다.
## 설치 방법
1. `sso-wordpress-plugin` 디렉토리를 ZIP 파일로 압축합니다.
2. 워드프레스 관리자 대시보드에서 `플러그인` > `새로 추가`로 이동합니다.
3. 페이지 상단의 `플러그인 업로드` 버튼을 클릭합니다.
4. 다운로드한 ZIP 파일을 선택하고 `지금 설치`를 클릭합니다.
5. 설치가 완료되면 `플러그인 활성화` 버튼을 클릭합니다.
## 설정 방법
1. 플러그인이 활성화되면 워드프레스 관리자 대시보드에서 `설정` > `SSO Login`으로 이동합니다.
2. 입력 필드에 SSO 제공업체의 전체 URL을 입력합니다 (예: `http://localhost:5000/`).
3. `변경 사항 저장` 버튼을 클릭합니다.
## 사용 방법
페이지나 글에 SSO 로그인 버튼을 표시하려면, 콘텐츠 편집기에 아래의 숏코드를 추가하기만 하면 됩니다:
`[sso_login_button]`
사용자가 이 버튼을 클릭하면 설정 페이지에서 구성한 URL로 팝업 창이 열립니다.

View File

@@ -0,0 +1,37 @@
// This file will contain the JavaScript logic for the SSO login button.
document.addEventListener('DOMContentLoaded', () => {
const ssoLoginBtn = document.getElementById('sso-login-btn');
if (ssoLoginBtn) {
ssoLoginBtn.addEventListener('click', () => {
// ssoSettings.ssoUrl will be passed from WordPress using wp_localize_script
if (typeof ssoSettings === 'undefined' || !ssoSettings.ssoUrl) {
alert('SSO URL is not configured.');
return;
}
const ssoUrl = ssoSettings.ssoUrl;
const popupWidth = 600;
const popupHeight = 800;
const screenLeft = window.screenLeft !== undefined ? window.screenLeft : window.screenX;
const screenTop = window.screenTop !== undefined ? window.screenTop : window.screenY;
const screenWidth = window.innerWidth || document.documentElement.clientWidth || screen.width;
const screenHeight = window.innerHeight || document.documentElement.clientHeight || screen.height;
const left = ((screenWidth / 2) - (popupWidth / 2)) + screenLeft;
const top = ((screenHeight / 2) - (popupHeight / 2)) + screenTop;
const popup = window.open(
ssoUrl,
'sso-login-popup',
`width=${popupWidth},height=${popupHeight},left=${left},top=${top}`
);
if (popup) {
popup.focus();
} else {
alert('Popup blocked. Please allow popups for this site.');
}
});
}
});

View File

@@ -0,0 +1,120 @@
<?php
/**
* Plugin Name: SSO Login Button
* Description: Adds a shortcode to display an SSO login button.
* Version: 1.0.0
* Author: Gemini
* License: GPL-2.0-or-later
* License URI: https://www.gnu.org/licenses/gpl-2.0.html
* Text Domain: sso-login-button
*/
if ( ! defined( 'ABSPATH' ) ) {
exit; // Exit if accessed directly.
}
// Will add plugin code here.
/**
* Shortcode function to display the SSO login button.
*
* @return string The HTML for the login button.
*/
function sso_login_button_shortcode() {
// The button HTML. The actual script will be enqueued separately.
return '<button id="sso-login-btn">Login with SSO</button>';
}
add_shortcode( 'sso_login_button', 'sso_login_button_shortcode' );
/**
* Enqueue scripts and styles.
*/
function sso_enqueue_scripts() {
// Only enqueue the script if the shortcode is present on the page.
// Note: This is a simplified check. A more robust solution might be needed for complex cases.
global $post;
if ( is_a( $post, 'WP_Post' ) && has_shortcode( $post->post_content, 'sso_login_button' ) ) {
wp_enqueue_script(
'sso-login-script',
plugin_dir_url( __FILE__ ) . 'js/sso-login.js',
array(),
'1.0.0',
true
);
// Pass the SSO URL to the script.
// We'll make this dynamic with a settings page later.
$sso_url = get_option('sso_plugin_url', 'http://localhost:5000/');
wp_localize_script(
'sso-login-script',
'ssoSettings',
array(
'ssoUrl' => esc_url( $sso_url ),
)
);
}
}
add_action( 'wp_enqueue_scripts', 'sso_enqueue_scripts' );
/**
* Admin Menu and Settings
*/
// Add the settings page to the admin menu
function sso_plugin_add_settings_page() {
add_options_page(
'SSO Settings',
'SSO Login',
'manage_options',
'sso-plugin-settings',
'sso_plugin_render_settings_page'
);
}
add_action( 'admin_menu', 'sso_plugin_add_settings_page' );
// Render the settings page HTML
function sso_plugin_render_settings_page() {
?>
<div class="wrap">
<h1>SSO Login Settings</h1>
<form action="options.php" method="post">
<?php
settings_fields( 'sso_plugin_options' );
do_settings_sections( 'sso_plugin_settings' );
?>
<input
type="text"
name="sso_plugin_url"
value="<?php echo esc_attr( get_option( 'sso_plugin_url' ) ); ?>"
size="50"
placeholder="Enter the full SSO URL"
/>
<?php submit_button( 'Save Settings' ); ?>
</form>
</div>
<?php
}
// Register the setting
function sso_plugin_register_settings() {
register_setting(
'sso_plugin_options',
'sso_plugin_url',
[
'type' => 'string',
'sanitize_callback' => 'esc_url_raw',
'default' => '',
]
);
add_settings_section(
'sso_plugin_main_section',
'Main Settings',
null,
'sso_plugin_settings'
);
}
add_action( 'admin_init', 'sso_plugin_register_settings' );