aboutsummaryrefslogtreecommitdiff
path: root/Jellyfin.Data/Entities/User.cs
diff options
context:
space:
mode:
Diffstat (limited to 'Jellyfin.Data/Entities/User.cs')
-rw-r--r--Jellyfin.Data/Entities/User.cs75
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;
}