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