antville/code/MemberMgr/objectFunctions.js
Robert Gaggl 7a85b9ffef - if user now registers within a weblog, it's added to the user's subscriptions
- added functions searchUser(), evalNewMember(), addMember(), deleteMember()
2002-01-22 20:08:30 +00:00

310 lines
10 KiB
JavaScript

/**
* check if a login attempt is ok
* @param String username
* @param String password
* @return Obj Object containing two properties:
* - error (boolean): true if error happened, false if everything went fine
* - message (String): containing a message to user
*/
function evalLogin(username,password) {
var result = new Object();
result.error = true;
// check if login is successful
if (user.login(username, password)) {
if (user.isBlocked()) {
result.message = "Sorry, your account was disabled!";
user.logout();
}
// login successful
user.lastVisit = new Date();
if (req.data.remember) {
// user allowed us to set permanent cookies for auto-login
res.setCookie("avUsr",user.name,365);
res.setCookie("avPw",calcMD5(user.password),365);
}
result.message = "Welcome to Antville, " + user.name + "! Have fun!";
result.error = false;
} else
result.message = "Login failed! Maybe a typo?";
return (result);
}
/**
* check if a registration attempt is ok
* @param Obj Object containing form-values needed for registration
* @return Obj Object containing four properties:
* - error (boolean): true if error happened, false if everything went fine
* - message (String): containing a message to user
* - username: username of registered user
* - password: password of registered user
*/
function evalRegistration(param) {
var result = new Object();
result.error = true;
// check if email-address is valid
if (!param.email)
result.message = "Please type in your email-address!";
else if (!checkEmail(param.email))
result.message = "Ooops! The email-address you entered is not valid!";
// check if passwords match
if (!param.password1 || !param.password2)
result.message = "Please type in your password twice!";
else if (param.password1 != param.password2)
result.message = "Passwords didn't match! Please re-enter:";
// check if username is existing and is clean
if (!param.name)
result.message = "Please choose a username!";
else if (!isClean(param.name))
result.message = "Please don't use any special characters in your username!";
if (!result.message) {
var newUser = user.register(param.name, param.password1);
if (newUser) {
newUser.name = param.name;
newUser.email = param.email;
newUser.url = evalURL(param.url);
newUser.description = param.description;
newUser.registered = new Date();
newUser.blocked = 0;
result.message = "Welcome " + newUser.name + ". Have fun!";
result.error = false;
result.username = newUser.name;
result.password = newUser.password;
// if user registered within a weblog, we add this weblog to favorites
if (path.weblog)
this.addMember(newUser);
} else
result.message = "Sorry, there is already a member with this name.";
}
return (result);
}
/**
* update user-profile
* @param Obj Object containing form values
* @return Obj Object containing two properties:
* - error (boolean): true if error happened, false if everything went fine
* - message (String): containing a message to user
*/
function updateUser(param) {
var result = new Object();
if (param.oldpwd && param.newpwd1 && param.newpwd2) {
if (user.password != param.oldpwd) {
result.message = "Old password is incorrect!";
result.error = true;
} else if (param.newpwd1 != param.newpwd2) {
result.message = "Ooops! Passwords didn't match! Please type in again!";
result.error = true;
} else
user.password = param.newpwd1;
}
if (!checkEmail(param.email)) {
result.message = "Your email-address is not valid!";
result.error = true;
}
if (!result.error) {
user.url = evalURL(param.url);
user.email = param.email;
// not in use right now: user.description = param.description;
result.message = "Changes were saved successfully!";
}
return (result);
}
/**
* function retrieves a list of usernames/passwords for a submitted email-address
* and sends them as mail
* @param String email-address to search for accounts
* @return Obj Object containing two properties:
* - error (boolean): true if error happened, false if everything went fine
* - message (String): containing a message to user
*/
function sendPwd(email) {
var result = new Object();
if (!email) {
result.message = "Please specify an email-address!";
result.error = true;
} else {
var sqlClause = "select USERNAME,PASSWORD from USER where EMAIL = '" + email + "'";
var dbConn = getDBConnection("antville");
var dbResult = dbConn.executeRetrieval(sqlClause);
var cnt = 0;
var pwdList = "";
while (dbResult.next()) {
pwdList += "Username: " + dbResult.getColumnItem("USERNAME") + "\n";
pwdList += "Password: " + dbResult.getColumnItem("PASSWORD") + "\n\n";
cnt++;
}
dbResult.release;
if (!cnt) {
result.message = "No accounts found for this eMail-address!";
result.error = true;
}
}
if (!result.error) {
// now we send the mail containing all accounts for this email-address
var mail = new Mail();
mail.setFrom(getProperty("adminEmail"));
mail.addTo(email);
mail.setSubject("Your Accounts for Antville");
var mailParam = new Object();
var now = new Date();
mailParam.timestamp = this._parent.formatTimestamp(now,new Object());
mailParam.text = pwdList;
mail.setText(this.renderSkinAsString("pwdmail",mailParam));
var sendResult = mail.send();
if (sendResult.status) {
result.message = "An error occurred while trying to send the mail!";
result.error = true;
} else
result.message = "A mail containing your the password(s) was sent successfully!";
}
return (result);
}
/**
* function searches for users using part of username
* @param String Part of username or email-address
* @return Obj Object containing four properties:
* - error (boolean): true if error happened, false if everything went fine
* - message (String): containing a message to user
* - found (Int): number of users found
* - list (String): rendered list of users found
*/
function searchUser(key) {
var result = new Object();
// initializing properties
result.error = false;
result.list = "";
if (!key) {
// no keyword to search for
result.message = "Please enter a part of the name or email-address!";
result.error = true;
return (result);
}
var dbConn = getDBConnection("antville");
var error = dbConn.getLastError();
if (error) {
result.message = error;
result.error = true;
return (result);
}
var query = "select USERNAME,EMAIL from USER ";
query += "where USERNAME like '%" + key + "%' order by USERNAME asc";
var searchResult = dbConn.executeRetrieval(query);
var error = dbConn.getLastError();
if (error) {
result.message = error;
result.error = true;
return (result);
}
result.found = 0;
while (searchResult.next() && result.found < 100) {
var sp = new Object();
sp.name = searchResult.getColumnItem("USERNAME");
sp.email = searchResult.getColumnItem("EMAIL");
result.list += this.renderSkinAsString("searchresultitem",sp);
result.found++;
}
dbConn.release();
if (result.found == 0)
result.message = "Couldn't find any user!";
else if (result.found == 1)
result.message = "One user found!";
else if (result.found == 100)
result.message = "More than 100 users found, displaying the first 100!";
else
result.message = result.found + " users found!";
return (result);
}
/**
* function adds a user with a given username to the list of members
* of this weblog
* @param String Name of user to add to members
* @return Obj Object containing two properties:
* - error (boolean): true if error happened, false if everything went fine
* - message (String): containing a message to user
*/
function evalNewMember(uname,creator) {
var result = new Object();
result.error = true;
var u = getUser(uname);
if (!u)
result.message = "Couldn't find user to add to members!";
else if (this.get(uname))
result.message = "This user is already a member of this weblog!";
else {
result.id = this.addMember(u);
// send a confirmation mail to the new member
var mail = new Mail();
mail.setFrom(path.weblog.email ? path.weblog.email : creator.email);
mail.setTo(u.email);
mail.setSubject("You are now a member of " + path.weblog.title + "!");
var skinParam = new Object();
skinParam.weblog = path.weblog.title;
skinParam.creator = creator.name;
skinParam.url = path.weblog.href();
skinParam.account = u.name;
mail.setText(this.renderSkinAsString("mailnewmember",skinParam));
mail.send();
result.message = "Added " + u.name + " to list of members!";
result.error = false;
}
return (result);
}
/**
* function adds a member to a weblog
* @param Obj User-object to add as member
* @param Int optional level of this new member
* @return Int ID of membership
*/
function addMember(usr,level) {
var newMember = new member();
newMember.weblog = this._parent;
newMember.user = usr;
newMember.username = usr.name;
newMember.level = level ? level : 0;
newMember.createtime = new Date();
this.add(newMember);
return (newMember._id);
}
/**
* function deletes a member
* @param Obj Membership-Object to delete
* @param Obj User-Object about to delete membership
* @return Obj Object containing two properties:
* - error (boolean): true if error happened, false if everything went fine
* - message (String): containing a message to user
*/
function deleteMember(member,usr) {
var result = new Object();
result.error = true;
if (!member)
result.message = "Please specify a membership to delete!";
else if (member.level == 3)
result.message = "Sorry, Admins cannot be deleted!";
else {
this.remove(member);
result.message = "Membership deleted successfully!";
result.error = false;
}
return (result);
}