UserOauthController.js 1.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748
  1. define(['base'], App =>
  2. App.controller('UserOauthController', function($http, $scope, $q) {
  3. const _reset = function() {
  4. $scope.ui = {
  5. hasError: false,
  6. errorMessage: ''
  7. }
  8. $scope.providers = window.oauthProviders
  9. $scope.thirdPartyIds = window.thirdPartyIds
  10. }
  11. const _unlinkError = (providerId, err) => {
  12. $scope.providers[providerId].ui.hasError = true
  13. $scope.providers[providerId].ui.errorMessage =
  14. err && err.data && err.data.message ? err.data.message : 'error'
  15. }
  16. $scope.unlink = providerId => {
  17. if (window.ExposedSettings.isOverleaf) {
  18. // UI
  19. $scope.providers[providerId].ui = {
  20. hasError: false,
  21. isProcessing: true
  22. }
  23. // Data for update
  24. const data = {
  25. _csrf: window.csrfToken,
  26. link: false,
  27. providerId
  28. }
  29. $http
  30. .post('/user/oauth-unlink', data)
  31. .catch(error => {
  32. $scope.providers[providerId].ui.isProcessing = false
  33. _unlinkError(providerId, error)
  34. })
  35. .then(response => {
  36. $scope.providers[providerId].ui.isProcessing = false
  37. if (response.status === 200) {
  38. $scope.thirdPartyIds[providerId] = null
  39. } else {
  40. _unlinkError(providerId, response)
  41. }
  42. })
  43. }
  44. }
  45. _reset()
  46. }))