diff options
| author | Luke Pulverenti <luke.pulverenti@gmail.com> | 2014-12-16 00:01:57 -0500 |
|---|---|---|
| committer | Luke Pulverenti <luke.pulverenti@gmail.com> | 2014-12-16 00:01:57 -0500 |
| commit | 3c48def0d76417572193cd306846f1516e0e9038 (patch) | |
| tree | 8570bb756e024eaca9f2d5b8008e43279aa9fb23 /MediaBrowser.Server.Implementations/Library | |
| parent | 7f7d2f85e324bc9e2c6b170c89af0541601e8cad (diff) | |
sync updates
Diffstat (limited to 'MediaBrowser.Server.Implementations/Library')
| -rw-r--r-- | MediaBrowser.Server.Implementations/Library/UserManager.cs | 69 | ||||
| -rw-r--r-- | MediaBrowser.Server.Implementations/Library/Validators/UserViewPostScanTask.cs | 35 |
2 files changed, 62 insertions, 42 deletions
diff --git a/MediaBrowser.Server.Implementations/Library/UserManager.cs b/MediaBrowser.Server.Implementations/Library/UserManager.cs index ed45e890b..791cae553 100644 --- a/MediaBrowser.Server.Implementations/Library/UserManager.cs +++ b/MediaBrowser.Server.Implementations/Library/UserManager.cs @@ -1,4 +1,5 @@ -using MediaBrowser.Common.Events; +using System.Collections.Concurrent; +using MediaBrowser.Common.Events; using MediaBrowser.Common.Extensions; using MediaBrowser.Common.Net; using MediaBrowser.Controller; @@ -317,7 +318,8 @@ namespace MediaBrowser.Server.Implementations.Library ConnectLinkType = user.ConnectLinkType, ConnectUserId = user.ConnectUserId, ConnectUserName = user.ConnectUserName, - ServerId = _appHost.SystemId + ServerId = _appHost.SystemId, + Policy = user.Policy }; var image = user.GetImageInfo(ImageType.Primary, 0); @@ -529,6 +531,8 @@ namespace MediaBrowser.Server.Implementations.Library _logger.ErrorException("Error deleting file {0}", ex, path); } + DeleteUserPolicy(user); + // Force this to be lazy loaded again Users = await LoadUsers().ConfigureAwait(false); @@ -715,7 +719,7 @@ namespace MediaBrowser.Server.Implementations.Library var usersReset = new List<string>(); - var valid = !string.IsNullOrWhiteSpace(_lastPin) && + var valid = !string.IsNullOrWhiteSpace(_lastPin) && string.Equals(_lastPin, pin, StringComparison.OrdinalIgnoreCase) && _lastPasswordPinCreationResult != null && _lastPasswordPinCreationResult.ExpirationDate > DateTime.UtcNow; @@ -769,14 +773,65 @@ namespace MediaBrowser.Server.Implementations.Library public DateTime ExpirationDate { get; set; } } - public UserPolicy GetUserPolicy(string userId) + public UserPolicy GetUserPolicy(User user) + { + var path = GetPolifyFilePath(user); + + try + { + lock (_policySyncLock) + { + return (UserPolicy)_xmlSerializer.DeserializeFromFile(typeof(UserPolicy), path); + } + } + catch (Exception ex) + { + _logger.ErrorException("Error reading policy file: {0}", ex, path); + + return new UserPolicy + { + EnableSync = !user.ConnectLinkType.HasValue || user.ConnectLinkType.Value != UserLinkType.Guest + }; + } + } + + private readonly object _policySyncLock = new object(); + public async Task UpdateUserPolicy(string userId, UserPolicy userPolicy) + { + var user = GetUserById(userId); + var path = GetPolifyFilePath(user); + + lock (_policySyncLock) + { + _xmlSerializer.SerializeToFile(userPolicy, path); + user.Policy = userPolicy; + } + } + + private void DeleteUserPolicy(User user) { - throw new NotImplementedException(); + var path = GetPolifyFilePath(user); + + try + { + lock (_policySyncLock) + { + File.Delete(path); + } + } + catch (IOException) + { + + } + catch (Exception ex) + { + _logger.ErrorException("Error deleting policy file", ex); + } } - public Task UpdateUserPolicy(string userId, UserPolicy userPolicy) + private string GetPolifyFilePath(User user) { - throw new NotImplementedException(); + return Path.Combine(user.ConfigurationDirectoryPath, "policy.xml"); } } } diff --git a/MediaBrowser.Server.Implementations/Library/Validators/UserViewPostScanTask.cs b/MediaBrowser.Server.Implementations/Library/Validators/UserViewPostScanTask.cs deleted file mode 100644 index 30ebcc3b8..000000000 --- a/MediaBrowser.Server.Implementations/Library/Validators/UserViewPostScanTask.cs +++ /dev/null @@ -1,35 +0,0 @@ -using MediaBrowser.Controller.Library; -using MediaBrowser.Model.Library; -using System; -using System.Threading; -using System.Threading.Tasks; - -namespace MediaBrowser.Server.Implementations.Library.Validators -{ - public class UserViewPostScanTask : ILibraryPostScanTask - { - private readonly IUserManager _userManager; - private readonly IUserViewManager _userViewManager; - - public UserViewPostScanTask(IUserManager userManager, IUserViewManager userViewManager) - { - _userManager = userManager; - _userViewManager = userViewManager; - } - - public async Task Run(IProgress<double> progress, CancellationToken cancellationToken) - { - foreach (var user in _userManager.Users) - { - foreach (var view in await _userViewManager.GetUserViews(new UserViewQuery - { - UserId = user.Id.ToString("N") - - }, cancellationToken).ConfigureAwait(false)) - { - await view.RefreshMetadata(cancellationToken).ConfigureAwait(false); - } - } - } - } -} |
