Skip to content

Commit

Permalink
[CST-15593] fix authenticated orejime cookie encoding
Browse files Browse the repository at this point in the history
  • Loading branch information
Andrea Barbasso committed Nov 4, 2024
1 parent 6257718 commit 5bd99a1
Show file tree
Hide file tree
Showing 4 changed files with 15 additions and 3 deletions.
2 changes: 1 addition & 1 deletion cypress/support/e2e.ts
Original file line number Diff line number Diff line change
Expand Up @@ -56,7 +56,7 @@ before(() => {
beforeEach(() => {
// Pre-agree to all Orejime cookies by setting the orejime-anonymous cookie
// This just ensures it doesn't get in the way of matching other objects in the page.
cy.setCookie('orejime-anonymous', '{%22authentication%22:true%2C%22preferences%22:true%2C%22acknowledgement%22:true%2C%22google-analytics%22:true%2C%22google-recaptcha%22:true}');
cy.setCookie('orejime-anonymous', '{"authentication":true,"preferences":true,"acknowledgement":true,"google-analytics":true}');

// Remove any CSRF cookies saved from prior tests
cy.clearCookie(DSPACE_XSRF_COOKIE);
Expand Down
2 changes: 1 addition & 1 deletion src/app/shared/cookies/browser-orejime.service.spec.ts
Original file line number Diff line number Diff line change
Expand Up @@ -70,7 +70,7 @@ describe('BrowserOrejimeService', () => {
configurationDataService = createConfigSuccessSpy(recaptchaValue);
findByPropertyName = configurationDataService.findByPropertyName;
cookieService = jasmine.createSpyObj('cookieService', {
get: '{%22token_item%22:true%2C%22impersonation%22:true%2C%22redirect%22:true%2C%22language%22:true%2C%22orejime%22:true%2C%22has_agreed_end_user%22:true%2C%22google-analytics%22:true}',
get: '{"authentication":true,"preferences":true,"acknowledgement":true,"google-analytics":true}',
set: () => {
/* empty */
},
Expand Down
2 changes: 1 addition & 1 deletion src/app/shared/cookies/browser-orejime.service.ts
Original file line number Diff line number Diff line change
Expand Up @@ -207,7 +207,7 @@ export class BrowserOrejimeService extends OrejimeService {
*/
private initializeUser(user: EPerson) {
this.orejimeConfig.callback = debounce((consent, app) => this.updateSettingsForUsers(user), updateDebounce);
this.orejimeConfig.storageName = this.getStorageName(user.uuid);
this.orejimeConfig.cookieName = this.getStorageName(user.uuid);

const anonCookie = this.cookieService.get(ANONYMOUS_STORAGE_NAME_OREJIME);
if (hasValue(this.getSettingsForUser(user))) {
Expand Down
12 changes: 12 additions & 0 deletions src/app/shared/cookies/orejime-configuration.ts
Original file line number Diff line number Diff line change
Expand Up @@ -44,6 +44,18 @@ export function getOrejimeConfiguration(_window: NativeWindowRef): any {
*/
appElement: 'ds-app',

stringifyCookie: (contents: any) => {
return (typeof contents === 'string') ? contents : JSON.stringify(contents);
},

parseCookie: (cookie: string) => {
if (typeof cookie === 'string') {
cookie = decodeURIComponent(cookie);
return JSON.parse(cookie);
}
return cookie;
},

/*
You can overwrite existing translations and add translations for your app
descriptions and purposes. See `src/translations/` for a full list of
Expand Down

0 comments on commit 5bd99a1

Please sign in to comment.