mirror of
https://github.com/ether/etherpad-lite.git
synced 2025-05-04 22:27:10 -04:00
mod so one can set passwords a) for pads that are in no group and b) via the web interface
This commit is contained in:
parent
b0976a292f
commit
dc8ff69553
5 changed files with 66 additions and 29 deletions
|
@ -280,11 +280,11 @@ Example returns:
|
|||
exports.setPublicStatus = function(padID, publicStatus, callback)
|
||||
{
|
||||
//ensure this is a group pad
|
||||
if(padID.indexOf("$") == -1)
|
||||
/*if(padID.indexOf("$") == -1)
|
||||
{
|
||||
callback({stop: "You can only get/set the publicStatus of pads that belong to a group"});
|
||||
return;
|
||||
}
|
||||
}*/
|
||||
|
||||
//get the pad
|
||||
getPadSafe(padID, true, function(err, pad)
|
||||
|
@ -349,8 +349,8 @@ exports.setPassword = function(padID, password, callback)
|
|||
//ensure this is a group pad
|
||||
if(padID.indexOf("$") == -1)
|
||||
{
|
||||
callback({stop: "You can only get/set the password of pads that belong to a group"});
|
||||
return;
|
||||
//callback({stop: "You can only get/set the password of pads that belong to a group"});
|
||||
//return;
|
||||
}
|
||||
|
||||
//get the pad
|
||||
|
|
|
@ -202,7 +202,7 @@ exports.createGroupPad = function(groupID, padName, text, callback)
|
|||
}
|
||||
});
|
||||
},
|
||||
//ensure pad does not exists
|
||||
//ensure pad does not exist
|
||||
function (callback)
|
||||
{
|
||||
padManager.doesPadExists(padID, function(err, exists)
|
||||
|
@ -278,8 +278,7 @@ function randomString(len)
|
|||
var randomstring = '';
|
||||
for (var i = 0; i < len; i++)
|
||||
{
|
||||
var rnum = Math.floor(Math.random() * chars.length);
|
||||
randomstring += chars.substring(rnum, rnum + 1);
|
||||
randomstring += chars[Math.floor(Math.random() * chars.length)];
|
||||
}
|
||||
return randomstring;
|
||||
}
|
||||
|
|
|
@ -52,7 +52,7 @@ Class('Pad', {
|
|||
|
||||
publicStatus : {
|
||||
is: 'rw',
|
||||
init: false,
|
||||
init: true,
|
||||
getterName : 'getPublicStatus'
|
||||
}, //publicStatus
|
||||
|
||||
|
@ -486,7 +486,11 @@ Class('Pad', {
|
|||
},
|
||||
setPassword: function(password)
|
||||
{
|
||||
this.passwordHash = password == null ? null : hash(password, generateSalt());
|
||||
if(password == null){
|
||||
this.passwordHash = null;
|
||||
}else{
|
||||
this.passwordHash = hash(password, generateSalt());
|
||||
}
|
||||
db.setSub("pad:"+this.id, ["passwordHash"], this.passwordHash);
|
||||
},
|
||||
isCorrectPassword: function(password)
|
||||
|
@ -516,8 +520,7 @@ function generateSalt()
|
|||
var randomstring = '';
|
||||
for (var i = 0; i < len; i++)
|
||||
{
|
||||
var rnum = Math.floor(Math.random() * chars.length);
|
||||
randomstring += chars.substring(rnum, rnum + 1);
|
||||
randomstring += chars[Math.floor(Math.random() * chars.length)];
|
||||
}
|
||||
return randomstring;
|
||||
}
|
||||
|
|
|
@ -35,7 +35,7 @@ var sessionManager = require("./SessionManager");
|
|||
exports.checkAccess = function (padID, sessionID, token, password, callback)
|
||||
{
|
||||
// it's not a group pad, means we can grant access
|
||||
if(padID.indexOf("$") == -1)
|
||||
/*if(padID.indexOf("$") == -1)
|
||||
{
|
||||
//get author for this token
|
||||
authorManager.getAuthor4Token(token, function(err, author)
|
||||
|
@ -46,7 +46,7 @@ exports.checkAccess = function (padID, sessionID, token, password, callback)
|
|||
|
||||
//don't continue
|
||||
return;
|
||||
}
|
||||
}*/
|
||||
|
||||
var groupID = padID.split("$")[0];
|
||||
var padExists = false;
|
||||
|
|
|
@ -69,7 +69,7 @@
|
|||
font-weight: bold;
|
||||
font-size: 15px
|
||||
}
|
||||
input[type="text"] {
|
||||
input[type="text"], input[type="password"] {
|
||||
width: 243px;
|
||||
padding: 10px 47px 10px 10px;
|
||||
background: #fff;
|
||||
|
@ -78,7 +78,13 @@
|
|||
border-radius: 3px;
|
||||
text-shadow: 0 0 1px #fff
|
||||
}
|
||||
input[type="submit"] {
|
||||
#usepwlabel {
|
||||
display: inline;
|
||||
}
|
||||
#usePasswordContainer {
|
||||
margin: 10px 0 5px 0
|
||||
}
|
||||
input[type="submit"] {
|
||||
width: 45px;
|
||||
margin-left: -50px;
|
||||
padding: 8px
|
||||
|
@ -88,39 +94,68 @@
|
|||
</style>
|
||||
<link href="static/custom/index.css" rel="stylesheet">
|
||||
<script src="static/custom/index.js"></script>
|
||||
<script src="static/js/jquery.min.js"></script>
|
||||
<div id="container">
|
||||
<div id="button" onclick="go2Random()">New Pad</div><br><div id="label">or create/open a Pad with the name</div>
|
||||
<form action="#" onsubmit="go2Name();return false;">
|
||||
<input type="text" id="padname" autofocus>
|
||||
<input type="submit" value="OK">
|
||||
<input type="text" id="padname" autofocus/>
|
||||
<input type="submit" value="OK"/><br/>
|
||||
<div id="usePasswordContainer"><input type="checkbox" id="usePassword" onclick="updatePasswordField()"/><label for="usePassword"><div id="usepwlabel">Use password</div></label></div>
|
||||
<div id="passwordFieldContainer"><input type="password" id="passwordField"/></div>
|
||||
</form>
|
||||
</div>
|
||||
<script>
|
||||
function go2Name()
|
||||
{
|
||||
var padname = document.getElementById("padname").value;
|
||||
padname.length > 0 ? window.location = "p/" + padname : alert("Please enter a name")
|
||||
var padname = $("#padname").val();
|
||||
if(padname.length > 0){
|
||||
if($("#passwordField").val().length>0)
|
||||
{
|
||||
$.get("api/1/createPad", {apikey: "o8PJ496RtbcwoMQGgDyjoOmyq5wJ8dON", padID: padname}, function(data){
|
||||
$.get("api/1/setPassword", {apikey: "o8PJ496RtbcwoMQGgDyjoOmyq5wJ8dON", padID: padname, password: $("#passwordField").val()}, function(data){
|
||||
window.location = "p/" + padname;
|
||||
});
|
||||
});
|
||||
}
|
||||
else
|
||||
{
|
||||
window.location = "p/" + padname;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
alert("Please enter a name");
|
||||
}
|
||||
}
|
||||
|
||||
function go2Random()
|
||||
{
|
||||
window.location = "p/" + randomPadName();
|
||||
$("#padname").val(randomPadName());
|
||||
go2Name();
|
||||
}
|
||||
|
||||
function randomPadName()
|
||||
{
|
||||
var chars = "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz";
|
||||
var string_length = 10;
|
||||
var randomstring = '';
|
||||
for (var i = 0; i < string_length; i++)
|
||||
for (var i = 0; i < 10; i++)
|
||||
{
|
||||
var rnum = Math.floor(Math.random() * chars.length);
|
||||
randomstring += chars.substring(rnum, rnum + 1);
|
||||
randomstring += chars[Math.floor(Math.random() * chars.length)];
|
||||
}
|
||||
return randomstring;
|
||||
}
|
||||
}
|
||||
|
||||
//start the costum js
|
||||
if(typeof costumStart == "function") costumStart();
|
||||
function updatePasswordField()
|
||||
{
|
||||
if($("#usePassword:checked").val()){
|
||||
$("#passwordFieldContainer").css("display", "block");
|
||||
}
|
||||
else
|
||||
{
|
||||
$("#passwordFieldContainer").css("display", "none");
|
||||
}
|
||||
}
|
||||
updatePasswordField();
|
||||
if(typeof customStart == "function") customStart();
|
||||
</script>
|
||||
</html>
|
Loading…
Add table
Add a link
Reference in a new issue