panel.js 5.2 KB

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