Преглед изворни кода

Fix Axios CSRF token update (#17404)

Fix Axios CSRF token update
John Molakvoæ пре 4 година
родитељ
комит
5c21d11207
55 измењених фајлова са 220 додато и 202 уклоњено
  1. 0 2
      .drone.yml
  2. 0 0
      apps/accessibility/js/accessibility.js
  3. 0 0
      apps/accessibility/js/accessibility.js.map
  4. 1 1
      apps/accessibility/src/Accessibility.vue
  5. 0 0
      apps/files_sharing/js/dist/additionalScripts.js
  6. 0 0
      apps/files_sharing/js/dist/additionalScripts.js.map
  7. 0 0
      apps/files_sharing/js/dist/files_sharing.3.js
  8. 0 0
      apps/files_sharing/js/dist/files_sharing.3.js.map
  9. 1 1
      apps/files_sharing/js/dist/files_sharing.4.js
  10. 0 0
      apps/files_sharing/js/dist/files_sharing.4.js.map
  11. 0 0
      apps/files_versions/js/files_versions.js
  12. 0 0
      apps/files_versions/js/files_versions.js.map
  13. 0 0
      apps/oauth2/js/oauth2.js
  14. 0 0
      apps/oauth2/js/oauth2.js.map
  15. 1 1
      apps/oauth2/src/App.vue
  16. 0 0
      apps/settings/js/vue-0.js
  17. 0 0
      apps/settings/js/vue-0.js.map
  18. 0 0
      apps/settings/js/vue-4.js
  19. 0 0
      apps/settings/js/vue-4.js.map
  20. 0 0
      apps/settings/js/vue-5.js
  21. 0 0
      apps/settings/js/vue-5.js.map
  22. 1 1
      apps/settings/js/vue-6.js
  23. 0 0
      apps/settings/js/vue-6.js.map
  24. 0 0
      apps/settings/js/vue-settings-admin-security.js
  25. 0 0
      apps/settings/js/vue-settings-admin-security.js.map
  26. 0 0
      apps/settings/js/vue-settings-apps-users-management.js
  27. 0 0
      apps/settings/js/vue-settings-apps-users-management.js.map
  28. 0 0
      apps/settings/js/vue-settings-personal-security.js
  29. 0 0
      apps/settings/js/vue-settings-personal-security.js.map
  30. 1 1
      apps/settings/src/components/AdminTwoFactor.vue
  31. 1 1
      apps/settings/src/components/AuthTokenSection.vue
  32. 1 1
      apps/settings/src/store/api.js
  33. 0 0
      apps/twofactor_backupcodes/js/settings.js
  34. 0 0
      apps/twofactor_backupcodes/js/settings.js.map
  35. 1 1
      apps/twofactor_backupcodes/src/service/BackupCodesService.js
  36. 0 0
      apps/updatenotification/js/updatenotification.js
  37. 0 0
      apps/updatenotification/js/updatenotification.js.map
  38. 0 0
      apps/workflowengine/js/workflowengine.js
  39. 0 0
      apps/workflowengine/js/workflowengine.js.map
  40. 1 1
      apps/workflowengine/src/components/Checks/MultiselectTag/api.js
  41. 1 1
      apps/workflowengine/src/components/Checks/RequestUserGroup.vue
  42. 1 1
      apps/workflowengine/src/store.js
  43. 1 1
      core/js/dist/login.js
  44. 0 0
      core/js/dist/login.js.map
  45. 1 1
      core/js/dist/main.js
  46. 0 0
      core/js/dist/main.js.map
  47. 1 1
      core/js/dist/maintenance.js
  48. 0 0
      core/js/dist/maintenance.js.map
  49. 9 3
      core/src/OC/index.js
  50. 6 8
      core/src/OC/requesttoken.js
  51. 1 1
      core/src/components/login/ResetPassword.vue
  52. 1 1
      core/src/components/login/UpdatePassword.vue
  53. 1 1
      core/src/maintenance.js
  54. 186 171
      package-lock.json
  55. 2 1
      package.json

+ 0 - 2
.drone.yml

@@ -30,13 +30,11 @@ steps:
 - name: build
   image: nextcloudci/node:node-4
   commands:
-    - cd /drone/src
     - npm ci
     - npm run build
 - name: changes
   image: nextcloudci/node:node-4
   commands:
-    - cd /drone/src
     - git status
     - bash -c "[[ ! \"`git status --porcelain `\" ]] || ( echo 'Uncommited changes in webpack build' && exit 1 )"
 

Разлика између датотеке није приказан због своје велике величине
+ 0 - 0
apps/accessibility/js/accessibility.js


Разлика између датотеке није приказан због своје велике величине
+ 0 - 0
apps/accessibility/js/accessibility.js.map


+ 1 - 1
apps/accessibility/src/Accessibility.vue

@@ -25,7 +25,7 @@
 
 <script>
 import ItemPreview from './components/ItemPreview'
-import axios from 'nextcloud-axios'
+import axios from '@nextcloud/axios'
 
 export default {
 	name: 'Accessibility',

Разлика између датотеке није приказан због своје велике величине
+ 0 - 0
apps/files_sharing/js/dist/additionalScripts.js


Разлика између датотеке није приказан због своје велике величине
+ 0 - 0
apps/files_sharing/js/dist/additionalScripts.js.map


Разлика између датотеке није приказан због своје велике величине
+ 0 - 0
apps/files_sharing/js/dist/files_sharing.3.js


Разлика између датотеке није приказан због своје велике величине
+ 0 - 0
apps/files_sharing/js/dist/files_sharing.3.js.map


+ 1 - 1
apps/files_sharing/js/dist/files_sharing.4.js

@@ -21,4 +21,4 @@
  *
  */
 n.default.prototype.t=t,r.Tooltip.options.defaultHtml=!1,n.default.component("PopoverMenu",r.PopoverMenu),n.default.directive("ClickOutside",s.a),n.default.directive("Tooltip",r.Tooltip),n.default.use(l.a)}}]);
