1
0
mirror of https://github.com/LaCasemate/fab-manager.git synced 2025-02-10 04:54:14 +01:00
2022-03-22 11:27:18 +01:00

57 lines
1.9 KiB
JavaScript

'use strict';
/**
* Controller used for the cookies consent modal
*/
Application.Controllers.controller('CookiesController', ['$scope', '$cookies', 'Setting',
function ($scope, $cookies, Setting) {
/* PUBLIC SCOPE */
// the acceptation state (undefined if no decision was made until now)
$scope.cookiesState = undefined;
// link pointed by "learn more"
$scope.learnMoreUrl = 'https://www.cookiesandyou.com/';
// add a cookie to the browser, saving the user choice to refuse cookies
$scope.declineCookies = function () {
const expires = moment().add(13, 'months').toDate();
$cookies.put('fab-manager-cookies-consent', 'decline', { expires });
readCookie();
};
// add a cookie to the browser, saving the user choice to accept cookies.
// Then enable the analytics
$scope.acceptCookies = function () {
const expires = moment().add(13, 'months').toDate();
$cookies.put('fab-manager-cookies-consent', 'accept', { expires });
readCookie();
GTM.enableAnalytics(Fablab.trackingId);
};
/* PRIVATE SCOPE */
/**
* Kind of constructor: these actions will be realized first when the controller is loaded
*/
const initialize = function () {
readCookie();
// if the privacy policy was defined, redirect the user to it when clicking on "read more"
Setting.get({ name: 'privacy_body' }, data => {
if (data.setting.value) {
$scope.learnMoreUrl = '#!/privacy-policy';
}
});
// if the tracking ID was not set in the settings, only functional cookies will be set, so user consent is not required
if (!Fablab.trackingId) $scope.cookiesState = 'ignore';
};
const readCookie = function () {
$scope.cookiesState = $cookies.get('fab-manager-cookies-consent');
};
// !!! MUST BE CALLED AT THE END of the controller
return initialize();
}
]);