UserOauthController.js 1.4 KB

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