if (AuthLevelUtil.hasWebServiceLevel(userDao.getRights(users_id))) {
Sessiondata sd = sessiondataDao.getSessionByHash(SID);
if (sd == null || sd.getSessionXml() == null) {
return new Long(-37);
} else {
RemoteSessionObject userObject = RemoteSessionObject.fromXml(sd.getSessionXml());
log.debug(userObject.toString());
IConnection current = Red5.getConnectionLocal();
String streamId = current.getClient().getId();
Client currentClient = sessionManager.getClientByStreamId(streamId, null);
// Check if this User is simulated in the OpenMeetings
// Database
if (!Strings.isEmpty(userObject.getExternalUserId())) {
// If so we need to check that we create this user in
// OpenMeetings and update its record
User user = userDao.getExternalUser(userObject.getExternalUserId(), userObject.getExternalUserType());
if (user == null) {
String iCalTz = configurationDao.getConfValue("default.timezone", String.class, "");
Address a = userDao.getAddress(null, null, null, 1L, null, null, null, userObject.getEmail());
Set<Right> rights = UserDao.getDefaultRights();
rights.remove(Right.Login);
rights.remove(Right.Dashboard);
User u = userDao.addUser(rights, userObject.getFirstname(), userObject.getUsername(),
userObject.getLastname(), 1L, "" // password is empty by default
, a, false, null, null, timezoneUtil.getTimeZone(iCalTz), false
, null, null, false, false, userObject.getExternalUserId()
, userObject.getExternalUserType(), null, userObject.getPictureUrl());
long userId = u.getUser_id();
currentClient.setUser_id(userId);
SessionVariablesUtil.setUserId(current.getClient(), userId);
} else {
user.setPictureuri(userObject.getPictureUrl());
userDao.update(user, users_id);
currentClient.setUser_id(user.getUser_id());
SessionVariablesUtil.setUserId(current.getClient(), user.getUser_id());
}
}
log.debug("userObject.getExternalUserId() -2- " + currentClient.getUser_id());
currentClient.setUserObject(userObject.getUsername(), userObject.getFirstname(), userObject.getLastname());
currentClient.setPicture_uri(userObject.getPictureUrl());
currentClient.setMail(userObject.getEmail());
log.debug("UPDATE USER BY STREAMID " + streamId);
if (currentClient.getUser_id() != null) {
sessiondataDao.updateUser(SID, currentClient.getUser_id());