aboutsummaryrefslogtreecommitdiff
path: root/MediaBrowser.Server.Implementations/Library/UserManager.cs
diff options
context:
space:
mode:
Diffstat (limited to 'MediaBrowser.Server.Implementations/Library/UserManager.cs')
-rw-r--r--MediaBrowser.Server.Implementations/Library/UserManager.cs40
1 files changed, 23 insertions, 17 deletions
diff --git a/MediaBrowser.Server.Implementations/Library/UserManager.cs b/MediaBrowser.Server.Implementations/Library/UserManager.cs
index 503af4970..3b6de5998 100644
--- a/MediaBrowser.Server.Implementations/Library/UserManager.cs
+++ b/MediaBrowser.Server.Implementations/Library/UserManager.cs
@@ -160,10 +160,25 @@ namespace MediaBrowser.Server.Implementations.Library
{
Users = await LoadUsers().ConfigureAwait(false);
- foreach (var user in Users.ToList())
+ var users = Users.ToList();
+
+ foreach (var user in users)
{
await DoPolicyMigration(user).ConfigureAwait(false);
}
+
+ // If there are no local users with admin rights, make them all admins
+ if (!users.Any(i => i.Policy.IsAdministrator))
+ {
+ foreach (var user in users)
+ {
+ if (!user.ConnectLinkType.HasValue || user.ConnectLinkType.Value == UserLinkType.LinkedUser)
+ {
+ user.Policy.IsAdministrator = true;
+ await UpdateUserPolicy(user, user.Policy, false).ConfigureAwait(false);
+ }
+ }
+ }
}
public Task<bool> AuthenticateUser(string username, string passwordSha1, string remoteEndPoint)
@@ -331,7 +346,7 @@ namespace MediaBrowser.Server.Implementations.Library
user.Policy.IsHidden = user.Configuration.IsHidden;
user.Policy.MaxParentalRating = user.Configuration.MaxParentalRating;
- await UpdateUserPolicy(user.Id.ToString("N"), user.Policy);
+ await UpdateUserPolicy(user, user.Policy, false);
user.Configuration.HasMigratedToPolicy = true;
await UpdateConfiguration(user, user.Configuration, true).ConfigureAwait(false);
@@ -867,12 +882,6 @@ namespace MediaBrowser.Server.Implementations.Library
userPolicy = _jsonSerializer.DeserializeFromString<UserPolicy>(json);
}
- var updateConfig = user.Policy.IsAdministrator != userPolicy.IsAdministrator ||
- user.Policy.EnableLiveTvManagement != userPolicy.EnableLiveTvManagement ||
- user.Policy.EnableLiveTvAccess != userPolicy.EnableLiveTvAccess ||
- user.Policy.EnableMediaPlayback != userPolicy.EnableMediaPlayback ||
- user.Policy.EnableContentDeletion != userPolicy.EnableContentDeletion;
-
var path = GetPolifyFilePath(user);
Directory.CreateDirectory(Path.GetDirectoryName(path));
@@ -883,16 +892,13 @@ namespace MediaBrowser.Server.Implementations.Library
user.Policy = userPolicy;
}
- if (updateConfig)
- {
- user.Configuration.IsAdministrator = user.Policy.IsAdministrator;
- user.Configuration.EnableLiveTvManagement = user.Policy.EnableLiveTvManagement;
- user.Configuration.EnableLiveTvAccess = user.Policy.EnableLiveTvAccess;
- user.Configuration.EnableMediaPlayback = user.Policy.EnableMediaPlayback;
- user.Configuration.EnableContentDeletion = user.Policy.EnableContentDeletion;
+ user.Configuration.IsAdministrator = user.Policy.IsAdministrator;
+ user.Configuration.EnableLiveTvManagement = user.Policy.EnableLiveTvManagement;
+ user.Configuration.EnableLiveTvAccess = user.Policy.EnableLiveTvAccess;
+ user.Configuration.EnableMediaPlayback = user.Policy.EnableMediaPlayback;
+ user.Configuration.EnableContentDeletion = user.Policy.EnableContentDeletion;
- await UpdateConfiguration(user, user.Configuration, true).ConfigureAwait(false);
- }
+ await UpdateConfiguration(user, user.Configuration, true).ConfigureAwait(false);
}
private void DeleteUserPolicy(User user)