token-access.js 2.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778
  1. import App from '../base'
  2. App.controller(
  3. 'TokenAccessPageController',
  4. ($scope, $http, $location, localStorage) => {
  5. window.S = $scope
  6. $scope.mode = 'accessAttempt' // 'accessAttempt' | 'v1Import'
  7. $scope.v1ImportData = null
  8. $scope.accessInFlight = false
  9. $scope.accessSuccess = false
  10. $scope.accessError = false
  11. $scope.currentPath = () => {
  12. return $location.path()
  13. }
  14. $scope.buildZipDownloadPath = projectId => {
  15. return `/overleaf/project/${projectId}/download/zip`
  16. }
  17. $scope.getProjectName = () => {
  18. if (!$scope.v1ImportData || !$scope.v1ImportData.name) {
  19. return 'This project'
  20. } else {
  21. return $scope.v1ImportData.name
  22. }
  23. }
  24. $scope.post = () => {
  25. $scope.mode = 'accessAttempt'
  26. const textData = $('#overleaf-token-access-data').text()
  27. const parsedData = JSON.parse(textData)
  28. const { postUrl, csrfToken } = parsedData
  29. $scope.accessInFlight = true
  30. $http({
  31. method: 'POST',
  32. url: postUrl,
  33. data: {
  34. _csrf: csrfToken,
  35. },
  36. }).then(
  37. function successCallback(response) {
  38. $scope.accessInFlight = false
  39. $scope.accessError = false
  40. const { data } = response
  41. if (data.redirect) {
  42. const redirect = response.data.redirect
  43. if (!redirect) {
  44. console.warn(
  45. 'no redirect supplied in success response data',
  46. response
  47. )
  48. $scope.accessError = true
  49. return
  50. }
  51. window.location.replace(redirect)
  52. } else if (data.v1Import) {
  53. $scope.mode = 'v1Import'
  54. $scope.v1ImportData = data.v1Import
  55. } else {
  56. console.warn(
  57. 'invalid data from server in success response',
  58. response
  59. )
  60. $scope.accessError = true
  61. }
  62. },
  63. function errorCallback(response) {
  64. console.warn('error response from server', response)
  65. $scope.accessInFlight = false
  66. $scope.accessError = response.status === 404 ? 'not_found' : 'error'
  67. }
  68. )
  69. }
  70. }
  71. )