Socket
Socket
Sign inDemoInstall

@beyowi/svelte-recaptcha-v2

Package Overview
Dependencies
2
Maintainers
2
Versions
2
Alerts
File Explorer

Advanced tools

Install Socket

Detect and block malicious and high-risk dependencies

Install

    @beyowi/svelte-recaptcha-v2

Google ReCaptcha v2 implementation for Svelte and SvelteKit


Version published
Maintainers
2
Install size
78.2 kB
Created

Readme

Source

svelte-recaptcha-v2

svelte-recaptcha-v2

Google reCAPTCHA v2 implementation for Svelte SPA, SSR and sveltekit static sites.

Features

  • svelte server side rendering (SSR) friendly.
  • works with sveltekit SPA, SSR and static site adapters.
  • easy integration with third party form validation libraries.
  • fail-safe loader to inject recaptcha.
  • invisible recaptcha or checkbox recaptcha support.
  • event model for intercepting various recaptcha states.
  • handle all your form logic in a single submit handler.
  • proper DOM cleanup (deletes recaptcha completely)
  • documented, debug.js friendly source code.
  • typescript definitions are included for LSP.

Demonstration

svelte-recaptcha-v2 demo

Getting Started

# install as a development dependency
pnpm install -D svelte-recaptcha-v2

Basic Usage

Import the library onto your template and update your google key:

import { Recaptcha, recaptcha, observer } from "svelte-recaptcha-v2";
/*
 │Recaptcha: svelte <Recaptcha> component.
 │recaptcha: google method, gives you recaptcha.execute().
 │observer: allows you to track captcha state across components.
 */

const googleRecaptchaSiteKey="replace_with_yours";

In your form, add the component:

<Recaptcha
    sitekey={googleRecaptchaSiteKey}
    badge={"top"}
    size={"invisible"}
    on:success={onCaptchaSuccess}
    on:error={onCaptchaError}
    on:expired={onCaptchaExpire}
    on:close={onCaptchaClose}
    on:ready={onCaptchaReady} />

Setup your event handlers:

const onCaptchaReady = (event) => {
    console.log("recaptcha init has completed.")
    /*
     │You can enable your form button here.
     */
};

const onCaptchaSuccess = (event) => {
    userTracker.resolve(event);
    console.log("token received: " + event.detail.token);
    /*
     │If using checkbox method, you can attach your
     │form logic here, or dispatch your custom event.
     */
};

const onCaptchaError = (event) => {
    console.log("recaptcha init has failed.");
    /*
     │Usually due to incorrect siteKey.
     |Make sure you have the correct siteKey..
     */
};

const onCaptchaExpire = (event) => {
    console.log("recaptcha api has expired");
    /*
     │Normally, you wouldn't need to do anything.
     │Recaptcha should reinit itself automatically.
     */
};

const onCaptchaOpen = (event) => {
    console.log("google decided to challange the user");
    /*
     │This fires when the puzzle frame pops.
     */
};

const onCaptchaClose = (event) => {
    console.log("google decided to challange the user");
    /*
     │This fires when the puzzle frame closes.
     │Usually happens when the user clicks outside
     |the modal frame.
     */
};

Update your form handler:

const submitHandler = async () => {
    console.log("launching recaptcha");
    recaptcha.execute();

    console.log("pending for google response");
    const event = await Promise.resolve(observer);

    const recaptchaToken = event.detail?.token ? event.detail.token : false;

    if (!recaptchaToken) {
        console.log("recaptcha is NOT OK");
        return false;
    }

    console.log("token retrieved", recaptchaToken);
};

Debugging

If you would like to enable client side debugging, add {Recaptcha} value to your localStorage DEBUG key.

Issues

If any trouble, please create an issue. PRs are most welcome.

Todo

  • [] add recipes for validation libraries (felte, stock etc)
  • [] look into mutation observers

Keywords

FAQs

Last updated on 21 Sep 2022

Did you know?

Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.

Install

Related posts

SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc