in openmeetings-web/src/main/java/org/apache/openmeetings/web/app/WebSession.java [277:340]
public boolean signIn(String secureHash, boolean markUsed) {
SOAPLogin soapLogin = soapDao.get(secureHash);
if (soapLogin == null) {
log.warn("Secure hash not found in DB");
return false;
}
log.debug("Secure hash found, is used ? {}", soapLogin.isUsed());
if (!soapLogin.isUsed() || soapLogin.getAllowSameURLMultipleTimes()) {
Sessiondata sd = sessionDao.check(soapLogin.getSessionHash());
log.debug("Do we have data for hash ? {}", (sd.getXml() != null));
if (sd.getXml() != null) {
RemoteSessionObject remoteUser = RemoteSessionObject.fromString(sd.getXml());
log.debug("Hash data was parsed successfuly; containg exterlaId ? {}", !Strings.isEmpty(remoteUser.getExternalId()));
if (!Strings.isEmpty(remoteUser.getExternalId())) {
Room r;
if (Strings.isEmpty(soapLogin.getExternalRoomId()) || Strings.isEmpty(soapLogin.getExternalType())) {
r = roomDao.get(soapLogin.getRoomId());
} else {
r = roomDao.getExternal(soapLogin.getExternalType(), soapLogin.getExternalRoomId());
}
if (r == null) {
log.warn("Room was not found");
} else {
redirectHash(r, () -> {});
}
User user = userDao.getExternalUser(remoteUser.getExternalId(), remoteUser.getExternalType());
if (user == null) {
user = getNewUserInstance(null);
user.setFirstname(remoteUser.getFirstname());
user.setLastname(remoteUser.getLastname());
user.setLogin(remoteUser.getUsername());
user.setType(Type.EXTERNAL);
user.setExternalId(remoteUser.getExternalId());
user.addGroup(groupDao.getExternal(remoteUser.getExternalType()));
user.getRights().clear();
user.getRights().add(Right.ROOM);
user.getAddress().setEmail(remoteUser.getEmail());
user.setPictureUri(remoteUser.getPictureUrl());
} else {
user.setFirstname(remoteUser.getFirstname());
user.setLastname(remoteUser.getLastname());
user.setPictureUri(remoteUser.getPictureUrl());
}
user = userDao.update(user, null);
if (markUsed) {
soapLogin.setUsed(true);
soapLogin.setUseDate(new Date());
soapDao.update(soapLogin);
}
roomId = r == null ? null : r.getId();
sd.setUserId(user.getId());
sd.setRoomId(roomId);
sessionDao.update(sd);
setUser(user, null);
recordingId = soapLogin.getRecordingId();
soap = soapLogin;
log.info("Hash was authorized");
return true;
}
}
}
log.warn("Hash was NOT authorized");
return false;
}