Auto-redirect invite tokens to the registration page; rename invite button
CI / Coding Standards (pull_request) Successful in 55s
CI / PHPStan (pull_request) Successful in 59s
CI / Tests (PHP 8.1) (pull_request) Successful in 51s
CI / Tests (PHP 8.2) (pull_request) Successful in 50s
CI / Tests (PHP 8.3) (pull_request) Successful in 47s
CI / No Debug Code (pull_request) Successful in 3s
CI / Build Plugin Zip (pull_request) Has been skipped
CI / Coding Standards (pull_request) Successful in 55s
CI / PHPStan (pull_request) Successful in 59s
CI / Tests (PHP 8.1) (pull_request) Successful in 51s
CI / Tests (PHP 8.2) (pull_request) Successful in 50s
CI / Tests (PHP 8.3) (pull_request) Successful in 47s
CI / No Debug Code (pull_request) Successful in 3s
CI / Build Plugin Zip (pull_request) Has been skipped
- RegistrationPage::maybeRedirectToRegistrationPage() (hooked on template_redirect): any front-end request carrying a us_invite token is redirected to the configured registration page (token preserved), unless already there. Covers links shared before a page was selected; no-op when no page is set. - Invites button text: "Send Invite" -> "Generate Invitation Link". - Doc updated. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
@@ -48,6 +48,13 @@ recorded in `us_policy_acceptances` with `registration_type = account` and
|
||||
## Frontend Shortcode
|
||||
- `[us_student_register]` — the registration page. Shows the form for a valid pending invite; otherwise shows an "by invitation only" message (in `invite` mode).
|
||||
|
||||
## Token Redirect
|
||||
A `template_redirect` handler (`RegistrationPage::maybeRedirectToRegistrationPage()`)
|
||||
sends any front-end request carrying a `us_invite` token to the configured
|
||||
registration page (preserving the token), unless it is already on that page. This
|
||||
covers invitation links generated/shared before a registration page was selected.
|
||||
No-op when no registration page is set.
|
||||
|
||||
## Capabilities
|
||||
- `manage_students` — manage invites (studio admin; administrators inherit it via the `user_has_cap` filter). Added to `RoleManager::STUDIO_ADMIN_CAPS`.
|
||||
|
||||
|
||||
@@ -52,6 +52,31 @@ class RegistrationPage {
|
||||
return (string) ob_get_clean();
|
||||
}
|
||||
|
||||
/**
|
||||
* Redirect to the configured registration page when an invite token lands
|
||||
* elsewhere (e.g. a link generated before the page was selected). Hooked on
|
||||
* `template_redirect`.
|
||||
*/
|
||||
public function maybeRedirectToRegistrationPage(): void {
|
||||
if ( is_admin() ) {
|
||||
return;
|
||||
}
|
||||
|
||||
// phpcs:ignore WordPress.Security.NonceVerification.Recommended -- read-only token used only to build the redirect target.
|
||||
$token = sanitize_text_field( wp_unslash( $_GET['us_invite'] ?? '' ) );
|
||||
if ( '' === $token ) {
|
||||
return;
|
||||
}
|
||||
|
||||
$pageId = (int) get_option( RegistrationController::OPTION_PAGE, 0 );
|
||||
if ( $pageId <= 0 || is_page( $pageId ) ) {
|
||||
return;
|
||||
}
|
||||
|
||||
wp_safe_redirect( add_query_arg( 'us_invite', rawurlencode( $token ), (string) get_permalink( $pageId ) ) );
|
||||
exit;
|
||||
}
|
||||
|
||||
/**
|
||||
* Process the submitted registration. Returns true on success or an error
|
||||
* message string on failure.
|
||||
|
||||
@@ -32,6 +32,7 @@ class ShortcodeRegistrar {
|
||||
add_shortcode( 'us_booking', [ $this->bookingPage, 'render' ] );
|
||||
add_shortcode( 'us_student_login', [ $this->loginPage, 'render' ] );
|
||||
add_shortcode( 'us_student_register', [ $this->registrationPage, 'render' ] );
|
||||
add_action( 'template_redirect', [ $this->registrationPage, 'maybeRedirectToRegistrationPage' ] );
|
||||
add_action( 'wp_enqueue_scripts', [ $this, 'enqueueAssets' ] );
|
||||
}
|
||||
|
||||
|
||||
@@ -55,7 +55,7 @@ if (! defined('ABSPATH')) {
|
||||
<td><input type="email" name="email" id="email" class="regular-text" required></td>
|
||||
</tr>
|
||||
</table>
|
||||
<?php submit_button(esc_html__('Send Invite', 'unsupervised-schedular')); ?>
|
||||
<?php submit_button(esc_html__('Generate Invitation Link', 'unsupervised-schedular')); ?>
|
||||
</form>
|
||||
|
||||
<h2><?php esc_html_e('Pending Invites', 'unsupervised-schedular'); ?></h2>
|
||||
|
||||
Reference in New Issue
Block a user