password.js 1.5 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586
  1. /**
  2. * @description Controls the access to password-protected albums and photos.
  3. */
  4. password = {
  5. value: ''
  6. }
  7. password.get = function(albumID, callback) {
  8. if (lychee.publicMode===false) callback()
  9. else if (album.json && album.json.password==='0') callback()
  10. else if (albums.json && albums.getByID(albumID).password==='0') callback()
  11. else if (!albums.json && !album.json) {
  12. // Continue without password
  13. album.json = { password: true }
  14. callback('')
  15. } else {
  16. // Request password
  17. password.getDialog(albumID, callback)
  18. }
  19. }
  20. password.getDialog = function(albumID, callback) {
  21. const action = (data) => {
  22. let passwd = data.password
  23. let 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. const cancel = () => {
  38. basicModal.close()
  39. if (!visible.albums()) lychee.goto()
  40. }
  41. let msg = `
  42. <p>
  43. This album is protected by a password. Enter the password below to view the photos of this album:
  44. <input name='password' class='text' type='password' placeholder='password' value=''>
  45. </p>
  46. `
  47. basicModal.show({
  48. body: msg,
  49. buttons: {
  50. action: {
  51. title: 'Enter',
  52. fn: action
  53. },
  54. cancel: {
  55. title: 'Cancel',
  56. fn: cancel
  57. }
  58. }
  59. })
  60. }