Allow guest users to choose site skin

Description

How to test:

For guests:

  • A guest user should see the "Choose Skin" section in the footer.

  • A guest user should be able to pick one of the 4 options in the chooser (Default, Low Vision Default, Reversi, and Snow Blue). The chosen site skin should stick around while the guest user browses different pages, and after the guest closes and opens a new browser session (unless the old session was private/incognito).

  • Multiple guest users can browse the site at the same time with different site skins (a guest should not see another guest's cached version of a page).

Site skin set by "Choose Skin" should still take precedence over site skin set in a user's preference:

  • If a guest chooses site skin A from the footer, then logs in as a user with no default site skin set in their preferences, they should keep using A.

  • If a guest chooses site skin A from the footer, then logs in as a user with a default site skin B set in their preferences, they should keep using A. If they then pick Default from "Choose Skin", they should start using B (not necessarily the Archive's default).

Notes: for guest site skins to work with full page caching by nginx, we need to:

  • Change skin actions (set/unset) to not use GET requests ().

  • Fix redirection after the set/unset skin actions (), to reduce confusion.

  • Save guest users' site skin preference in a separate cookie instead of the session cookie, for nginx's cookie-aware caching (similar to what we did with the adult warning preference in ).

Assignee

Unassigned

Reporter

redsummernight

Roadmap

Skins

Priority

Medium

Affects versions

Fix versions

None

Components

BackEnd

Difficulty

Medium

Milestone

Internal 0.9
Configure