Skip to content

druxt/druxt-auth

Repository files navigation

DruxtAuth

npm CI Known Vulnerabilities codecov

Druxt Authentication with Drupal Simple OAuth2 and nuxt/auth.

Links

Install

$ npm install druxt-auth

Nuxt.js

Add module to nuxt.config.js

module.exports = {
  buildModules: [
    'druxt',
    ['druxt-auth', {
      clientId: '[DRUPAL_CONSUMER_UUID]',
      clientSecret: '[DRUPAL_CONSUMER_SECRET]',
      scope: ['default'],
    }]
  ],
  druxt: {
    baseUrl: 'https://demo-api.druxtjs.org'
  },
}

Note: Replace [DRUPAL_CONSUMER_UUID] and [DRUPAL_CONSUMER_SECRET] with the details from the consumer created in the following step.

Drupal

  1. Download, install and setup the Simple OAuth module.

  2. Create a Consumer depending on your desired authorization strategy:

    • Authorization Code grant:

      • New Secret: leave this empty
      • Is Confidential: unchecked
      • Use PKCE?: checked
      • Redirect URI: [FRONTEND_URL]/callback (e.g., http://localhost:3000/callback)
    • Password grant:

      • New Secret: provide a secure secret
      • Is Confidential: checked
      • Redirect URI: [FRONTEND_URL]/callback (e.g., http://localhost:3000/callback)

Usage

The DruxtAuth module installs and configures the nuxt/auth module for your Druxt site.

It adds two auth strategies that can be used via the $auth plugin:

  • drupal-authorization_code

    this.$nuxt.$auth.loginWith('drupal-authorization_code')
  • drupal-password

    this.$nuxt.$auth.loginWith('drupal-password', {
      data: {
        username: '',
        password: ''
      }
    })

    Note: Nuxt must be running in SSR mode for password grant, and client secret must be set.

  • See the nuxt/auth documentation form more details: https://auth.nuxtjs.org/api/auth

Options

Option Type Required Default Description
clientId string Yes undefined The Drupal Consumer UUID
clientSecret string No undefined The Drupal Consumer API secret. Required for Password grant.
scope array No undefined The OAuth Scopes to be used for the Drupal Consumer.