用户登录与注册的主要代码都在WebContent\src\base\auth\checkLoginData.lzx文件中

    <simpleLabelButton labelid="123" name="_register" width="160" y="$once{ parent.height-40 }"
        visible="false" x="510" height="22">
        <handler name="onclick">
            <![CDATA[
                this.parent._register.setAttribute('visible',false);
                if (this.parent.childObj != null) {
                    this.parent.childObj.destroy();
                }
                this.parent.childObj = new lz.registerNewUser(canvas,{
                                                    refObj:this.parent,
                                                    user_login_minimum_length:parent.user_login_minimum_length,
                                                    user_pass_minimum_length:parent.user_pass_minimum_length
                                                });
            ]]>
        </handler>
    </simpleLabelButton>

主界面中,点击【Not a member? 】按钮后,将调用registerNewUser(),跳出注册界面,填写好username, password, email等一系列信息后,点击【 Register】后将执行如下代码:

   <simpleLabelButton name="registerB" labelid="121" width="120" x="240" y="332">
<handler name="onclick">
<![CDATA[
var pwd1 = strtrim(this.parent.userpass1.getText());
var pwd2 = strtrim(this.parent.userpass2.getText());
var login = strtrim(this.parent.username.getText());
var email = strtrim(this.parent.email.getText());
if (pwd1!=pwd2) {
new lz.rpcErrorDialog(canvas,{errorid:-6});
} else if(pwd1.length<parent.user_pass_minimum_length
|| login<parent.user_login_minimum_length){
var addInfo = "<br/> "
+ parent.user_pass_minimum_length + " / "
+ parent.user_login_minimum_length;
new lz.rpcErrorDialog(canvas,{errorid:-7,addInfo:addInfo});
} else if (email=="") {
new lz.rpcErrorDialog(canvas,{errorid:-53});
} else {
this.parent.regObject = new Array();
this.parent.regObject["SID"]=canvas.sessionId;
this.parent.regObject["Username"]=login;
this.parent.regObject["Userpass"]=this.parent.userpass1.getText();
this.parent.regObject["lastname"]=this.parent.lastname.getText();
this.parent.regObject["firstname"]=this.parent.firstname.getText();
this.parent.regObject["email"]=email;
this.parent.regObject["jNameTimeZone"]=this.parent._timeZone.getValue();
this.parent.regObject["age"]=0;
this.parent.regObject["street"]='';
this.parent.regObject["additionalname"]='';
this.parent.regObject["fax"]='';
this.parent.regObject["zip"]='';
this.parent.regObject["states_id"]=Number(this.parent._state.getValue());
this.parent.regObject["town"]='';
this.parent.regObject["language_id"]=this.parent.languages.getValue(); this.parent.regObject["domain"]=canvas.rtmphostlocal;
this.parent.regObject["port"]=canvas.red5httpport;
this.parent.regObject["webapp"]=canvas.httpRootKey; if( $debug ) Debug.write("parent.regObject: ",parent.regObject); this.parent.registerUserByObject.doCall();
}
]]>
</handler>
</simpleLabelButton>

调用了registerUserByObject(), 具体实现如下:

     <netRemoteCallHib name="registerUserByObject" funcname="xmlcrm.registerUserByObject"
remotecontext="$once{ canvas.thishib }" activeErrorHandler="true" >
<netparam>
<method name="getValue">
return this.parent.parent.regObject;
</method>
</netparam>
<handler name="ondata" args="value">
<![CDATA[
//The onResult-Handler will be called be the rtmpconnection
if ($debug) Debug.write("registerUserByObject: ",value);
if (!(value<0)){
//Debug.write("successfully registered");
new lz.rpcErrorDialog(canvas.main_content._content.inner,{errorid:-18});
this.parent.refObj.username.setAttribute('text',this.parent.username.getText());
this.parent.refObj.userpass.setAttribute('text',this.parent.userpass1.getText());
this.parent.close();
} else if (value == -40) {
this.parent.refObj.username.setAttribute('text',this.parent.username.getText());
this.parent.refObj.userpass.setAttribute('text',this.parent.userpass1.getText());
this.parent.close();
}
]]>
</handler>
</netRemoteCallHib>

