password.js 1.5 KB

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