zazama/doubleoptin

A Silverstripe 4 module to implement GDPR required E-Mail double-opt-in.

Installs: 70

Dependents: 0

Suggesters: 0

Security: 0

Stars: 2

Watchers: 2

Forks: 0

Open Issues: 0

Type:silverstripe-vendormodule

1.0.3 2020-01-26 10:31 UTC

This package is auto-updated.

Last update: 2022-05-19 01:36:10 UTC


README

Packagist Version GitHub Scrutinizer code quality (GitHub/Bitbucket)

Introduction

DoubleOptIn extends Silverstripe and Userforms to implement a Double-Opt-In solution that is often required by new GDPR law. It will add a checkbox to Userforms to send a verification email before the submission/email is viewable/sent.

Requirements

  • silverstripe/framework ^4.0
  • silverstripe/admin ^1.0
  • silverstripe/userforms ^5.0

This module was only tested on the newest 4.4.

Installation

composer require zazama/doubleoptin

YAML configuration

# set a route for verification links
SilverStripe\Control\Director:
  rules:
    'verify': Zazama\DoubleOptIn\Controllers\VerificationController
Zazama\DoubleOptIn\Models\EmailVerification:
  url_segment: 'verify'
  # subject is ignored with Userforms, because that's set in admin frontend.
  subject: 'Email Verification'
# set sender for the verification email
Zazama\DoubleOptIn\Services\EmailSender:
  email_sender: 'example@yourdomain.com'

Userforms settings

  • To enable DoubleOptIn in a Userforms page, go to the Configuration tab and click "Enable Double-Opt-In"
  • Choose the Double-Opt-In E-Mail field (required, too)
  • Enter your verification email subject.

Usage with normal forms

    use Zazama\DoubleOptIn\Models\EmailVerification;

    public function handleFormVerification($data, $subject) {
        $email = $data['email'];
        $emailVerification = EmailVerification::create();
        $emailVerification->init($email);
        $emailVerification->send($subject);
        $emailVerification->write();
    }
    
    public function tokenChecks() {
        EmailVerification::IsSuccess($token); //bool
        EmailVerification::IsAlreadyVerified($token); //bool
        EmailVerification::IsBadToken($token); //bool
        EmailVerification::TokenType($token); //string
    }

Templates

The following templates can be overriden:

  • Zazama\DoubleOptIn\Layout\Verification_Success
  • Zazama\DoubleOptIn\Layout\Verification_BadToken
  • Zazama\DoubleOptIn\Layout\Verification_AlreadyVerified
  • Zazama\DoubleOptIn\Email\Email

If you just want to change the text, you can change the language strings.

Extension hooks

There are extension hooks provided to use the Verification controller.

class x extends Zazama\DoubleOptIn\Controllers\VerificationController {
  # called when successfully verified
  public function updateSuccess($token) {}

  # called when verification token is wrong / not provided
  public function updateBadToken() {}

  # called when verification token is already verified
  public function updateAlreadyVerified() {}
}

class y extends Zazama\DoubleOptIn\Models\EmailVerification {
  # change generated token
  public function updateGenerateToken($token) {}

  # change link
  public function updateLink($link) {}

  # change subject
  public function updateSubject($subject) {}
}