Add active session tracking

Adds a flag for a maximum number of user sessions, as well as an
authentication check to ensure that the user is not above this level.
This commit is contained in:
Joshua M. Boniface
2020-10-04 11:50:00 -04:00
parent d11adeb85e
commit 5a7dda337f
4 changed files with 26 additions and 0 deletions

View File

@@ -1484,6 +1484,19 @@ namespace Emby.Server.Implementations.Session
throw new SecurityException("User is not allowed access from this device.");
}
var sessionsCount = Sessions.Where(i => string.Equals(i.UserId, user.Id)).ToList().Count;
int maxActiveSessions = user.MaxActiveSessions;
_logger.LogDebug("Current/Max sessions for user {User}: {Sessions}/{Max}", user.Username, sessionsCount, maxActiveSessions);
if (maxActiveSessions >= 0 && sessionsCount >= maxActiveSessions)
{
throw new SecurityException(
"User {User} is at their maximum number of sessions ({Sessions}/{Max}).",
user.Username,
sessionsCount,
maxActiveSessions
)
}
var token = GetAuthorizationToken(user, request.DeviceId, request.App, request.AppVersion, request.DeviceName);
var session = LogSessionActivity(