-//# sourceMappingURL=files_sharing.4.js.map?v=4e4a795c94e467758967
+//# sourceMappingURL=files_sharing.4.js.map?v=a741e282fee1abd436e6

Разлика између датотеке није приказан због своје велике величине
+ 0 - 0
apps/files_sharing/js/dist/files_sharing.4.js.map


Разлика између датотеке није приказан због своје велике величине
+ 0 - 0
apps/files_versions/js/files_versions.js


Разлика између датотеке није приказан због своје велике величине
+ 0 - 0
apps/files_versions/js/files_versions.js.map


Разлика између датотеке није приказан због своје велике величине
+ 0 - 0
apps/oauth2/js/oauth2.js


Разлика између датотеке није приказан због своје велике величине
+ 0 - 0
apps/oauth2/js/oauth2.js.map


+ 1 - 1
apps/oauth2/src/App.vue

@@ -73,7 +73,7 @@
 </template>
 
 <script>
-import axios from 'nextcloud-axios'
+import axios from '@nextcloud/axios'
 import OAuthItem from './components/OAuthItem'
 import { generateUrl } from '@nextcloud/router'
 

Разлика између датотеке није приказан због своје велике величине
+ 0 - 0
apps/settings/js/vue-0.js


Разлика између датотеке није приказан због своје велике величине
+ 0 - 0
apps/settings/js/vue-0.js.map


Разлика између датотеке није приказан због своје велике величине
+ 0 - 0
apps/settings/js/vue-4.js


Разлика између датотеке није приказан због своје велике величине
+ 0 - 0
apps/settings/js/vue-4.js.map


Разлика између датотеке није приказан због своје велике величине
+ 0 - 0
apps/settings/js/vue-5.js


Разлика између датотеке није приказан због своје велике величине
+ 0 - 0
apps/settings/js/vue-5.js.map


Разлика између датотеке није приказан због своје велике величине
+ 1 - 1
apps/settings/js/vue-6.js


Разлика између датотеке није приказан због своје велике величине
+ 0 - 0
apps/settings/js/vue-6.js.map


Разлика између датотеке није приказан због своје велике величине
+ 0 - 0
apps/settings/js/vue-settings-admin-security.js