我们看到这是一个远程调用,它将调用服务器上的registerUserByObject()函数(在src\org\apache\openmeetings\remote\MainService.java中)

	public Long registerUserByObject(Object regObjectObj) {
try {
@SuppressWarnings("unchecked")
Map<?, ?> regObject = (Map<Object, Object>) regObjectObj; String domain = regObject.get("domain").toString();
String port = regObject.get("port").toString();
String webapp = regObject.get("webapp").toString(); String baseURL = "http://" + domain + ":" + port + webapp;
if (port.equals("80")) {
baseURL = "http://" + domain + webapp;
} else if (port.equals("443")) {
baseURL = "https://" + domain + webapp;
}
String tz = (String)regObject.get("jNameTimeZone");
if (tz == null || tz.length() == 0) {
//Empty tz
return -55L;
}
return userManager.registerUser(regObject.get("Username")
.toString(), regObject.get("Userpass").toString(),
regObject.get("lastname").toString(),
regObject.get("firstname").toString(),
regObject.get("email").toString(), new Date(), regObject
.get("street").toString(),
regObject.get("additionalname").toString(),
regObject.get("fax").toString(), regObject.get("zip")
.toString(),
Long.valueOf(regObject.get("states_id").toString())
.longValue(), regObject.get("town").toString(),
Long.valueOf(regObject.get("language_id").toString())
.longValue(), "", false, baseURL, true,
tz);
} catch (Exception ex) {
log.error("registerUserByObject", ex);
}
return new Long(-1);
}

这里面又调用了userManager.registerUser(), 顺着代码一路跟踪下去,调用关系如下:

	public Long registerUser(String login, String Userpass, String lastname,
String firstname, String email, Date age, String street,
String additionalname, String fax, String zip, long states_id,
String town, long language_id, String phone, boolean sendSMS, String baseURL,
boolean generateSipUserData, String jNameTimeZone) { boolean sendConfirmation = baseURL != null
&& !baseURL.isEmpty()
&& 1 == configurationDao.getConfValue(
"sendEmailWithVerficationCode", Integer.class, "0"); return registerUser(login, Userpass, lastname, firstname, email, age,
street, additionalname, fax, zip, states_id, town, language_id,
phone, sendSMS, baseURL, generateSipUserData, jNameTimeZone, sendConfirmation);
}

|

|

V

private Long registerUser(String login, String Userpass, String lastname,
String firstname, String email, Date age, String street,
String additionalname, String fax, String zip, long states_id,
String town, long language_id, String phone, boolean sendSMS, String baseURL,
boolean generateSipUserData, String jNameTimeZone, Boolean sendConfirmation) {
try {
// Checks if FrontEndUsers can register
if ("1".equals(configurationDao.getConfValue(
"allow_frontend_register", String.class, "0"))) { // TODO: Read and generate SIP-Data via RPC-Interface Issue 1098 Long user_id = this.registerUserInit(3, 1, 0, 1, login,
Userpass, lastname, firstname, email, age, street,
additionalname, fax, zip, states_id, town, language_id,
true, Arrays.asList(configurationDao.getConfValue(
"default_domain_id", Long.class, null)), phone,
sendSMS, baseURL,
sendConfirmation, jNameTimeZone, false, "", "", false, true); if (sendConfirmation) {
return new Long(-40);
} return user_id;
}
} catch (Exception e) {
log.error("[registerUser]", e);
}
return null;
}

|

|

V

	public Long registerUserInit(long user_level, long level_id, int availible,
int status, String login, String password, String lastname,
String firstname, String email, Date age, String street,
String additionalname, String fax, String zip, long states_id,
String town, long language_id, boolean sendWelcomeMessage,
List<Long> organisations, String phone, boolean sendSMS, String baseURL,
Boolean sendConfirmation, String jname_timezone, Boolean forceTimeZoneCheck,
String userOffers, String userSearchs, Boolean showContactData,
Boolean showContactDataToContacts) throws Exception {
return registerUserInit(user_level, level_id, availible,
status, login, password, lastname,
firstname, email, age, street,
additionalname, fax, zip, states_id,
town, language_id, sendWelcomeMessage,
organisations, phone, sendSMS, baseURL,
sendConfirmation,
omTimeZoneDaoImpl.getOmTimeZone(jname_timezone), forceTimeZoneCheck,
userOffers, userSearchs, showContactData,
showContactDataToContacts);
}

|

|

