OpenMeetings(4)----新用户注册
用户登录与注册的主要代码都在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)----新用户注册的更多相关文章
- php创建新用户注册界面布局实例
php创建新用户注册界面布局实例 <!DOCTYPE> <html> <head> <title>Load page</title> < ...
- 对于Discuz!NT不允许新用户注册的解决办法
客户论坛用的是Discuz!NT,但是用户注册总是提示不允许新用户注册,对于这个问题,网上好多说的是管理员登录后台,在"用户与访问控制"里将允许新用户注册改为"是&quo ...
- vultr新用户注册享受50美元优惠码,长期有效
vultr vps服务器,我用了三年多,购买了几十台vps,性价比非常高. 近期,vutlr推出了最新优惠码DOMORE长期有效,新用户注册账号时候,可在付款方式界面输入这个优惠码,享受50美元余额, ...
- Jmeter接口测试-新用户注册API
新用户注册 新用户注册的接口是POST /register username/password/password_confirmation 该接口需要提供3个参数,分别是 username 用户名 p ...
- WordPress新用户注册时提示“您的密码重设链接无效”
在使用Wordpress密码找回功能及新用户注册邮件中的重置密码链接时,Wordpress提示“您的密码重设链接无效,请在下方请求新链接.”.“该key似乎无效”.“invalid key”. 这个其 ...
- jQuery之表单校验:新用户注册
<!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title> ...
- 淘宝网购物车jquery源码和网易新用户注册页面表单验证的练习
淘宝网购物车源码: <html lang="en"> <head> <meta charset="UTF-8"> <t ...
- 修复 WordPress 通过邮箱 找回密码时的链接无效&新用户注册时提示的链接无效
感谢大佬:https://blog.csdn.net/xiaobinqt/article/details/83055058 感谢大佬:https://www.wpdaxue.com/lost-pass ...
- Android之QQ新用户注册界面1
还没到睡觉时间所以再加了一个界面... 问题: 1.下拉列表(因为还没看到这里...) 2.标题栏显示问题 3.按钮的 Enable 设置 .......... 以下是代码: 布局 fragment_ ...
随机推荐
- FastReport.Net使用:[22]地图(Map)控件
标记有学生地区 1.在报表中放一个地图控件 将地图控件放在标题区即可,其他栏目删除. 2.双击地图控件进行地图添加. 可以再网上下载到地图数据,ESRI shapefile文件,本例中找了个省会城市地 ...
- Matrix-tree定理 spoj HIGH
Matrix-tree定理,给出一个无向图,问求出的生成树方案有多少种方案,利用Matrix-tree定理,主对角线第i行是i的度数,(i,j) 值为i和j之间边的数量,然后删去第一行第一列,利用初等 ...
- 【贪心】hdu4803 Poor Warehouse Keeper
题意:一开始有1个物品,总价是1.你的一次操作可以要么使得物品数量+1,总价加上当前物品的单价.要么可以使得总价+1,物品数量不变.问你最少要几次操作从初始状态到达有x个物品,总价是y的状态.这里的y ...
- bzoj 1834: [ZJOI2010]network 网络扩容 -- 最大流+费用流
1834: [ZJOI2010]network 网络扩容 Time Limit: 3 Sec Memory Limit: 64 MB Description 给定一张有向图,每条边都有一个容量C和一 ...
- Registering DLL and ActiveX controls from code
http://delphi.about.com/od/windowsshellapi/l/aa040803a.htm How to register (and unregister) OLE cont ...
- VirtualBox 4.3.18 启动虚拟机时显示不能加载 R3模块并退出故障解决一例
VirtualBox 升级到 4.3.1x后一直问题不断.搜了些资料,发现这货从最近的某个版本开始,为了安全,要校验进程完整性,那些在运行时要注入Virtualbox进程的模块都要进行校验.于是乎出现 ...
- Spring MVC @ModelAttribute 详解
1.@ModelAttribute注释void返回值的方法 @Controller public class HelloModelController { @ModelAttribute public ...
- 15KW电动机380V及220V时的电流分别为多少
15KW电动机380V及220V时的电流分别为多少 当用电电压为380V时:P=UICOSφ/1.72,此时电流为: I=15KW/380V/0.83(COSφ,功率因数)/1.72x1000=27. ...
- VS2010下面Empty Project使用
VS2010下面Empty Project使用:1,添加代码HelloApp #include <afxwin.h> class CHelloApp:public CWinApp{publ ...
- java并发集合知识点(二)
我们平时写程序需要经常用到集合类,比如ArrayList.HashMap等,但是这些集合不能够实现并发运行机制,这样在服务器上运行时就会非常的消耗资源和浪费时间,并且对这些集合进行迭代的过程中不能进行 ...