GOV.UK Personalisation

A gem to hold shared code which other GOV.UK apps use to implement accounts-related functionality.

Installation

Add this line to your application's Gemfile:

gem 'govuk_personalisation'

And then execute:

$ bundle install

Usage

Rails concern

Include the concern into a controller:

include GovukPersonalisation::AccountConcern

And it will add before_action methods to:

  • fetch the account session identifier from the request headers, making it available as account_session_header
  • set a Vary response header, to ensure responses for different users are cached differently by the CDN

The following functions are available:

  • logged_in? - check if there is an account session header
  • set_account_session_header - replace the current session value, and set the response header the CDN uses to update the user's cookie
  • logout! - clear the session value, and set the response header the CDN uses to remove the user's cookie

When run in development mode (RAILS_ENV=development), a cookie on dev.gov.uk is used instead of custom headers.

Test helpers

There are test helpers for both request and feature specs to log the user in. Include the relevant helper:

include GovukPersonalisation::TestHelpers::Requests

or

include GovukPersonalisation::TestHelpers::Features

And then log the user in:

before do
  mock_logged_in_session
end

If you need a specific session identifier, for example to match against it in WebMock stubs or with the gds-api-adapters test helpers, you can pass it as an argument:

before do
  mock_logged_in_session("your-session-identifier-goes-here")
end

License

The gem is available as open source under the terms of the MIT License.