From 6b34adabb3a9aa9c81a59827ce4f0ba1815d4107 Mon Sep 17 00:00:00 2001 From: Bachir Soussi Chiadmi Date: Fri, 17 May 2019 17:16:05 +0200 Subject: [PATCH] better syslog, get user roles on login --- composer.json | 1 + composer.lock | 50 ++++++++++- config/sync/core.extension.yml | 3 + config/sync/error_log.settings.yml | 12 +++ config/sync/syslog.settings.yml | 5 ++ config/sync/user.role.authenticated.yml | 2 + .../materio_jsonapi/materio_jsonapi.module | 30 +++---- .../custom/materiotheme/assets/dist/main.js | 86 +++++++++---------- .../materiotheme/vuejs/store/modules/user.js | 3 +- 9 files changed, 128 insertions(+), 64 deletions(-) create mode 100644 config/sync/error_log.settings.yml create mode 100644 config/sync/syslog.settings.yml diff --git a/composer.json b/composer.json index 5c3b05c2..1c484fa6 100644 --- a/composer.json +++ b/composer.json @@ -33,6 +33,7 @@ "drupal/console": "^1.0.2", "drupal/core": "^8.7.1", "drupal/entity_clone": "^1.0", + "drupal/error_log": "^1.0", "drupal/genpass": "1.x-dev", "drupal/login_history": "1.x-dev", "drupal/mailgun": "1.x-dev", diff --git a/composer.lock b/composer.lock index 3432e99e..10d86047 100644 --- a/composer.lock +++ b/composer.lock @@ -4,7 +4,7 @@ "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies", "This file is @generated automatically" ], - "content-hash": "bc11fe6d1de292436e12158c0c5f4099", + "content-hash": "b8885355b53124506546f75d8e3d43c8", "packages": [ { "name": "alchemy/zippy", @@ -5872,6 +5872,53 @@ "source": "https://git.drupalcode.org/project/entity_reference_revisions" } }, + { + "name": "drupal/error_log", + "version": "1.0.0", + "source": { + "type": "git", + "url": "https://git.drupalcode.org/project/error_log.git", + "reference": "8.x-1.0" + }, + "dist": { + "type": "zip", + "url": "https://ftp.drupal.org/files/projects/error_log-8.x-1.0.zip", + "reference": "8.x-1.0", + "shasum": "68e4d109391fcabfe5decb75a0dcceda0e073eba" + }, + "require": { + "drupal/core": "~8.0" + }, + "type": "drupal-module", + "extra": { + "branch-alias": { + "dev-1.x": "1.x-dev" + }, + "drupal": { + "version": "8.x-1.0", + "datestamp": "1548205084", + "security-coverage": { + "status": "covered", + "message": "Covered by Drupal's security advisory policy" + } + } + }, + "notification-url": "https://packages.drupal.org/8/downloads", + "license": [ + "GPL-2.0-or-later" + ], + "authors": [ + { + "name": "mfb", + "homepage": "https://www.drupal.org/user/12302" + } + ], + "description": "Sends log messages to the PHP error log.", + "homepage": "https://www.drupal.org/project/error_log", + "support": { + "source": "https://git.drupalcode.org/project/error_log" + } + }, { "name": "drupal/extlink", "version": "1.1.0", @@ -16101,6 +16148,7 @@ "drupal/domain": 20, "drupal/domain_alias": 20, "drupal/domain_config": 20, + "drupal/email_registration": 5, "drupal/entity_browser_enhanced": 5, "drupal/entity_clone": 15, "drupal/filefield_sources": 20, diff --git a/config/sync/core.extension.yml b/config/sync/core.extension.yml index d5566dd8..40bbb6aa 100644 --- a/config/sync/core.extension.yml +++ b/config/sync/core.extension.yml @@ -61,6 +61,7 @@ module: entity_browser: 0 entity_browser_enhanced: 0 entity_reference_revisions: 0 + error_log: 0 field: 0 field_group: 0 field_ui: 0 @@ -86,6 +87,7 @@ module: mailsystem: 0 materio_home: 0 materio_id: 0 + materio_jsonapi: 0 materio_migrate: 0 materio_samples: 0 matomo: 0 @@ -122,6 +124,7 @@ module: smtp: 0 state_machine: 0 synonyms: 0 + syslog: 0 system: 0 taxonomy: 0 telephone: 0 diff --git a/config/sync/error_log.settings.yml b/config/sync/error_log.settings.yml new file mode 100644 index 00000000..11e53e69 --- /dev/null +++ b/config/sync/error_log.settings.yml @@ -0,0 +1,12 @@ +log_levels: + level_0: true + level_1: true + level_2: true + level_3: true + level_4: true + level_5: true + level_6: true + level_7: true +ignored_channels: { } +_core: + default_config_hash: SAMpXusU9XDhy-bTk720d2XnjbA2xeE1ZDgye7Rizhw diff --git a/config/sync/syslog.settings.yml b/config/sync/syslog.settings.yml new file mode 100644 index 00000000..e49ba1aa --- /dev/null +++ b/config/sync/syslog.settings.yml @@ -0,0 +1,5 @@ +identity: '' +facility: 176 +format: '[!type|!request_uri|!uid|!ip] !message' +_core: + default_config_hash: vdXLRPZRg35PBykBRRXr6RTql5EJR_fUi2kxyZ8c5m0 diff --git a/config/sync/user.role.authenticated.yml b/config/sync/user.role.authenticated.yml index 399cc805..a99117c0 100644 --- a/config/sync/user.role.authenticated.yml +++ b/config/sync/user.role.authenticated.yml @@ -14,6 +14,7 @@ permissions: - 'access devel information' - 'access kint' - 'access synonyms entity autocomplete' + - 'access user profiles' - 'add composition entities' - 'add fil entities' - 'create corpus_documents workflow_transition' @@ -26,6 +27,7 @@ permissions: - 'edit own composition entities' - 'edit own fil entities' - 'manage own commerce_payment_method' + - 'materio_jsonapi ownroles' - 'opt-in or out of matomo tracking' - 'subscribe to newsletters' - 'use chutier' diff --git a/web/modules/custom/materio_jsonapi/materio_jsonapi.module b/web/modules/custom/materio_jsonapi/materio_jsonapi.module index 15f94954..639c09ed 100644 --- a/web/modules/custom/materio_jsonapi/materio_jsonapi.module +++ b/web/modules/custom/materio_jsonapi/materio_jsonapi.module @@ -3,28 +3,20 @@ use Drupal\Core\Entity\EntityInterface; use Drupal\Core\Session\AccountInterface; use Drupal\Core\Access\AccessResult; +use Drupal\Core\Field\FieldDefinitionInterface; +use Drupal\Core\Field\FieldItemListInterface; /** - * Implements hook_ENTITY_TYPE_access(). + * Implements hook_entity_field_access(). */ -function materio_jsonapi_user_role_access(EntityInterface $entity, $operation, AccountInterface $account) { - debug($operation, 'operation materio_jsonapi_user_role_access'); - // watchdog('materio_jsonapi_user_role_access'); - if ($operation === 'view') { - return AccessResult::allowedIfHasPermission($account, 'view role info'); +function materio_jsonapi_entity_field_access($operation, FieldDefinitionInterface $field_definition, AccountInterface $account, FieldItemListInterface $items = NULL) { + if ($field_definition->getName() == 'roles' && $operation == 'view') { + $user = $items->getEntity(); + if($account->id() == $user->id() && !$user->hasPermission('materio_jsonapi roles')){ + return AccessResult::allowedIfHasPermission($account, 'materio_jsonapi ownroles'); + } + return AccessResult::allowedIfHasPermission($account, 'materio_jsonapi roles'); + // return AccessResult::allowed(); } return AccessResult::neutral(); } - - -/** - * Implements hook_entity_field_access_alter(). - */ -function materio_jsonapi_entity_field_access_alter(array &$grants, array $context) { - debug($context, 'context materio_jsonapi_entity_field_access_alter'); - // watchdog('materio_jsonapi_entity_field_access_alter'); - $field = $context['field_definition']->getName(); - if ($field == 'roles' && $context['operation'] == 'view') { - $grants[':default'] = AccessResult::allowedIfHasPermission($context['account'], 'view role info'); - } -} diff --git a/web/themes/custom/materiotheme/assets/dist/main.js b/web/themes/custom/materiotheme/assets/dist/main.js index 1b0a2f64..192abc0e 100644 --- a/web/themes/custom/materiotheme/assets/dist/main.js +++ b/web/themes/custom/materiotheme/assets/dist/main.js @@ -389,11 +389,11 @@ eval("\n\nvar bind = __webpack_require__(/*! ./helpers/bind */ \"./node_modules/ /*!*************************************************************************************************************************************************************************************!*\ !*** ./node_modules/babel-loader/lib!./node_modules/vue-loader/lib??vue-loader-options!./web/themes/custom/materiotheme/vuejs/components/Content/Test.vue?vue&type=script&lang=js& ***! \*************************************************************************************************************************************************************************************/ -/*! exports provided: default */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { "use strict"; -eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var vuex__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! vuex */ \"./node_modules/vuex/dist/vuex.esm.js\");\n//\n//\n//\n//\n//\n//\n//\n\n/* harmony default export */ __webpack_exports__[\"default\"] = ({\n computed: { ...Object(vuex__WEBPACK_IMPORTED_MODULE_0__[\"mapState\"])({\n token: state => state.User.token,\n isloggedin: state => state.User.isloggedin\n })\n }\n});\n\n//# sourceURL=webpack:///./web/themes/custom/materiotheme/vuejs/components/Content/Test.vue?./node_modules/babel-loader/lib!./node_modules/vue-loader/lib??vue-loader-options"); +eval("\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\n\nvar _vuex = __webpack_require__(/*! vuex */ \"./node_modules/vuex/dist/vuex.esm.js\");\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; var ownKeys = Object.keys(source); if (typeof Object.getOwnPropertySymbols === 'function') { ownKeys = ownKeys.concat(Object.getOwnPropertySymbols(source).filter(function (sym) { return Object.getOwnPropertyDescriptor(source, sym).enumerable; })); } ownKeys.forEach(function (key) { _defineProperty(target, key, source[key]); }); } return target; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nvar _default = {\n computed: _objectSpread({}, (0, _vuex.mapState)({\n token: function token(state) {\n return state.User.token;\n },\n isloggedin: function isloggedin(state) {\n return state.User.isloggedin;\n }\n }))\n};\nexports.default = _default;\n\n//# sourceURL=webpack:///./web/themes/custom/materiotheme/vuejs/components/Content/Test.vue?./node_modules/babel-loader/lib!./node_modules/vue-loader/lib??vue-loader-options"); /***/ }), @@ -401,11 +401,11 @@ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var vuex /*!***********************************************************************************************************************************************************************************!*\ !*** ./node_modules/babel-loader/lib!./node_modules/vue-loader/lib??vue-loader-options!./web/themes/custom/materiotheme/vuejs/components/User/Login.vue?vue&type=script&lang=js& ***! \***********************************************************************************************************************************************************************************/ -/*! exports provided: default */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { "use strict"; -eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var vuex__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! vuex */ \"./node_modules/vuex/dist/vuex.esm.js\");\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n// https://github.com/alvar0hurtad0/drupal-vuejs-todo\n\n/* harmony default export */ __webpack_exports__[\"default\"] = ({\n data() {\n return {\n mail: '',\n password: ''\n };\n },\n\n computed: { ...Object(vuex__WEBPACK_IMPORTED_MODULE_0__[\"mapState\"])(['User'])\n },\n methods: { ...Object(vuex__WEBPACK_IMPORTED_MODULE_0__[\"mapActions\"])({\n getToken: 'User/getToken'\n }),\n\n // usernameInputHandler(input) {\n // this.username = input;\n // },\n // passwordInputHandler(input) {\n // this.password = input;\n // },\n login() {\n this.getToken({\n mail: this.mail,\n pass: this.password\n });\n }\n\n }\n});\n\n//# sourceURL=webpack:///./web/themes/custom/materiotheme/vuejs/components/User/Login.vue?./node_modules/babel-loader/lib!./node_modules/vue-loader/lib??vue-loader-options"); +eval("\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\n\nvar _vuex = __webpack_require__(/*! vuex */ \"./node_modules/vuex/dist/vuex.esm.js\");\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; var ownKeys = Object.keys(source); if (typeof Object.getOwnPropertySymbols === 'function') { ownKeys = ownKeys.concat(Object.getOwnPropertySymbols(source).filter(function (sym) { return Object.getOwnPropertyDescriptor(source, sym).enumerable; })); } ownKeys.forEach(function (key) { _defineProperty(target, key, source[key]); }); } return target; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nvar _default = {\n data: function data() {\n return {\n mail: '',\n password: ''\n };\n },\n computed: _objectSpread({}, (0, _vuex.mapState)(['User'])),\n methods: _objectSpread({}, (0, _vuex.mapActions)({\n getToken: 'User/getToken'\n }), {\n // usernameInputHandler(input) {\n // this.username = input;\n // },\n // passwordInputHandler(input) {\n // this.password = input;\n // },\n login: function login() {\n this.getToken({\n mail: this.mail,\n pass: this.password\n });\n }\n })\n};\nexports.default = _default;\n\n//# sourceURL=webpack:///./web/themes/custom/materiotheme/vuejs/components/User/Login.vue?./node_modules/babel-loader/lib!./node_modules/vue-loader/lib??vue-loader-options"); /***/ }), @@ -413,11 +413,11 @@ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var vuex /*!***************************************************************************************************************************************************************************************!*\ !*** ./node_modules/babel-loader/lib!./node_modules/vue-loader/lib??vue-loader-options!./web/themes/custom/materiotheme/vuejs/components/User/UserBlock.vue?vue&type=script&lang=js& ***! \***************************************************************************************************************************************************************************************/ -/*! exports provided: default */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { "use strict"; -eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var vuex__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! vuex */ \"./node_modules/vuex/dist/vuex.esm.js\");\n/* harmony import */ var vuejs_components_User_Login__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! vuejs/components/User/Login */ \"./web/themes/custom/materiotheme/vuejs/components/User/Login.vue\");\n/* harmony import */ var vuejs_components_User_UserTools__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! vuejs/components/User/UserTools */ \"./web/themes/custom/materiotheme/vuejs/components/User/UserTools.vue\");\n//\n//\n//\n//\n//\n\n\n\n/* harmony default export */ __webpack_exports__[\"default\"] = ({\n // data () {\n // return {}\n // },\n computed: { ...Object(vuex__WEBPACK_IMPORTED_MODULE_0__[\"mapState\"])({\n isloggedin: state => state.User.isloggedin\n })\n },\n components: {\n Login: vuejs_components_User_Login__WEBPACK_IMPORTED_MODULE_1__[\"default\"],\n UserTools: vuejs_components_User_UserTools__WEBPACK_IMPORTED_MODULE_2__[\"default\"]\n }\n});\n\n//# sourceURL=webpack:///./web/themes/custom/materiotheme/vuejs/components/User/UserBlock.vue?./node_modules/babel-loader/lib!./node_modules/vue-loader/lib??vue-loader-options"); +eval("\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\n\nvar _vuex = __webpack_require__(/*! vuex */ \"./node_modules/vuex/dist/vuex.esm.js\");\n\nvar _Login = _interopRequireDefault(__webpack_require__(/*! vuejs/components/User/Login */ \"./web/themes/custom/materiotheme/vuejs/components/User/Login.vue\"));\n\nvar _UserTools = _interopRequireDefault(__webpack_require__(/*! vuejs/components/User/UserTools */ \"./web/themes/custom/materiotheme/vuejs/components/User/UserTools.vue\"));\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; var ownKeys = Object.keys(source); if (typeof Object.getOwnPropertySymbols === 'function') { ownKeys = ownKeys.concat(Object.getOwnPropertySymbols(source).filter(function (sym) { return Object.getOwnPropertyDescriptor(source, sym).enumerable; })); } ownKeys.forEach(function (key) { _defineProperty(target, key, source[key]); }); } return target; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nvar _default = {\n // data () {\n // return {}\n // },\n computed: _objectSpread({}, (0, _vuex.mapState)({\n isloggedin: function isloggedin(state) {\n return state.User.isloggedin;\n }\n })),\n components: {\n Login: _Login.default,\n UserTools: _UserTools.default\n }\n};\nexports.default = _default;\n\n//# sourceURL=webpack:///./web/themes/custom/materiotheme/vuejs/components/User/UserBlock.vue?./node_modules/babel-loader/lib!./node_modules/vue-loader/lib??vue-loader-options"); /***/ }), @@ -425,11 +425,11 @@ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var vuex /*!***************************************************************************************************************************************************************************************!*\ !*** ./node_modules/babel-loader/lib!./node_modules/vue-loader/lib??vue-loader-options!./web/themes/custom/materiotheme/vuejs/components/User/UserTools.vue?vue&type=script&lang=js& ***! \***************************************************************************************************************************************************************************************/ -/*! exports provided: default */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { "use strict"; -eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var vuex__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! vuex */ \"./node_modules/vuex/dist/vuex.esm.js\");\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n\n/* harmony default export */ __webpack_exports__[\"default\"] = ({\n // data () {\n // return {\n // mail: \"Hello User!\"\n // }\n // },\n computed: { ...Object(vuex__WEBPACK_IMPORTED_MODULE_0__[\"mapState\"])({\n mail: state => state.User.mail\n })\n },\n methods: { ...Object(vuex__WEBPACK_IMPORTED_MODULE_0__[\"mapActions\"])({\n userLogout: 'User/userLogout'\n }),\n\n onLogout() {\n this.userLogout();\n }\n\n }\n});\n\n//# sourceURL=webpack:///./web/themes/custom/materiotheme/vuejs/components/User/UserTools.vue?./node_modules/babel-loader/lib!./node_modules/vue-loader/lib??vue-loader-options"); +eval("\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\n\nvar _vuex = __webpack_require__(/*! vuex */ \"./node_modules/vuex/dist/vuex.esm.js\");\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; var ownKeys = Object.keys(source); if (typeof Object.getOwnPropertySymbols === 'function') { ownKeys = ownKeys.concat(Object.getOwnPropertySymbols(source).filter(function (sym) { return Object.getOwnPropertyDescriptor(source, sym).enumerable; })); } ownKeys.forEach(function (key) { _defineProperty(target, key, source[key]); }); } return target; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nvar _default = {\n // data () {\n // return {\n // mail: \"Hello User!\"\n // }\n // },\n computed: _objectSpread({}, (0, _vuex.mapState)({\n mail: function mail(state) {\n return state.User.mail;\n }\n })),\n methods: _objectSpread({}, (0, _vuex.mapActions)({\n userLogout: 'User/userLogout'\n }), {\n onLogout: function onLogout() {\n this.userLogout();\n }\n })\n};\nexports.default = _default;\n\n//# sourceURL=webpack:///./web/themes/custom/materiotheme/vuejs/components/User/UserTools.vue?./node_modules/babel-loader/lib!./node_modules/vue-loader/lib??vue-loader-options"); /***/ }), @@ -659,11 +659,11 @@ eval("var g; // This works in non-strict mode\n\ng = function () {\n return thi /*!***************************************************************!*\ !*** ./web/themes/custom/materiotheme/assets/scripts/main.js ***! \***************************************************************/ -/*! no exports provided */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { "use strict"; -eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var vue__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! vue */ \"./node_modules/vue/dist/vue.runtime.esm.js\");\n/* harmony import */ var vuejs_store__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! vuejs/store */ \"./web/themes/custom/materiotheme/vuejs/store/index.js\");\n/* harmony import */ var vuejs_components_User_UserBlock__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! vuejs/components/User/UserBlock */ \"./web/themes/custom/materiotheme/vuejs/components/User/UserBlock.vue\");\n/* harmony import */ var vuejs_components_Content_Test__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! vuejs/components/Content/Test */ \"./web/themes/custom/materiotheme/vuejs/components/Content/Test.vue\");\n/* harmony import */ var vuex__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! vuex */ \"./node_modules/vuex/dist/vuex.esm.js\");\n/* harmony import */ var theme_assets_styles_main_scss__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! theme/assets/styles/main.scss */ \"./web/themes/custom/materiotheme/assets/styles/main.scss\");\n/* harmony import */ var theme_assets_styles_main_scss__WEBPACK_IMPORTED_MODULE_5___default = /*#__PURE__*/__webpack_require__.n(theme_assets_styles_main_scss__WEBPACK_IMPORTED_MODULE_5__);\n\n\n\n\n // require('theme/assets/styles/main.scss');\n\n\n\n(function (Drupal, drupalSettings) {\n var MaterioTheme = function () {\n var v_user_block, v_test_content; // var _is_front = drupalSettings.path.isFront;\n\n console.log('drupalSettings', drupalSettings); // ___ _ _\n // |_ _|_ _ (_) |_\n // | || ' \\| | _|\n // |___|_||_|_|\\__|\n\n function init() {\n console.log(\"MaterioTheme init()\");\n initVues();\n }\n\n function initVues() {\n initUserVBlock();\n initTestVContent();\n }\n\n function initUserVBlock() {\n let mount_point = drupalSettings.user.uid !== 0 ? '#block-userblock' : '#block-userlogin';\n v_user_block = new vue__WEBPACK_IMPORTED_MODULE_0__[\"default\"]({\n store: vuejs_store__WEBPACK_IMPORTED_MODULE_1__[\"default\"],\n computed: { ...Object(vuex__WEBPACK_IMPORTED_MODULE_4__[\"mapState\"])({\n isloggedin: state => state.User.isloggedin\n })\n },\n\n created() {\n if (drupalSettings.user.uid !== 0) {\n this.$store.commit('User/setUid', drupalSettings.user.uid);\n this.$store.dispatch('User/getUser');\n }\n },\n\n render: h => h(vuejs_components_User_UserBlock__WEBPACK_IMPORTED_MODULE_2__[\"default\"])\n }).$mount(mount_point);\n }\n\n function initTestVContent() {\n v_test_content = new vue__WEBPACK_IMPORTED_MODULE_0__[\"default\"]({\n store: vuejs_store__WEBPACK_IMPORTED_MODULE_1__[\"default\"],\n render: h => h(vuejs_components_Content_Test__WEBPACK_IMPORTED_MODULE_3__[\"default\"])\n }).$mount('#block-pagetitle');\n console.log('initTestVContent', v_test_content);\n }\n\n init();\n }; // end MaterioTheme()\n\n\n var materiotheme = new MaterioTheme();\n})(Drupal, drupalSettings);\n\n//# sourceURL=webpack:///./web/themes/custom/materiotheme/assets/scripts/main.js?"); +eval("\n\nvar _vue = _interopRequireDefault(__webpack_require__(/*! vue */ \"./node_modules/vue/dist/vue.runtime.esm.js\"));\n\nvar _store = _interopRequireDefault(__webpack_require__(/*! vuejs/store */ \"./web/themes/custom/materiotheme/vuejs/store/index.js\"));\n\nvar _UserBlock = _interopRequireDefault(__webpack_require__(/*! vuejs/components/User/UserBlock */ \"./web/themes/custom/materiotheme/vuejs/components/User/UserBlock.vue\"));\n\nvar _Test = _interopRequireDefault(__webpack_require__(/*! vuejs/components/Content/Test */ \"./web/themes/custom/materiotheme/vuejs/components/Content/Test.vue\"));\n\nvar _vuex = __webpack_require__(/*! vuex */ \"./node_modules/vuex/dist/vuex.esm.js\");\n\n__webpack_require__(/*! theme/assets/styles/main.scss */ \"./web/themes/custom/materiotheme/assets/styles/main.scss\");\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; var ownKeys = Object.keys(source); if (typeof Object.getOwnPropertySymbols === 'function') { ownKeys = ownKeys.concat(Object.getOwnPropertySymbols(source).filter(function (sym) { return Object.getOwnPropertyDescriptor(source, sym).enumerable; })); } ownKeys.forEach(function (key) { _defineProperty(target, key, source[key]); }); } return target; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\n(function (Drupal, drupalSettings) {\n var MaterioTheme = function MaterioTheme() {\n var v_user_block, v_test_content; // var _is_front = drupalSettings.path.isFront;\n\n console.log('drupalSettings', drupalSettings); // ___ _ _\n // |_ _|_ _ (_) |_\n // | || ' \\| | _|\n // |___|_||_|_|\\__|\n\n function init() {\n console.log(\"MaterioTheme init()\");\n initVues();\n }\n\n function initVues() {\n initUserVBlock();\n initTestVContent();\n }\n\n function initUserVBlock() {\n var mount_point = drupalSettings.user.uid !== 0 ? '#block-userblock' : '#block-userlogin';\n v_user_block = new _vue.default({\n store: _store.default,\n computed: _objectSpread({}, (0, _vuex.mapState)({\n isloggedin: function isloggedin(state) {\n return state.User.isloggedin;\n }\n })),\n created: function created() {\n if (drupalSettings.user.uid !== 0) {\n this.$store.commit('User/setUid', drupalSettings.user.uid);\n this.$store.dispatch('User/getUser');\n }\n },\n render: function render(h) {\n return h(_UserBlock.default);\n }\n }).$mount(mount_point);\n }\n\n function initTestVContent() {\n v_test_content = new _vue.default({\n store: _store.default,\n render: function render(h) {\n return h(_Test.default);\n }\n }).$mount('#block-pagetitle');\n console.log('initTestVContent', v_test_content);\n }\n\n init();\n }; // end MaterioTheme()\n\n\n var materiotheme = new MaterioTheme();\n})(Drupal, drupalSettings);\n\n//# sourceURL=webpack:///./web/themes/custom/materiotheme/assets/scripts/main.js?"); /***/ }), @@ -682,11 +682,11 @@ eval("// style-loader: Adds some css to the DOM by adding a