Разлика између датотеке није приказан због своје велике величине
+ 0 - 0
apps/settings/js/vue-settings-admin-security.js.map


Разлика између датотеке није приказан због своје велике величине
+ 0 - 0
apps/settings/js/vue-settings-apps-users-management.js


Разлика између датотеке није приказан због своје велике величине
+ 0 - 0
apps/settings/js/vue-settings-apps-users-management.js.map


Разлика између датотеке није приказан због своје велике величине
+ 0 - 0
apps/settings/js/vue-settings-personal-security.js


Разлика између датотеке није приказан због своје велике величине
+ 0 - 0
apps/settings/js/vue-settings-personal-security.js.map


+ 1 - 1
apps/settings/src/components/AdminTwoFactor.vue

@@ -66,7 +66,7 @@
 </template>
 
 <script>
-import axios from 'nextcloud-axios'
+import axios from '@nextcloud/axios'
 import { Multiselect } from 'nextcloud-vue'
 import _ from 'lodash'
 

+ 1 - 1
apps/settings/src/components/AuthTokenSection.vue

@@ -35,7 +35,7 @@
 </template>
 
 <script>
-import axios from 'nextcloud-axios'
+import axios from '@nextcloud/axios'
 import confirmPassword from 'nextcloud-password-confirmation'
 
 import AuthTokenList from './AuthTokenList'

+ 1 - 1
apps/settings/src/store/api.js

@@ -20,7 +20,7 @@
  *
  */
 
