core.bones.captcha

Module Contents

Classes

CaptchaBone

The CaptchaBone is used to ensure that a user is not a bot.

class core.bones.captcha.CaptchaBone(*, publicKey=None, privateKey=None, score_threshold=0.5, **kwargs)

Bases: viur.core.bones.base.BaseBone

The CaptchaBone is used to ensure that a user is not a bot.

The Captcha bone uses the Google reCAPTCHA API to perform the Captcha validation and supports v2 and v3.

See also

Option core.config.Security.captcha_default_credentials for global security settings.

Option core.config.Security.captcha_enforce_always for developing.

Initializes a new CaptchaBone.

publicKey and privateKey can be omitted, if they are set globally in core.config.Security.captcha_default_credentials.

Parameters:
  • publicKey (str) – The public key for the Captcha validation.

  • privateKey (str) – The private key for the Captcha validation.

  • score_threshold (float) –

  • kwargs (Any) –

Score_threshold:

If reCAPTCHA v3 is used, the score must be at least this threshold. For reCAPTCHA v2 this property will be ignored.

type = 'captcha'
serialize(skel, name, parentIndexed)

Serializing the Captcha bone is not possible so it return False

Parameters:
  • skel (viur.core.skeleton.SkeletonInstance) –

  • name (str) –

  • parentIndexed (bool) –

Return type:

bool

unserialize(skel, name)

Stores the publicKey in the SkeletonInstance

Parameters:
  • skel (viur.core.skeleton.SkeletonInstance) – The target SkeletonInstance.

  • name – The name of the CaptchaBone in the SkeletonInstance.

Returns:

boolean, that is true, as the Captcha bone is always unserialized successfully.

Return type:

Literal[True]

fromClient(skel, name, data)

Load the reCAPTCHA token from the provided data and validate it with the help of the API.

reCAPTCHA provides the token via callback usually as “g-recaptcha-response”, but to fit into the skeleton logic, we support both names. So the token can be provided as “g-recaptcha-response” or the name of the CaptchaBone in the Skeleton. While the latter one is the preferred name.

Parameters:
  • skel (viur.core.skeleton.SkeletonInstance) –

  • name (str) –

  • data (dict) –

Return type:

None | list[viur.core.bones.base.ReadFromClientError]