跳至内容
WordPress.org

China 简体中文

  • 主题
  • 插件
  • 新闻
    • 文档
    • 论坛
  • 关于
  • 获取 WordPress
获取 WordPress
WordPress.org

Plugin Directory

DocCheck Access

  • 提交插件
  • 我的收藏
  • 登录
  • 提交插件
  • 我的收藏
  • 登录

DocCheck Access

作者:DocCheck agency (antwerpes)
下载
  • 详情
  • 评价
  • 安装
  • 开发进展
支持

描述

The DocCheck Access plugin integrates DocCheck’s OAuth2 authentication system into your WordPress site, allowing medical professionals to log in using their DocCheck credentials.

Note: Using DocCheck Access requires the Economy or Business license model. This plugin cannot be used with the Basic license model. Please contact DocCheck for details on available license models.

Features

  • Adds a DocCheck login button via shortcode or automatic page-level protection
  • OAuth 2.0 Authorization Code flow with PKCE for secure authentication
  • Two authentication modes: Anonymous Session and WordPress User creation
  • Per-page and global content protection with role-based access control
  • Configurable scope and user metadata mapping
  • Template override support for protected pages
  • Hooks and filters for developers to customize behavior

External Services

This plugin connects to the following external services:

DocCheck OAuth Server (https://auth.doccheck.com)

Used to exchange the OAuth authorization code for an access token and to retrieve the authenticated user’s profile data. This connection is only made when a visitor actively clicks the DocCheck login button. Please refer to the DocCheck Privacy Policy and DocCheck Terms of Service.

DocCheck CDN (https://dccdn.de)

The DocCheck login button is a web component whose script is served from DocCheck’s CDN. It is loaded only on pages where the [docacc_login] shortcode or page-level protection is active — not on every page. Please refer to the DocCheck Privacy Policy.

No data is transmitted to any other third-party service.

Requirements

  • WordPress 5.0 or higher
  • PHP 7.2 or higher
  • A DocCheck OAuth client ID and client secret (obtainable from DocCheck)

General Settings

Go to Settings > DocCheck Login in your WordPress admin to configure the plugin. You can also open the settings directly from the Settings link on the WordPress plugins overview screen.

OAuth Credentials

  • Client ID — Your DocCheck OAuth Client ID.
  • Client Secret — Your DocCheck OAuth Client Secret.
  • Redirect URI — Auto-generated based on your site URL. Copy this value into your DocCheck application settings.

Redirection & Debug

  • Default Target Page — The page users land on after a successful login.
  • Debug Mode — Logs detailed API and authentication information. Disable on production sites.

Content Protection

Restrict Options before Login

  • Use Custom Template — Default behavior. Replaces the protected page output with the protected-content template or your theme override.
  • Redirect to Page Link — Sends unauthenticated visitors to a public page of your choice. After login, they are redirected back to the originally requested protected page.

  • Make all Pages Private — Requires DocCheck login for every page on the site.

  • Auto-assign Parent Configurations — Child pages automatically inherit their parent page’s protection status.
  • Login Button Version — Pin a specific component version (e.g. 3.2.7) or use @latest to always load the most recent version.

User Management

Authentication Modes

  • Anonymous Session — Users are authenticated via DocCheck but no WordPress user account is created. Data is held only for the duration of the PHP session and is not stored permanently.
  • WordPress User — A WordPress user account is created or linked on the visitor’s first DocCheck login. Allows persistent storage of user properties and role-based access control.

Role & Metadata

  • Default User Role — The WordPress role assigned to newly created DocCheck users. Only low-privilege roles (those without manage_options or edit_others_posts capabilities) are available for selection. Administrator and Editor roles cannot be assigned to DocCheck users.
  • Automatic User Creation — Disabled by default. In WordPress User mode, local user creation for first-time DocCheck logins must be explicitly enabled by an administrator.
  • Scope & Property Selection — Choose which DocCheck scopes to request and which user properties to store as WordPress user metadata.

Developer Hooks

Actions

  • docacc_user_created — Fires after a new WordPress user is created via DocCheck login.
    Parameters: $user_id (int), $user_data (array)

  • docacc_user_logged_in — Fires when an existing user logs in via DocCheck.
    Parameters: $user_id (int), $user_data (array)

  • docacc_session_created — Fires when a user is authenticated in anonymous session mode.
    Parameters: $user_data (array)

Filters

  • docacc_map_role — Customize role assignment based on DocCheck user data.
    Parameters: $current_role (string), $user_data (array), $user_id (int)
    Note: roles with manage_options or edit_others_posts capabilities are silently rejected for security reasons.

  • docacc_protected_template — Override the template used for protected pages.
    Parameters: $template (string)

  • docacc_is_authenticated — Override the authentication check result.
    Parameters: $authenticated (bool)

  • docacc_user_data — Modify the DocCheck user data array before it is used.
    Parameters: $user_data (array)

Template Functions

// Check if the current visitor is authenticated via DocCheck
docacc_is_authenticated(); // returns bool

// Get the authenticated user's DocCheck profile fields
docacc_get_user_data(); // returns array, empty if not authenticated

Example in a theme template:

<?php if ( docacc_is_authenticated() ) : ?>
    <div class="hcp-content">Visible only to DocCheck users.</div>
<?php else : ?>
    <?php echo do_shortcode( '[docacc_login]' ); ?>
<?php endif; ?>

Custom Protected Page Template

The plugin provides a default template for pages that are DocCheck protected. You can customize this in two ways.

Theme Template File

Create doccheck-protected.php in your active theme root. The plugin will load it automatically instead of the built-in fallback template.

<?php
/**
 * Template used for DocCheck protected pages.
 *
 * Place this file in your active theme:
 * /wp-content/themes/your-theme/doccheck-protected.php
 */

if ( ! defined( 'ABSPATH' ) ) {
    exit;
}

get_header();
?>

<main class="doccheck-protected-page">
    <section class="doccheck-protected-box">
        <h1><?php the_title(); ?></h1>
        <p>This content is protected. Please log in with your DocCheck account to continue.</p>

        <?php echo do_shortcode( '[docacc_login samepageredirect="1"]' ); ?>
    </section>
</main>

<?php get_footer(); ?>

WordPress Filter

Use the docacc_protected_template filter in your theme’s functions.php when you want to load a template from a custom location.

add_filter( 'docacc_protected_template', function( $template ) {
    $custom_template = get_stylesheet_directory() . '/templates/doccheck/custom-protected.php';

    if ( file_exists( $custom_template ) ) {
        return $custom_template;
    }

    return $template;
} );

How the template is used: the plugin loads this template only for singular protected content when the visitor is not authenticated. Your template runs as a normal WordPress theme template, so you can use functions like get_header(), get_footer(), the_title(), and do_shortcode(). In most cases, you should render the login button with [docacc_login samepageredirect="1"] so the user returns to the same protected page after login.

User Metadata Stored

In WordPress User mode, the following meta fields are stored per user (subject to selected scopes):

  • docacc_unique_id — DocCheck unique identifier (always stored)
  • docacc_profession — Profession name
  • docacc_country — Country ISO code
  • docacc_language — Interface language
  • first_name, last_name — Name fields
  • docacc_email — Email address
  • docacc_discipline_name — Medical discipline
  • docacc_activity_name — Activity type
  • docacc_area_code, docacc_street, docacc_city, docacc_state — Address fields
  • docacc_last_login — Timestamp of last DocCheck login

屏幕截图

General Settings overview.
General Settings overview.
User Management with Anonymous Session selected.
User Management with Anonymous Session selected.
User Management with WordPress User selected.
User Management with WordPress User selected.

安装

  1. Upload the doccheck-access folder to the /wp-content/plugins/ directory.
  2. Activate the plugin through the Plugins menu in WordPress.
  3. Go to Settings > DocCheck Login and enter your DocCheck OAuth credentials.
  4. Copy the displayed Redirect URI into your DocCheck application settings.
  5. Add [docacc_login] to any page or post where you want the login button to appear.

常见问题

How do I get DocCheck OAuth credentials?

Contact DocCheck to register your application and obtain a client ID and client secret.

Can I customize the appearance of the login button?

Yes. The [docacc_login] shortcode accepts a size attribute (small, medium, large). You can also apply custom CSS to the dc-login-button element.

How does user creation work?

In WordPress User mode, a new account is created on the visitor’s first DocCheck login. The DocCheck unique ID is stored as user meta (docacc_unique_id) and used to match subsequent logins to the same account.

Can I map DocCheck user types to specific WordPress roles?

Yes. Use the docacc_map_role filter:

add_filter( 'docacc_map_role', function( $role, $user_data, $user_id ) {
    if ( isset( $user_data['profession'] ) && $user_data['profession'] === 'physician' ) {
        return 'editor';
    }
    return $role;
}, 10, 3 );

How do I protect a single page?

Edit the page in the WordPress admin. A DocCheck Protection metabox appears in the sidebar — check Protect this page and save.

Can I protect all pages at once?

Yes. Enable Make all Pages Private under Settings > DocCheck Login.

评价

此插件暂无评价。

贡献者及开发者

「DocCheck Access」是开源软件。 以下人员对此插件做出了贡献。

贡献者
  • DocCheck agency (antwerpes)

帮助将「DocCheck Access」翻译成简体中文。

对开发感兴趣吗?

您可以浏览代码,查看SVN仓库,或通过RSS订阅开发日志。

更新日志

1.0.8

  • Feature: Added a pre-login restriction mode that can either show the protected-content template or redirect unauthenticated visitors to a public login page and then return them to the originally requested protected page.

1.0.7

  • Cache: Disabled full-page, object, and DB caching for DocCheck login, protected-content, and OAuth callback responses so one-time login state cannot be served from cache.

1.0.6

  • Added a direct Settings link to the plugin row on the WordPress plugins overview screen for faster access to options-general.php?page=doccheck-access.

1.0.5

  • Review fix: Removed WordPress auth salt usage from OAuth state. The state parameter now contains only a nonce, while redirect and tracking data are kept server-side in a one-time transient.
  • Review fix: Recursively sanitize DocCheck anonymous-session data before storing and before exposing it through helper APIs.
  • Review fix: Updated the WordPress.org contributors field to the plugin owner username.

1.0.4

  • Review fix: Sanitized the wp_list_pages() HTML returned by the [docacc_sitemap] shortcode before concatenating it into shortcode output.

1.0.3

  • Review fix: Renamed plugin-owned global identifiers to the unique docacc prefix, including functions, classes, constants, options, hooks, transients, session keys, user meta keys, role slug, and shortcodes.
  • Review fix: Replaced shortcodes with [docacc_login], [docacc_hide_content], [docacc_logout], and [docacc_sitemap].
  • Review fix: Removed plugin-owned class_exists() and function_exists() wrappers to avoid silent conflicts with other plugins or themes.
  • Review fix: Updated the OAuth callback query var, settings option, admin documentation, developer hooks, and examples to use the docacc prefix consistently.
  • Compatibility: Added idempotent settings initialization so the renamed settings option is created safely during updates as well as new activations.

1.0.2

  • Security: Restricted the Default User Role dropdown to low-privilege roles only (excludes roles with manage_options or edit_others_posts).
  • Security: Added server-side validation in validate_settings() to reject high-privilege roles even if submitted directly.
  • Security: The docacc_map_role filter result is now validated before set_role() is called, preventing privilege escalation via custom filter callbacks.
  • Security: Added explicit opt-in for automatic local user creation (allow_user_creation), defaulted to off, and defaulted new installs to Anonymous Session mode.

1.0.1

  • Review fix: Replaced inline <script> and <style> output with proper WordPress enqueue APIs.
  • Added admin JavaScript through admin_enqueue_scripts + wp_add_inline_script() for settings tabs, scope/property matrix behavior, redirect URI copy button, and metabox role toggle.
  • Moved matrix CSS and protected fallback template CSS into enqueued stylesheet assets.
  • Review fix: Updated register_setting() arguments and adjusted client_secret sanitization to use a dedicated secret-safe callback instead of generic text-field sanitization.
  • Review fix: Escaped shortcode callback return output for docacc_logout and sanitized rendered docacc_hide_content output with wp_kses_post().
  • Review fix: Removed global session start behavior and introduced lazy, cookie-aware session initialization only in DocCheck authentication/session contexts.

1.0.0

  • Initial release.

额外信息

  • 版本 1.0.9
  • 最后更新:2 月前
  • 活跃安装数量 60+
  • WordPress 版本 6.0 或更高版本
  • 已测试的最高版本为 7.0.4
  • PHP 版本 8.0 或更高版本
  • 语言
    English (US)
  • 标签
    authenticationDocCheckhcploginmedical
  • 高级视图

评级

尚未提交反馈。

您的评价

查看全部评论

贡献者

  • DocCheck agency (antwerpes)

支持

最近两个月解决的问题:

总计 2,已解决 1

查看支持论坛

  • 关于
  • 新闻
  • 主机
  • 隐私
  • 陈列窗
  • 主题
  • 插件
  • 区块样板
  • 学习
  • 支持
  • 开发者
  • WordPress.tv ↗︎
  • 参与
  • 活动
  • 捐赠 ↗
  • 周边商品 ↗
  • WordPress.com ↗
  • Matt ↗
  • bbPress ↗
  • BuddyPress ↗
WordPress.org
WordPress.org

China 简体中文

  • 关注我们的 X(原 Twitter)账号
  • 访问我们的 Bluesky 账号
  • 关注我们的 Mastodon 账号
  • 访问我们的 Threads 账号
  • 访问我们的 Facebook 公共主页
  • 关注我们的 Instagram 账号
  • 关注我们的 LinkedIn 主页
  • 访问我们的 TikTok 账号
  • 访问我们的 YouTube 频道
  • 访问我们的 Tumblr 账号
代码如诗
The WordPress® trademark is the intellectual property of the WordPress Foundation.