tokens.js 2.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126
  1. const STORAGE_NAME = 'nginx-proxy-manager-tokens';
  2. /**
  3. * @returns {Array}
  4. */
  5. const getStorageTokens = function () {
  6. let json = window.localStorage.getItem(STORAGE_NAME);
  7. if (json) {
  8. try {
  9. return JSON.parse(json);
  10. } catch (err) {
  11. return [];
  12. }
  13. }
  14. return [];
  15. };
  16. /**
  17. * @param {Array} tokens
  18. */
  19. const setStorageTokens = function (tokens) {
  20. window.localStorage.setItem(STORAGE_NAME, JSON.stringify(tokens));
  21. };
  22. const Tokens = {
  23. /**
  24. * @returns {Number}
  25. */
  26. getTokenCount: () => {
  27. return getStorageTokens().length;
  28. },
  29. /**
  30. * @returns {Object} t,n
  31. */
  32. getTopToken: () => {
  33. let tokens = getStorageTokens();
  34. if (tokens && tokens.length) {
  35. return tokens[0];
  36. }
  37. return null;
  38. },
  39. /**
  40. * @returns {String}
  41. */
  42. getNextTokenName: () => {
  43. let tokens = getStorageTokens();
  44. if (tokens && tokens.length > 1 && typeof tokens[1] !== 'undefined' && typeof tokens[1].n !== 'undefined') {
  45. return tokens[1].n;
  46. }
  47. return null;
  48. },
  49. /**
  50. *
  51. * @param {String} token
  52. * @param {String} [name]
  53. * @returns {Number}
  54. */
  55. addToken: (token, name) => {
  56. // Get top token and if it's the same, ignore this call
  57. let top = Tokens.getTopToken();
  58. if (!top || top.t !== token) {
  59. let tokens = getStorageTokens();
  60. tokens.unshift({t: token, n: name || null});
  61. setStorageTokens(tokens);
  62. }
  63. return Tokens.getTokenCount();
  64. },
  65. /**
  66. * @param {String} token
  67. * @returns {Boolean}
  68. */
  69. setCurrentToken: token => {
  70. let tokens = getStorageTokens();
  71. if (tokens.length) {
  72. tokens[0].t = token;
  73. setStorageTokens(tokens);
  74. return true;
  75. }
  76. return false;
  77. },
  78. /**
  79. * @param {String} name
  80. * @returns {Boolean}
  81. */
  82. setCurrentName: name => {
  83. let tokens = getStorageTokens();
  84. if (tokens.length) {
  85. tokens[0].n = name;
  86. setStorageTokens(tokens);
  87. return true;
  88. }
  89. return false;
  90. },
  91. /**
  92. * @returns {Number}
  93. */
  94. dropTopToken: () => {
  95. let tokens = getStorageTokens();
  96. tokens.shift();
  97. setStorageTokens(tokens);
  98. return tokens.length;
  99. },
  100. /**
  101. *
  102. */
  103. clearTokens: () => {
  104. window.localStorage.removeItem(STORAGE_NAME);
  105. }
  106. };
  107. module.exports = Tokens;