V

	public Long registerUserInit(long user_level, long level_id, int availible,
int status, String login, String password, String lastname,
String firstname, String email, Date age, String street,
String additionalname, String fax, String zip, long states_id,
String town, long language_id, boolean sendWelcomeMessage,
List<Long> organisations, String phone, boolean sendSMS, String baseURL,
Boolean sendConfirmation,
OmTimeZone timezone, Boolean forceTimeZoneCheck,
String userOffers, String userSearchs, Boolean showContactData,
Boolean showContactDataToContacts) throws Exception {
// TODO: make phone number persistent
// User Level must be at least Admin
// Moderators will get a temp update of there UserLevel to add Users to
// their Group
if (authLevelUtil.checkModLevel(user_level)) { Integer userLoginMinimumLength = configurationDao.getConfValue(
"user.login.minimum.length", Integer.class, "4");
if (userLoginMinimumLength == null) {
throw new Exception(
"user.login.minimum.length problem");
} // Check for required data
if (login.length() >= userLoginMinimumLength.intValue()) {
// Check for duplicates
boolean checkName = usersDao.checkUserLogin(login);
boolean checkEmail = emailManagement.checkUserEMail(email);
if (checkName && checkEmail) { String hash = cryptManager
.getInstanceOfCrypt()
.createPassPhrase(
login
+ CalendarPatterns
.getDateWithTimeByMiliSeconds(new Date()));
String link = baseURL + "activateUser?u=" + hash; if (sendWelcomeMessage && email.length() != 0) {
// We need to pass the baseURL to check if this is
// really set to be send
String sendMail = emailManagement.sendMail(login,
password, email, link, sendConfirmation);
if (!sendMail.equals("success"))
return new Long(-19);
}
Address adr = new Address();
adr.setStreet(street);
adr.setZip(zip);
adr.setTown(town);
adr.setStates(statemanagement.getStateById(states_id));
adr.setAdditionalname(additionalname);
adr.setComment("");
adr.setFax(fax);
adr.setPhone(phone);
adr.setEmail(email); // If this user needs first to click his E-Mail verification
// code then set the status to 0
if (sendConfirmation) {
status = 0;
} Long user_id = addUser(level_id, availible, status,
firstname, login, lastname, language_id, password,
adr, sendSMS, age, hash, timezone,
forceTimeZoneCheck, userOffers, userSearchs,
showContactData, showContactDataToContacts, organisations);
log.debug("Added user-Id " + user_id);
if (user_id == null) {
return new Long(-111);
} /*
* Long adress_emails_id =
* emailManagement.registerEmail(email, address_id,""); if
* (adress_emails_id==null) { return new Long(-112); }
*/ if (adr.getAdresses_id() > 0 && user_id > 0) {
return user_id;
} else {
return new Long(-16);
}
} else {
if (!checkName) {
return new Long(-15);
} else if (!checkEmail) {
return new Long(-17);
}
}
} else {
return new Long(-13);
}
}
return new Long(-1);
}

|

|

V

	public Long addUser(long level_id, int availible, int status,
String firstname, String login, String lastname, long language_id,
String userpass, Address adress, boolean sendSMS, Date age, String hash,
OmTimeZone timezone,
Boolean forceTimeZoneCheck, String userOffers, String userSearchs,
Boolean showContactData, Boolean showContactDataToContacts, List<Long> orgIds) {
try { User users = new User();
users.setFirstname(firstname);
users.setLogin(login);
users.setLastname(lastname);
users.setAge(age);
users.setAdresses(adress);
users.setSendSMS(sendSMS);
users.setAvailible(availible);
users.setLastlogin(new Date());
users.setLasttrans(new Long(0));
users.setLevel_id(level_id);
users.setStatus(status);
users.setSalutations_id(1L);
users.setStarttime(new Date());
users.setActivatehash(hash);
users.setOmTimeZone(timezone);
users.setForceTimeZoneCheck(forceTimeZoneCheck); users.setUserOffers(userOffers);
users.setUserSearchs(userSearchs);
users.setShowContactData(showContactData);
users.setShowContactDataToContacts(showContactDataToContacts); // this is needed cause the language is not a needed data at
// registering
if (language_id != 0) {
users.setLanguage_id(new Long(language_id));
} else {
users.setLanguage_id(null);
}
users.updatePassword(cryptManager, configurationDao, userpass);
users.setRegdate(new Date());
users.setDeleted(false); //new user add organizations without checks
if (orgIds != null) {
List<Organisation_Users> orgList = users.getOrganisation_users();
for (Long orgId : orgIds) {
orgList.add(organisationManager.getOrgUser(orgId, null));
}
}
return addUser(users); } catch (Exception ex2) {
log.error("[registerUser]", ex2);
}
return null;
}

|

|

V

最后将用户信息插入数据库。

	public Long addUser(User usr) {
try {
em.persist(usr);
//em.refresh(usr);
em.flush(); return usr.getUser_id();
} catch (Exception ex2) {
log.error("[addUser]", ex2);
}
return null;
}

到这里就完成了一个新用户的注册过程!

