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

90 lines
1.5 KiB

/**
* @description Controls the access to password-protected albums and photos.
10 years ago
* @copyright 2015 by Tobias Reich
*/
password = {
value: ''
}
10 years ago
password.get = function(albumID, callback) {
var passwd = $('.basicModal input.text').val(),
10 years ago
params;
10 years ago
if (!lychee.publicMode) callback();
else if (album.json&&album.json.password==false) callback();
else if (albums.json&&albums.json.content[albumID].password==false) callback();
else if (!albums.json&&!album.json) {
10 years ago
// Continue without password
album.json = {password: true};
callback('');
10 years ago
} else if (passwd==undefined) {
10 years ago
// Request password
password.getDialog(albumID, callback);
10 years ago
} else {
10 years ago
// Check password
10 years ago
params = {
albumID,
password: md5(passwd)
}
api.post('checkAlbumAccess', params, function(data) {
10 years ago
if (data===true) {
basicModal.close();
10 years ago
password.value = md5(passwd);
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() { password.get(albumID, callback) }
cancel = function() {
basicModal.close();
lychee.goto();
}
msg = `
<p>
This album is protected by a password. Enter the password below to view the photos of this album:
<input data-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
}