password.js 1.5 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485
  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) callback();
  12. else if (album.json&&album.json.password==false) callback();
  13. else if (albums.json&&albums.json.content[albumID].password==false) 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 = 'checkAlbumAccess&albumID=' + albumID + '&password=' + md5(passwd);
  24. lychee.api(params, function(data) {
  25. if (data===true) {
  26. basicModal.close();
  27. password.value = md5(passwd);
  28. callback();
  29. } else {
  30. basicModal.error('password');
  31. }
  32. });
  33. }
  34. }
  35. password.getDialog = function(albumID, callback) {
  36. var action,
  37. cancel,
  38. msg = '';
  39. action = function() { password.get(albumID, callback) }
  40. cancel = function() {
  41. basicModal.close();
  42. lychee.goto();
  43. }
  44. msg = `
  45. <p>
  46. This album is protected by a password. Enter the password below to view the photos of this album:
  47. <input data-name='password' class='text' type='password' placeholder='password' value=''>
  48. </p>
  49. `
  50. basicModal.show({
  51. body: msg,
  52. buttons: {
  53. action: {
  54. title: 'Enter',
  55. fn: action
  56. },
  57. cancel: {
  58. title: 'Cancel',
  59. fn: cancel
  60. }
  61. }
  62. });
  63. }