OpenMeetings(4)----新用户注册的更多相关文章

  1. php创建新用户注册界面布局实例

    php创建新用户注册界面布局实例 <!DOCTYPE> <html> <head> <title>Load page</title> < ...

  2. 对于Discuz!NT不允许新用户注册的解决办法

    客户论坛用的是Discuz!NT,但是用户注册总是提示不允许新用户注册,对于这个问题,网上好多说的是管理员登录后台,在"用户与访问控制"里将允许新用户注册改为"是&quo ...

  3. vultr新用户注册享受50美元优惠码,长期有效

    vultr vps服务器,我用了三年多,购买了几十台vps,性价比非常高. 近期,vutlr推出了最新优惠码DOMORE长期有效,新用户注册账号时候,可在付款方式界面输入这个优惠码,享受50美元余额, ...

  4. Jmeter接口测试-新用户注册API

    新用户注册 新用户注册的接口是POST /register username/password/password_confirmation 该接口需要提供3个参数,分别是 username 用户名 p ...

  5. WordPress新用户注册时提示“您的密码重设链接无效”

    在使用Wordpress密码找回功能及新用户注册邮件中的重置密码链接时,Wordpress提示“您的密码重设链接无效,请在下方请求新链接.”.“该key似乎无效”.“invalid key”. 这个其 ...

  6. jQuery之表单校验:新用户注册

    <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title> ...

  7. 淘宝网购物车jquery源码和网易新用户注册页面表单验证的练习

    淘宝网购物车源码: <html lang="en"> <head> <meta charset="UTF-8"> <t ...

  8. 修复 WordPress 通过邮箱 找回密码时的链接无效&新用户注册时提示的链接无效

    感谢大佬:https://blog.csdn.net/xiaobinqt/article/details/83055058 感谢大佬:https://www.wpdaxue.com/lost-pass ...

  9. Android之QQ新用户注册界面1

    还没到睡觉时间所以再加了一个界面... 问题: 1.下拉列表(因为还没看到这里...) 2.标题栏显示问题 3.按钮的 Enable 设置 .......... 以下是代码: 布局 fragment_ ...

随机推荐

  1. 【BZOJ 2024】 2024: [SHOI2009] 舞会 (容斥原理+高精度)

    2024: [SHOI2009] 舞会 Time Limit: 10 Sec  Memory Limit: 64 MBSubmit: 368  Solved: 102 Description OIto ...

  2. 「SCOI2016」萌萌哒

    「SCOI2016」萌萌哒 题目描述 一个长度为 \(n\) 的大数,用 \(S_1S_2S_3 \ldots S_n\) 表示,其中 \(S_i\) 表示数的第 \(i\) 位,\(S_1\) 是数 ...

  3. Android:Date、String、Long三种日期类型之间的相互转换

    源地址:http://blog.csdn.net/wangyanguiyiyang date类型转换为String类型: // formatType格式为yyyy-MM-dd HH:mm:ss//yy ...

  4. Elasticsearch - java客户端连接

    写在前面的话:读书破万卷,编码如有神-------------------------------------------------------------------- 最简单的在java客户端连 ...

  5. 内功心法 -- java.util.LinkedList<E> (6)

    写在前面的话:读书破万卷,编码如有神--------------------------------------------------------------------下文主要对java.util ...

  6. Eclipse 结合Tomcat开发Web应用

    第一部分 配置Tomcat 先到Apache官方网站下载Tomcat:http://tomcat.apache.org/.  但是在你下载Tomcat时,首选确定你的Eclipse支持的Tomcat版 ...

  7. Ext表格控件

    表格控件其实也就是帮我们完成了数据的填充工作而已,具体的数据源.要显示的列,列的定制.数据源中的哪条数据显示在哪个列中等属性还是需要我们自己手动配置的,所以我们分下面几步来完成网格控件的数据绑定: 1 ...

  8. Sql语句-case when then else end

    依据上面的表信息输出以下的结果: 以下是建库和表结构据: create table DeptSales ( deptID int, SubjMonth int , sales int , deptna ...

  9. pytest文档10-命令行传参

    前言 命令行参数是根据命令行选项将不同的值传递给测试函数,比如平常在cmd执行"pytest --html=report.html",这里面的"--html=report ...

  10. 从CVPR 2014看计算机视觉领域的最新热点

    编者按:2014年度计算机视觉方向的顶级会议CVPR上月落下帷幕.在这次大会中,微软亚洲研究院共有15篇论文入选.今年的CVPR上有哪些让人眼前一亮的研究,又反映出哪些趋势?来听赴美参加会议的微软亚洲 ...