New Case Study:See how Anthropic automated 95% of dependency reviews with Socket.Learn More
Socket
Sign inDemoInstall
Socket

vue3-smart-captcha

Package Overview
Dependencies
Maintainers
0
Versions
11
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

vue3-smart-captcha

Yandex Smart Captcha for Vue3 projects

  • 0.5.0
  • npm
  • Socket score

Version published
Maintainers
0
Created
Source

Yandex SmartCaptcha for Vue3 projects

Adds Yandex SmartCaptcha component into your Vue3 application

You need to create Captcha and get keys. You need client site key in order to activate captcha component and it is the only required property

NOTE: this package does NOT provides verification of response - you still need to implement it

Installation

Install it using npm

npm install vue3-smart-captcha

# Or using pnpm
pnpm add vue3-smart-captcha

Usage

No need to add widget script in the head section of your site

As plugin

// main.js
import { createApp } from 'vue'
import { SmartCaptchaPlugin } from 'vue3-smart-captcha'

const app = createApp({})

app.use(SmartCaptchaPlugin)

As component

<template>
    <SmartCaptcha :sitekey="sitekey" />
</template>

<script setup>
import { SmartCaptcha } from 'vue3-smart-captcha'

const sitekey = 'client_site_key' // import.meta.env.VITE_YANDEX_SMART_CAPTCHA_KEY
</script>

You may add style="height: 100px" in order to prevent layout jump

<template>
    <SmartCaptcha style="height: 100px" :sitekey="sitekey" />
</template>

Options

Only sitekey is required

PropertyDefaultDescriptionType
sitekey-Public site key (find it at Yandex console panel)string
loadWidgettrueLoad widget script or not (if not you should provide source script itself)boolean
timeout2000How much time will component looking for smartCaptcha object to initializenumber
callbackundefinedRender property (1)(token: string) => void
hlwindow.navigator.languageSee [1]'ru', 'en', 'be', 'kk', 'tt', 'uk', 'uz', 'tr'
testfalseSee [1]boolean
webviewfalseSee [1]boolean
invisiblefalseSee [1]boolean
shieldPositioncenter-rightSee [1]'top-left', 'center-left', 'bottom-left', 'top-right', 'center-right', 'bottom-right'
hideShieldfalseSee [1]boolean
on-successundefinedSubscription event (2)(token: string) => void
on-network-errorundefinedSee [2]() => void
on-challenge-visibleundefinedSee [2]() => void
on-challenge-hiddenundefinedSee [2]() => void
on-token-expiredundefinedSee [2]() => void

Basically it gets every parameter of window.smartCaptcha object plus 5 callbacks for every subscription events named as on + event name in camelCase ('success' => 'onSuccess', 'network-error' => 'onNetworkError', etc)

Do not load widget

You may add script tag <script src="https://smartcaptcha.yandexcloud.net/captcha.js?render=onload" defer></script> yourself or using Nuxt config like

export default defineNuxtConfig({
  app: {
    head: {
      script: [
        {
          src: 'https://smartcaptcha.yandexcloud.net/captcha.js?render=onload',
          defer: true,
        }
      ]
    }
  }
})

This way you don't need to render widget script itself. Just set :load-widget="false" to disable script loading

<template>
    <SmartCaptcha sitekey="sitekey" :load-widget="false" />
</template>

You can specify amount of time in timeout how much script will try to resolve window.smartCaptcha object before give up

Invisible captcha

Pass invisible property

<template>
    <SmartCaptcha sitekey="sitekey" invisible />
</template>

Of course you need to handle validation yourself. You can use helper methods provided by this package or use global window.smartCaptcha object

Helper methods

window.smartCaptcha object should be available globally. However package provides 4 helper methods with the same functionality

import { 
    execute, // execute captcha
    destroy, // destroy it
    reset, // reset token
    getResponse, // receive token
} from 'vue3-smart-captcha'

Events

When captcha initialized you can subscribe to initialized emitted event

<template>
    <SmartCaptcha sitekey="sitekey" @initialized="setWidgetId" />
</template>

<script setup>
const widgetID = ref()

const setWidgetId = (id) => {
    console.log(id)

    widgetID.value = id
}
</script>

License

Open-source under MIT license

Testing

We are using Vitest

Help wanted to cover properties were passed to window.smartCaptcha object

pnpm test

Keywords

FAQs

Package last updated on 17 Nov 2024

Did you know?

Socket

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
  • Changelog

Packages

npm

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc