119602: Make AccessibilitySettings cookie expiration configurable

This commit is contained in:
Andreas Awouters
2024-11-05 15:52:11 +01:00
parent 82fd9539b7
commit 37455a8b6c
6 changed files with 30 additions and 6 deletions

View File

@@ -394,3 +394,8 @@ liveRegion:
messageTimeOutDurationMs: 30000
# The visibility of the live region. Setting this to true is only useful for debugging purposes.
isVisible: false
# Configuration for storing accessibility settings, used by the AccessibilitySettingsService
accessibility:
# The duration in days after which the accessibility settings cookie expires
cookieExpirationDuration: 7

View File

@@ -0,0 +1,11 @@
import { Config } from '../../config/config.interface';
/**
* Configuration interface used by the AccessibilitySettingsService
*/
export class AccessibilitySettingsConfig implements Config {
/**
* The duration in days after which the accessibility settings cookie expires
*/
cookieExpirationDuration: number;
}

View File

@@ -8,6 +8,7 @@ import { EPerson } from '../core/eperson/models/eperson.model';
import { EPersonDataService } from '../core/eperson/eperson-data.service';
import { getFirstCompletedRemoteData } from '../core/shared/operators';
import cloneDeep from 'lodash/cloneDeep';
import { environment } from '../../environments/environment';
/**
* Name of the cookie used to store the settings locally
@@ -19,11 +20,6 @@ export const ACCESSIBILITY_COOKIE = 'dsAccessibilityCookie';
*/
export const ACCESSIBILITY_SETTINGS_METADATA_KEY = 'dspace.accessibility.settings';
/**
* The duration in days after which the accessibility settings cookie expires
*/
export const ACCESSIBILITY_SETTINGS_COOKIE_STORAGE_DURATION = 7;
/**
* Enum containing all possible accessibility settings.
* When adding new settings, the {@link AccessibilitySettingsService#getInputType} method and the i18n keys for the
@@ -208,7 +204,7 @@ export class AccessibilitySettingsService {
*/
setSettingsInCookie(settings: AccessibilitySettings) {
if (isNotEmpty(settings)) {
this.cookieService.set(ACCESSIBILITY_COOKIE, settings, { expires: ACCESSIBILITY_SETTINGS_COOKIE_STORAGE_DURATION });
this.cookieService.set(ACCESSIBILITY_COOKIE, settings, { expires: environment.accessibility.cookieExpirationDuration });
} else {
this.cookieService.remove(ACCESSIBILITY_COOKIE);
}

View File

@@ -23,6 +23,7 @@ import { MarkdownConfig } from './markdown-config.interface';
import { FilterVocabularyConfig } from './filter-vocabulary-config';
import { DiscoverySortConfig } from './discovery-sort.config';
import { LiveRegionConfig } from '../app/shared/live-region/live-region.config';
import { AccessibilitySettingsConfig } from '../app/accessibility/accessibility-settings.config';
interface AppConfig extends Config {
ui: UIServerConfig;
@@ -50,6 +51,7 @@ interface AppConfig extends Config {
vocabularies: FilterVocabularyConfig[];
comcolSelectionSort: DiscoverySortConfig;
liveRegion: LiveRegionConfig;
accessibility: AccessibilitySettingsConfig;
}
/**

View File

@@ -23,6 +23,7 @@ import { MarkdownConfig } from './markdown-config.interface';
import { FilterVocabularyConfig } from './filter-vocabulary-config';
import { DiscoverySortConfig } from './discovery-sort.config';
import { LiveRegionConfig } from '../app/shared/live-region/live-region.config';
import { AccessibilitySettingsConfig } from '../app/accessibility/accessibility-settings.config';
export class DefaultAppConfig implements AppConfig {
production = false;
@@ -439,4 +440,9 @@ export class DefaultAppConfig implements AppConfig {
messageTimeOutDurationMs: 30000,
isVisible: false,
};
// Accessibility settings configuration, used by the AccessibilitySettingsService
accessibility: AccessibilitySettingsConfig = {
cookieExpirationDuration: 7,
};
}

View File

@@ -319,4 +319,8 @@ export const environment: BuildConfig = {
messageTimeOutDurationMs: 30000,
isVisible: false,
},
accessibility: {
cookieExpirationDuration: 7,
},
};