panel.js 5.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230
  1. let panel = {}
  2. panel.page;
  3. panel.token = localStorage.admintoken;
  4. panel.preparePage = function(){
  5. if(!panel.token){
  6. document.getElementById('tokenSubmit').addEventListener('click', function(){
  7. panel.verifyToken(document.getElementById('token').value);
  8. });
  9. return;
  10. }
  11. panel.verifyToken(panel.token, true);
  12. }
  13. panel.verifyToken = function(token, reloadOnError = false){
  14. var xhr = new XMLHttpRequest();
  15. xhr.onreadystatechange = function() {
  16. if (xhr.readyState == XMLHttpRequest.DONE) {
  17. var json = JSON.parse(xhr.responseText);
  18. if(json.success === false){
  19. alert(json.description);
  20. if(reloadOnError){
  21. localStorage.removeItem("admintoken");
  22. location.reload();
  23. }
  24. return;
  25. }
  26. localStorage.admintoken = token;
  27. panel.token = token;
  28. return panel.prepareDashboard();
  29. }
  30. }
  31. xhr.open('GET', '/api/token/verify', true);
  32. xhr.setRequestHeader('type', 'admin');
  33. xhr.setRequestHeader('token', token);
  34. xhr.send(null);
  35. }
  36. panel.prepareDashboard = function(){
  37. panel.page = document.getElementById('page');
  38. document.getElementById('auth').style.display = 'none';
  39. document.getElementById('dashboard').style.display = 'block';
  40. document.getElementById('itemUploads').addEventListener('click', function(){
  41. panel.getUploads();
  42. });
  43. document.getElementById('itemManageGallery').addEventListener('click', function(){
  44. panel.getGalleries();
  45. });
  46. }
  47. panel.getUploads = function(){
  48. page.innerHTML = '';
  49. var xhr = new XMLHttpRequest();
  50. xhr.onreadystatechange = function() {
  51. if(xhr.readyState == XMLHttpRequest.DONE){
  52. if(xhr.responseText === 'not-authorized')
  53. return notAuthorized();
  54. var json = JSON.parse(xhr.responseText);
  55. var container = document.createElement('div');
  56. container.innerHTML = `
  57. <table class="table">
  58. <thead>
  59. <tr>
  60. <th>File</th>
  61. <th>Gallery</th>
  62. <th>Date</th>
  63. </tr>
  64. </thead>
  65. <tbody id="table">
  66. </tbody>
  67. </table>`;
  68. page.appendChild(container);
  69. var table = document.getElementById('table');
  70. for(var item of json){
  71. var tr = document.createElement('tr');
  72. tr.innerHTML = `
  73. <tr>
  74. <th><a href="${item.file}" target="_blank">${item.file}</a></th>
  75. <th>${item.gallery}</th>
  76. <td>${item.date}</td>
  77. </tr>
  78. `;
  79. table.appendChild(tr);
  80. }
  81. }
  82. }
  83. xhr.open('GET', '/api/uploads', true);
  84. xhr.setRequestHeader('auth', panel.token);
  85. xhr.send(null);
  86. }
  87. window.onload = function () {
  88. panel.preparePage();
  89. }
  90. /*
  91. var page;
  92. if(!localStorage.admintoken)
  93. return askForToken();
  94. prepareDashboard();
  95. function askForToken(){
  96. document.getElementById('tokenSubmit').addEventListener('click', function(){
  97. checkToken();
  98. });
  99. function checkToken(){
  100. var xhr = new XMLHttpRequest();
  101. xhr.onreadystatechange = function() {
  102. if (xhr.readyState == XMLHttpRequest.DONE) {
  103. try{
  104. var json = JSON.parse(xhr.responseText);
  105. if(json.success === false)
  106. return alert(json.description);
  107. localStorage.admintoken = document.getElementById('token').value;
  108. prepareDashboard();
  109. }catch(e){
  110. console.log(e);
  111. }
  112. console.log(xhr.responseText);
  113. // xhr.responseText
  114. }
  115. }
  116. xhr.open('GET', '/api/token/verify', true);
  117. xhr.setRequestHeader('type', 'admin');
  118. xhr.setRequestHeader('token', document.getElementById('token').value);
  119. xhr.send(null);
  120. }
  121. }
  122. function prepareDashboard(){
  123. page = document.getElementById('page');
  124. document.getElementById('auth').style.display = 'none';
  125. document.getElementById('dashboard').style.display = 'block';
  126. document.getElementById('itemUploads').addEventListener('click', function(){
  127. getUploads();
  128. });
  129. document.getElementById('itemManageGallery').addEventListener('click', function(){
  130. getGalleries();
  131. });
  132. }
  133. function getUploads(){
  134. page.innerHTML = '';
  135. var xhr = new XMLHttpRequest();
  136. xhr.onreadystatechange = function() {
  137. if(xhr.readyState == XMLHttpRequest.DONE){
  138. if(xhr.responseText === 'not-authorized')
  139. return notAuthorized();
  140. var json = JSON.parse(xhr.responseText);
  141. var container = document.createElement('div');
  142. container.innerHTML = `
  143. <table class="table">
  144. <thead>
  145. <tr>
  146. <th>File</th>
  147. <th>Gallery</th>
  148. <th>Date</th>
  149. </tr>
  150. </thead>
  151. <tbody id="table">
  152. </tbody>
  153. </table>`;
  154. page.appendChild(container);
  155. var table = document.getElementById('table');
  156. for(var item of json){
  157. var tr = document.createElement('tr');
  158. tr.innerHTML = `
  159. <tr>
  160. <th><a href="${item.file}" target="_blank">${item.file}</a></th>
  161. <th>${item.gallery}</th>
  162. <td>${item.date}</td>
  163. </tr>
  164. `;
  165. table.appendChild(tr);
  166. }
  167. }
  168. }
  169. xhr.open('GET', '/api/uploads', true);
  170. xhr.setRequestHeader('auth', localStorage.admintoken);
  171. xhr.send(null);
  172. }
  173. function getContent(item, value){
  174. let endpoint;
  175. if(item === 'uploads') endpoint = '/api/uploads'
  176. if(item === 'galleries') endpoint = '/api/uploads'
  177. }
  178. function notAuthorized() {
  179. localStorage.removeItem("admintoken");
  180. location.reload();
  181. }
  182. */