use of com.tvd12.ezyfoxserver.setting.EzyStreamingSetting in project ezyfox-server by youngmonkeys.
the class EzyLoginProcessor method apply.
public void apply(EzyZoneContext zoneContext, EzyUserLoginEvent event) {
EzyZone zone = zoneContext.getZone();
EzyZoneSetting zoneSetting = zone.getSetting();
EzyUserManagementSetting userManagementSetting = zoneSetting.getUserManagement();
String username = checkUsername(event.getUsername(), userManagementSetting.getUserNamePattern(), userManagementSetting.isAllowGuestLogin(), userManagementSetting.getGuestNamePrefix());
String password = event.getPassword();
EzyZoneUserManager userManager = zone.getUserManager();
EzyUser user;
EzySession session = event.getSession();
boolean alreadyLoggedIn;
Lock lock = userManager.getLock(username);
lock.lock();
try {
alreadyLoggedIn = userManager.containsUser(username);
if (alreadyLoggedIn) {
user = userManager.getUser(username);
} else {
user = newUser(zoneSetting, userManagementSetting, username, password, event.getUserProperties());
}
int maxSessionPerUser = userManagementSetting.getMaxSessionPerUser();
boolean allowChangeSession = userManagementSetting.isAllowChangeSession();
EzyStreamingSetting streamingSetting = zoneSetting.getStreaming();
boolean streamingEnable = streamingSetting.isEnable() && event.isStreamingEnable();
processUserSessions(user, session, maxSessionPerUser, allowChangeSession, streamingEnable);
addUserToManager(userManager, user, session, alreadyLoggedIn);
} finally {
lock.unlock();
userManager.removeLock(username);
}
fireUserAddedEvent(zoneContext, user, session, event.getData(), alreadyLoggedIn);
EzyResponse response = newLoginResponse(zoneContext, user, event.getOutput());
serverContext.send(response, session, false);
}
Aggregations