📄 onlineuserfactoryimpl.java
字号:
} catch (DatabaseException e) {
log.error("Unexpected error validating user", e);
throw new AuthenticationException(NotLoginException.NOT_LOGIN);//we dont want this line to happen
}
}
public OnlineUser getAnonymousUser(HttpServletRequest req)
throws DatabaseException, AssertionException {
GenericRequest request = new GenericRequestServletImpl(req);
return this.getAnonymousUser(request);
}
public OnlineUser getAnonymousUser(GenericRequest request)
throws DatabaseException, AssertionException {
int memberID = MVNForumConstant.MEMBER_ID_OF_GUEST;
String memberName = MVNForumConfig.getDefaultGuestName();
double timeZone = MVNForumConfig.getDefaultGuestTimeZone();
String localeName = "";
Timestamp lastLogon = null;
String lastLogonIP = null;
int postsPerPage = MVNForumConfig.getRowsPerPage();
try {
MemberBean memberBean = DAOFactory.getMemberDAO().getMember_forViewCurrentMember(memberID);
if (memberBean.getMemberStatus() != MemberBean.MEMBER_STATUS_ENABLE) {
//@todo: for now, Guest is always enabled
}
memberName = memberBean.getMemberName();
timeZone = memberBean.getMemberTimeZone();
localeName = memberBean.getMemberLanguage();
lastLogon = memberBean.getMemberLastLogon();
postsPerPage = memberBean.getMemberPostsPerPage();
lastLogonIP = memberBean.getMemberLastIP();
//@todo: Should we update LastLogon? I think we should, so we know when we had last guest visiting the site.
Timestamp now = DateUtil.getCurrentGMTTimestamp();
//@todo should we remember these information for the Guest
DAOFactory.getMemberDAO().updateLastLogon(memberID, now, request.getRemoteAddr());
OnlineUserImpl anonymousUser = new OnlineUserImpl(request, true/*isGuest*/);
anonymousUser.setMemberID(memberID);
anonymousUser.setMemberName(memberName);
anonymousUser.setTimeZone(timeZone);
MVNForumPermission permission = MVNForumPermissionFactory.getAnonymousPermission();
anonymousUser.setPermission(permission);
anonymousUser.setLocaleName(localeName);
anonymousUser.setLastLogonTimestamp(lastLogon);
anonymousUser.setLastLogonIP(lastLogonIP);
//no gender; anonymousUser.setGender(memberBean.getMemberGender() != 0);
anonymousUser.setPostsPerPage(postsPerPage);
return anonymousUser;
} catch (ObjectNotFoundException e) {
OnlineUserImpl anonymousUser = new OnlineUserImpl(request, true/*isGuest*/);
//anonymousUser.setMemberID(MVNForumConstant.MEMBER_ID_OF_GUEST);
//anonymousUser.setMemberName(MVNForumConfig.getDefaultGuestName());
MVNForumPermission permission = MVNForumPermissionFactory.getAnonymousPermission();
anonymousUser.setPermission(permission);
anonymousUser.setLocaleName("");
anonymousUser.setLastLogonTimestamp(new Timestamp(0));
anonymousUser.setPostsPerPage(postsPerPage);
anonymousUser.setTimeZone(timeZone);
return anonymousUser;
} catch (DatabaseException e) {
OnlineUserImpl anonymousUser = new OnlineUserImpl(request, true/*isGuest*/);
//anonymousUser.setMemberID(MVNForumConstant.MEMBER_ID_OF_GUEST);
//anonymousUser.setMemberName(MVNForumConfig.getDefaultGuestName());
MVNForumPermission permission = MVNForumPermissionFactory.getAnonymousPermission();
anonymousUser.setPermission(permission);
anonymousUser.setLocaleName("");
anonymousUser.setLastLogonTimestamp(new Timestamp(0));
anonymousUser.setPostsPerPage(postsPerPage);
anonymousUser.setTimeZone(timeZone);
return anonymousUser;
}
}
public void postLogin(HttpServletRequest request, HttpServletResponse response, OnlineUser onlineUser)
throws DatabaseException {
// We create default Message Folder for this user
int folderOption = 0;
int folderType = 0;
int folderStatus = 0;
Timestamp now = DateUtil.getCurrentGMTTimestamp();
try {
try {
DAOFactory.getMessageFolderDAO().create(MVNForumConstant.MESSAGE_FOLDER_INBOX, onlineUser.getMemberID(),
0/*folderOrder*/, folderStatus, folderOption, folderType, now, now);
} catch (DuplicateKeyException ex) {
// Already existed, just go ahead
}
try {
DAOFactory.getMessageFolderDAO().create(MVNForumConstant.MESSAGE_FOLDER_DRAFT, onlineUser.getMemberID(),
1/*folderOrder*/, folderStatus, folderOption, folderType, now, now);
} catch (DuplicateKeyException ex) {
// Already existed, just go ahead
}
try {
DAOFactory.getMessageFolderDAO().create(MVNForumConstant.MESSAGE_FOLDER_SENT, onlineUser.getMemberID(),
2/*folderOrder*/, folderStatus, folderOption, folderType, now, now);
} catch (DuplicateKeyException ex) {
// Already existed, just go ahead
}
try {
DAOFactory.getMessageFolderDAO().create(MVNForumConstant.MESSAGE_FOLDER_TRASH, onlineUser.getMemberID(),
3/*folderOrder*/, folderStatus, folderOption, folderType, now, now);
} catch (DuplicateKeyException ex) {
// Already existed, just go ahead
}
} catch (CreateException ce) {
throw new DatabaseException("Cannot created Message Folder.");
} catch (ForeignKeyNotFoundException fe) {
throw new DatabaseException("Cannot created Message Folder because the foreign key is not existed.");
}
}
public void logout(HttpServletRequest request, HttpServletResponse response) {
//do nothing
}
public void logout(GenericRequest request, GenericResponse response) {
//do nothing
}
public String getEncodedPassword(String loginName, String password) {
return Encoder.getMD5_Base64(password);
}
public boolean validatePassword(String loginName, String password, boolean isEncodedPassword)
throws AuthenticationException {
try {
int memberId = DAOFactory.getMemberDAO().getMemberIDFromMemberName(loginName);
if ((memberId == 0) || (memberId == MVNForumConstant.MEMBER_ID_OF_GUEST)) {
return true;
}
String encodedPassword;
if (isEncodedPassword) {
encodedPassword = password;
} else {
encodedPassword = getEncodedPassword(loginName, password);
}
if (isEncodedPassword && password.equals(OnlineUserManager.PASSWORD_OF_METHOD_REALM)) {
if (MVNForumConfig.getEnableLoginInfoInRealm()) {
return true;
}
}
if (isEncodedPassword && password.equals(OnlineUserManager.PASSWORD_OF_METHOD_CUSTOMIZATION)) {
if (MVNForumConfig.getEnableLoginInfoInCustomization()) {
return true;
}
}
return encodedPassword.equals(DAOFactory.getMemberDAO().getPassword(memberId));
} catch (ObjectNotFoundException e) {
throw new AuthenticationException(NotLoginException.WRONG_NAME);
} catch (Exception e) {
/** @todo find a beter one than NotLoginException.NOT_LOGIN */
throw new AuthenticationException(NotLoginException.NOT_LOGIN);
}
}
public void ensureCorrectPassword(String loginName, String password, boolean isEncodedPassword)
throws AuthenticationException {
boolean isCorrectPassword = validatePassword(loginName, password, isEncodedPassword);
if (isCorrectPassword == false) {
throw new AuthenticationException(NotLoginException.WRONG_PASSWORD);
}
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -