You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
lychee/src/scripts/password.js

89 lines
1.5 KiB

/**
* @description Controls the access to password-protected albums and photos.
10 years ago
* @copyright 2015 by Tobias Reich
*/
password = {
value: ''
}
password.get = function(albumID, callback, passwd) {
var params;
if (lychee.publicMode===false) callback();
else if (album.json&&album.json.password==='0') callback();
else if (albums.json&&albums.getByID(albumID).password==='0') callback();
10 years ago
else if (!albums.json&&!album.json) {
10 years ago
// Continue without password
album.json = {password: true};
callback('');
} else if (passwd==null) {
10 years ago
// Request password
password.getDialog(albumID, callback);
10 years ago
} else {
10 years ago
// Check password
10 years ago
params = {
albumID,
password: passwd
10 years ago
}
api.post('Album::getPublic', params, function(data) {
10 years ago
if (data===true) {
basicModal.close();
password.value = passwd;
10 years ago
callback();
} else {
basicModal.error('password');
10 years ago
}
10 years ago
});
10 years ago
}
10 years ago
}
10 years ago
password.getDialog = function(albumID, callback) {
var action,
cancel,
msg = '';
action = function(data) { password.get(albumID, callback, data.password) }
cancel = function() {
basicModal.close();
if (visible.albums()===false) lychee.goto();
}
msg = `
<p>
This album is protected by a password. Enter the password below to view the photos of this album:
<input name='password' class='text' type='password' placeholder='password' value=''>
</p>
`
basicModal.show({
body: msg,
buttons: {
action: {
title: 'Enter',
fn: action
},
cancel: {
title: 'Cancel',
fn: cancel
}
}
});
10 years ago
}