diff options
Diffstat (limited to 'Jellyfin.Data/Entities/User.cs')
| -rw-r--r-- | Jellyfin.Data/Entities/User.cs | 75 |
1 files changed, 40 insertions, 35 deletions
diff --git a/Jellyfin.Data/Entities/User.cs b/Jellyfin.Data/Entities/User.cs index e309e54de..58ddaaf83 100644 --- a/Jellyfin.Data/Entities/User.cs +++ b/Jellyfin.Data/Entities/User.cs @@ -29,20 +29,9 @@ namespace Jellyfin.Data.Entities /// <param name="passwordResetProviderId">The Id of the user's password reset provider.</param> public User(string username, string authenticationProviderId, string passwordResetProviderId) { - if (string.IsNullOrEmpty(username)) - { - throw new ArgumentNullException(nameof(username)); - } - - if (string.IsNullOrEmpty(authenticationProviderId)) - { - throw new ArgumentNullException(nameof(authenticationProviderId)); - } - - if (string.IsNullOrEmpty(passwordResetProviderId)) - { - throw new ArgumentNullException(nameof(passwordResetProviderId)); - } + ArgumentException.ThrowIfNullOrEmpty(username); + ArgumentException.ThrowIfNullOrEmpty(authenticationProviderId); + ArgumentException.ThrowIfNullOrEmpty(passwordResetProviderId); Username = username; AuthenticationProviderId = authenticationProviderId; @@ -103,16 +92,6 @@ namespace Jellyfin.Data.Entities public string? Password { get; set; } /// <summary> - /// Gets or sets the user's easy password, or <c>null</c> if none is set. - /// </summary> - /// <remarks> - /// Max length = 65535. - /// </remarks> - [MaxLength(65535)] - [StringLength(65535)] - public string? EasyPassword { get; set; } - - /// <summary> /// Gets or sets a value indicating whether the user must update their password. /// </summary> /// <remarks> @@ -362,7 +341,7 @@ namespace Jellyfin.Data.Entities /// <returns><c>True</c> if the user has the specified permission.</returns> public bool HasPermission(PermissionKind kind) { - return Permissions.First(p => p.Kind == kind).Value; + return Permissions.FirstOrDefault(p => p.Kind == kind)?.Value ?? false; } /// <summary> @@ -372,7 +351,15 @@ namespace Jellyfin.Data.Entities /// <param name="value">The value to set.</param> public void SetPermission(PermissionKind kind, bool value) { - Permissions.First(p => p.Kind == kind).Value = value; + var currentPermission = Permissions.FirstOrDefault(p => p.Kind == kind); + if (currentPermission is null) + { + Permissions.Add(new Permission(kind, value)); + } + else + { + currentPermission.Value = value; + } } /// <summary> @@ -382,9 +369,9 @@ namespace Jellyfin.Data.Entities /// <returns>A string array containing the user's preferences.</returns> public string[] GetPreference(PreferenceKind preference) { - var val = Preferences.First(p => p.Kind == preference).Value; + var val = Preferences.FirstOrDefault(p => p.Kind == preference)?.Value; - return Equals(val, string.Empty) ? Array.Empty<string>() : val.Split(Delimiter); + return string.IsNullOrEmpty(val) ? Array.Empty<string>() : val.Split(Delimiter); } /// <summary> @@ -395,7 +382,7 @@ namespace Jellyfin.Data.Entities /// <returns>A {T} array containing the user's preference.</returns> public T[] GetPreferenceValues<T>(PreferenceKind preference) { - var val = Preferences.First(p => p.Kind == preference).Value; + var val = Preferences.FirstOrDefault(p => p.Kind == preference)?.Value; if (string.IsNullOrEmpty(val)) { return Array.Empty<T>(); @@ -411,7 +398,7 @@ namespace Jellyfin.Data.Entities try { var parsedValue = converter.ConvertFromString(stringValues[i].Trim()); - if (parsedValue != null) + if (parsedValue is not null) { parsedValues[convertedCount++] = (T)parsedValue; } @@ -432,8 +419,16 @@ namespace Jellyfin.Data.Entities /// <param name="values">The values.</param> public void SetPreference(PreferenceKind preference, string[] values) { - Preferences.First(p => p.Kind == preference).Value - = string.Join(Delimiter, values); + var value = string.Join(Delimiter, values); + var currentPreference = Preferences.FirstOrDefault(p => p.Kind == preference); + if (currentPreference is null) + { + Preferences.Add(new Preference(preference, value)); + } + else + { + currentPreference.Value = value; + } } /// <summary> @@ -444,8 +439,16 @@ namespace Jellyfin.Data.Entities /// <typeparam name="T">The type of value.</typeparam> public void SetPreference<T>(PreferenceKind preference, T[] values) { - Preferences.First(p => p.Kind == preference).Value - = string.Join(Delimiter, values); + var value = string.Join(Delimiter, values); + var currentPreference = Preferences.FirstOrDefault(p => p.Kind == preference); + if (currentPreference is null) + { + Preferences.Add(new Preference(preference, value)); + } + else + { + currentPreference.Value = value; + } } /// <summary> @@ -495,6 +498,7 @@ namespace Jellyfin.Data.Entities Permissions.Add(new Permission(PermissionKind.EnableVideoPlaybackTranscoding, true)); Permissions.Add(new Permission(PermissionKind.ForceRemoteSourceTranscoding, false)); Permissions.Add(new Permission(PermissionKind.EnableRemoteControlOfOtherUsers, false)); + Permissions.Add(new Permission(PermissionKind.EnableCollectionManagement, false)); } /// <summary> @@ -512,8 +516,9 @@ namespace Jellyfin.Data.Entities { var localTime = date.ToLocalTime(); var hour = localTime.TimeOfDay.TotalHours; + var currentDayOfWeek = localTime.DayOfWeek; - return DayOfWeekHelper.GetDaysOfWeek(schedule.DayOfWeek).Contains(localTime.DayOfWeek) + return schedule.DayOfWeek.Contains(currentDayOfWeek) && hour >= schedule.StartHour && hour <= schedule.EndHour; } |
