password.js 1.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990
  1. /**
  2. * @description Controls the access to password-protected albums and photos.
  3. * @copyright 2015 by Tobias Reich
  4. */
  5. password = {
  6. value: ''
  7. }
  8. password.get = function(albumID, callback) {
  9. var passwd = $('.basicModal input.text').val(),
  10. params;
  11. if (lychee.publicMode===false) callback();
  12. else if (album.json&&album.json.password==='0') callback();
  13. else if (albums.json&&albums.getByID(albumID).password==='0') callback();
  14. else if (!albums.json&&!album.json) {
  15. // Continue without password
  16. album.json = {password: true};
  17. callback('');
  18. } else if (passwd==undefined) {
  19. // Request password
  20. password.getDialog(albumID, callback);
  21. } else {
  22. // Check password
  23. params = {
  24. albumID,
  25. password: passwd
  26. }
  27. api.post('Album::getPublic', params, function(data) {
  28. if (data===true) {
  29. basicModal.close();
  30. password.value = passwd;
  31. callback();
  32. } else {
  33. basicModal.error('password');
  34. }
  35. });
  36. }
  37. }
  38. password.getDialog = function(albumID, callback) {
  39. var action,
  40. cancel,
  41. msg = '';
  42. action = function() { password.get(albumID, callback) }
  43. cancel = function() {
  44. basicModal.close();
  45. if (visible.albums()===false) lychee.goto();
  46. }
  47. msg = `
  48. <p>
  49. This album is protected by a password. Enter the password below to view the photos of this album:
  50. <input data-name='password' class='text' type='password' placeholder='password' value=''>
  51. </p>
  52. `
  53. basicModal.show({
  54. body: msg,
  55. buttons: {
  56. action: {
  57. title: 'Enter',
  58. fn: action
  59. },
  60. cancel: {
  61. title: 'Cancel',
  62. fn: cancel
  63. }
  64. }
  65. });
  66. }