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 messageTimeOutDurationMs: 30000
# The visibility of the live region. Setting this to true is only useful for debugging purposes. # The visibility of the live region. Setting this to true is only useful for debugging purposes.
isVisible: false 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 { EPersonDataService } from '../core/eperson/eperson-data.service';
import { getFirstCompletedRemoteData } from '../core/shared/operators'; import { getFirstCompletedRemoteData } from '../core/shared/operators';
import cloneDeep from 'lodash/cloneDeep'; import cloneDeep from 'lodash/cloneDeep';
import { environment } from '../../environments/environment';
/** /**
* Name of the cookie used to store the settings locally * 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'; 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. * Enum containing all possible accessibility settings.
* When adding new settings, the {@link AccessibilitySettingsService#getInputType} method and the i18n keys for the * 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) { setSettingsInCookie(settings: AccessibilitySettings) {
if (isNotEmpty(settings)) { 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 { } else {
this.cookieService.remove(ACCESSIBILITY_COOKIE); this.cookieService.remove(ACCESSIBILITY_COOKIE);
} }

View File

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

View File

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