OpenMeetings (4) -- -- -- 새 사용자 등록
16851 단어 open
<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;
}
여기까지 새로운 사용자의 등록 과정을 완성했습니다!
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
openid에 따라 사용자의 기본 정보를 가져와 데이터베이스에 저장합니다//根据用户的openid获取用户昵称(基本信息) public function loadConcerners() $openidarr=$this->getOpenIds(); $concernerbaseinfolist=array(...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.