-import axios from 'nextcloud-axios'
+import axios from '@nextcloud/axios'
 import confirmPassword from 'nextcloud-password-confirmation'
 
 const sanitize = function(url) {

Разлика између датотеке није приказан због своје велике величине
+ 0 - 0
apps/twofactor_backupcodes/js/settings.js


Разлика између датотеке није приказан због своје велике величине
+ 0 - 0
apps/twofactor_backupcodes/js/settings.js.map


+ 1 - 1
apps/twofactor_backupcodes/src/service/BackupCodesService.js

@@ -1,4 +1,4 @@
-import Axios from 'nextcloud-axios'
+import Axios from '@nextcloud/axios'
 
 export function generateCodes() {
 	const url = OC.generateUrl('/apps/twofactor_backupcodes/settings/create')

Разлика између датотеке није приказан због своје велике величине
+ 0 - 0
apps/updatenotification/js/updatenotification.js


Разлика између датотеке није приказан због своје велике величине
+ 0 - 0
apps/updatenotification/js/updatenotification.js.map


Разлика између датотеке није приказан због своје велике величине
+ 0 - 0
apps/workflowengine/js/workflowengine.js


Разлика између датотеке није приказан због своје велике величине
+ 0 - 0
apps/workflowengine/js/workflowengine.js.map


+ 1 - 1
apps/workflowengine/src/components/Checks/MultiselectTag/api.js

@@ -20,7 +20,7 @@
  *
  */
 
-import axios from 'nextcloud-axios'
+import axios from '@nextcloud/axios'
 import { generateRemoteUrl } from 'nextcloud-router'
 
 const xmlToJson = (xml) => {

+ 1 - 1
apps/workflowengine/src/components/Checks/RequestUserGroup.vue

@@ -35,7 +35,7 @@
 <script>
 import { Multiselect } from 'nextcloud-vue/dist/Components/Multiselect'
 import valueMixin from '../../mixins/valueMixin'
-import axios from 'nextcloud-axios'
+import axios from '@nextcloud/axios'
 export default {
 	name: 'RequestUserGroup',
 	components: {

+ 1 - 1
apps/workflowengine/src/store.js

@@ -22,7 +22,7 @@
 
 import Vue from 'vue'
 import Vuex from 'vuex'
-import axios from 'nextcloud-axios'
+import axios from '@nextcloud/axios'
 import { getApiUrl } from './helpers/api'
 import confirmPassword from 'nextcloud-password-confirmation'
 

Разлика између датотеке није приказан због своје велике величине
+ 1 - 1
core/js/dist/login.js


Разлика између датотеке није приказан због своје велике величине
+ 0 - 0
core/js/dist/login.js.map


Разлика између датотеке није приказан због своје велике величине
+ 1 - 1
core/js/dist/main.js


Разлика између датотеке није приказан због своје велике величине
+ 0 - 0
core/js/dist/main.js.map


Разлика између датотеке није приказан због своје велике величине
+ 1 - 1
core/js/dist/maintenance.js


Разлика између датотеке није приказан због своје велике величине
+ 0 - 0
core/js/dist/maintenance.js.map


+ 9 - 3
core/src/OC/index.js

@@ -19,6 +19,8 @@
  * along with this program.  If not, see <http://www.gnu.org/licenses/>.
  */
 
+import { subscribe } from '@nextcloud/event-bus'
+
 import { addScript, addStyle } from './legacy-loader'
 import {
 	ajaxConnectionLostHandler,
@@ -67,8 +69,7 @@ import {
 	getProtocol
 } from './host'
 import {
-	getToken as getRequestToken,
-	subscribe as subscribeToRequestTokenChange
+	getToken as getRequestToken
 } from './requesttoken'
 import {
 	hideMenus,
@@ -258,4 +259,9 @@ export default {
 }
 
 // Keep the request token prop in sync
-subscribeToRequestTokenChange(token => { OC.requestToken = token })
+subscribe('csrf-token-update', e => {
+	OC.requestToken = e.token
+
+	// Logging might help debug (Sentry) issues
+	console.info('OC.requestToken changed', e.token)
+})

+ 6 - 8
core/src/OC/requesttoken.js

@@ -19,24 +19,22 @@
  * along with this program.  If not, see <http://www.gnu.org/licenses/>.
  */
 
+import { emit } from '@nextcloud/event-bus'
+
 let token = document.getElementsByTagName('head')[0].getAttribute('data-requesttoken')
-const observers = []
 
 /**
  * @returns {string}
  */
 export const getToken = () => token
 
-/**
- * @param {Function} observer observer
- * @returns {number}
- */
-export const subscribe = observer => observers.push(observer)
-
 /**
  * @param {String} newToken new token
  */
 export const setToken = newToken => {
 	token = newToken
-	observers.forEach(o => o(token))
+
+	emit('csrf-token-update', {
+		token
+	})
 }

+ 1 - 1
core/src/components/login/ResetPassword.vue

@@ -73,7 +73,7 @@
 </template>
 
 <script>
-import axios from 'nextcloud-axios'
+import axios from '@nextcloud/axios'
 
 import { generateUrl } from '../../OC/routing'
 

+ 1 - 1
core/src/components/login/UpdatePassword.vue

@@ -67,7 +67,7 @@
 </template>
 
 <script>
-import Axios from 'nextcloud-axios'
+import Axios from '@nextcloud/axios'
 
 export default {
 	name: 'UpdatePassword',

+ 1 - 1
core/src/maintenance.js

@@ -19,7 +19,7 @@
  * along with this program.  If not, see <http://www.gnu.org/licenses/>.
  */
 
-import Axios from 'nextcloud-axios'
+import Axios from '@nextcloud/axios'
 
 import OC from './OC/index'
 

Разлика између датотеке није приказан због своје велике величине
+ 186 - 171
package-lock.json


+ 2 - 1
package.json

@@ -25,6 +25,8 @@
   "dependencies": {
     "@babel/polyfill": "^7.6.0",
     "@chenfengyuan/vue-qrcode": "^1.0.1",
+    "@nextcloud/axios": "^0.4.1",
+    "@nextcloud/event-bus": "^0.2.0",
     "@nextcloud/router": "^0.1.0",
     "autosize": "^4.0.2",
     "backbone": "^1.4.0",
@@ -45,7 +47,6 @@
     "marked": "^0.7.0",
     "moment": "^2.24.0",
     "moment-timezone": "^0.5.26",
-    "nextcloud-axios": "^0.2.1",
     "nextcloud-initial-state": "0.0.3",
     "nextcloud-password-confirmation": "^0.4.2",
     "nextcloud-router": "0.0.9",

Неке датотеке нису приказане због велике количине промена