diff --git a/MediaBrowser.Api/ApiService.cs b/MediaBrowser.Api/ApiService.cs index ca76d5c5c1..ab12a350f4 100644 --- a/MediaBrowser.Api/ApiService.cs +++ b/MediaBrowser.Api/ApiService.cs @@ -1,10 +1,10 @@ -using System; +using MediaBrowser.Controller; +using MediaBrowser.Model.DTO; +using MediaBrowser.Model.Entities; +using System; using System.Collections.Generic; using System.Linq; using System.Threading.Tasks; -using MediaBrowser.Controller; -using MediaBrowser.Model.DTO; -using MediaBrowser.Model.Entities; namespace MediaBrowser.Api { @@ -13,6 +13,9 @@ namespace MediaBrowser.Api /// public static class ApiService { + /// + /// Gets an Item by Id, or the root item if none is supplied + /// public static BaseItem GetItemById(string id) { Guid guid = string.IsNullOrEmpty(id) ? Guid.Empty : new Guid(id); @@ -20,6 +23,52 @@ namespace MediaBrowser.Api return Kernel.Instance.GetItemById(guid); } + /// + /// Gets a User by Id + /// + /// Whether or not to update the user's LastActivityDate + public static User GetUserById(string id, bool logActivity) + { + Guid guid = new Guid(id); + + User user = Kernel.Instance.Users.FirstOrDefault(u => u.Id == guid); + + if (logActivity) + { + LogUserActivity(user); + } + + return user; + } + + /// + /// Gets the default User + /// + /// Whether or not to update the user's LastActivityDate + public static User GetDefaultUser(bool logActivity) + { + User user = Kernel.Instance.GetDefaultUser(); + + if (logActivity) + { + LogUserActivity(user); + } + + return user; + } + + /// + /// Updates LastActivityDate for a given User + /// + public static void LogUserActivity(User user) + { + user.LastActivityDate = DateTime.UtcNow; + Kernel.Instance.SaveUser(user); + } + + /// + /// Converts a BaseItem to a DTOBaseItem + /// public async static Task GetDTOBaseItem(BaseItem item, User user, bool includeChildren = true, bool includePeople = true) @@ -52,6 +101,9 @@ namespace MediaBrowser.Api return dto; } + /// + /// Sets simple property values on a DTOBaseItem + /// private static void AttachBasicFields(DTOBaseItem dto, BaseItem item, User user) { dto.AspectRatio = item.AspectRatio; @@ -168,6 +220,9 @@ namespace MediaBrowser.Api } } + /// + /// Attaches Studio DTO's to a DTOBaseItem + /// private static async Task AttachStudios(DTOBaseItem dto, BaseItem item) { // Attach Studios by transforming them into BaseItemStudio (DTO) @@ -191,6 +246,9 @@ namespace MediaBrowser.Api } } + /// + /// Attaches child DTO's to a DTOBaseItem + /// private static async Task AttachChildren(DTOBaseItem dto, BaseItem item, User user) { var folder = item as Folder; @@ -203,6 +261,9 @@ namespace MediaBrowser.Api } } + /// + /// Attaches trailer DTO's to a DTOBaseItem + /// private static async Task AttachLocalTrailers(DTOBaseItem dto, BaseItem item, User user) { if (item.LocalTrailers != null && item.LocalTrailers.Any()) @@ -211,6 +272,9 @@ namespace MediaBrowser.Api } } + /// + /// Attaches People DTO's to a DTOBaseItem + /// private static async Task AttachPeople(DTOBaseItem dto, BaseItem item) { // Attach People by transforming them into BaseItemPerson (DTO) @@ -238,6 +302,9 @@ namespace MediaBrowser.Api } } + /// + /// If an item does not any backdrops, this can be used to find the first parent that does have one + /// private static Guid? GetParentBackdropItemId(BaseItem item, out int backdropCount) { backdropCount = 0; @@ -258,6 +325,9 @@ namespace MediaBrowser.Api return null; } + /// + /// If an item does not have a logo, this can be used to find the first parent that does have one + /// private static Guid? GetParentLogoItemId(BaseItem item) { var parent = item.Parent; @@ -275,6 +345,9 @@ namespace MediaBrowser.Api return null; } + /// + /// Gets an ImagesByName entity along with the number of items containing it + /// public static IBNItem GetIBNItem(BaseEntity entity, int itemCount) { return new IBNItem() @@ -286,6 +359,9 @@ namespace MediaBrowser.Api }; } + /// + /// Converts a User to a DTOUser + /// public static DTOUser GetDTOUser(User user) { return new DTOUser() diff --git a/MediaBrowser.Api/HttpHandlers/DefaultUserHandler.cs b/MediaBrowser.Api/HttpHandlers/DefaultUserHandler.cs index 0fb739b7d0..56a05dab84 100644 --- a/MediaBrowser.Api/HttpHandlers/DefaultUserHandler.cs +++ b/MediaBrowser.Api/HttpHandlers/DefaultUserHandler.cs @@ -1,9 +1,7 @@ -using System.Linq; -using System.Threading.Tasks; -using MediaBrowser.Common.Net.Handlers; -using MediaBrowser.Controller; +using MediaBrowser.Common.Net.Handlers; using MediaBrowser.Model.DTO; using MediaBrowser.Model.Entities; +using System.Threading.Tasks; namespace MediaBrowser.Api.HttpHandlers { @@ -11,7 +9,7 @@ namespace MediaBrowser.Api.HttpHandlers { protected override Task GetObjectToSerialize() { - User user = Kernel.Instance.Users.FirstOrDefault(); + User user = ApiService.GetDefaultUser(false); DTOUser dto = ApiService.GetDTOUser(user); diff --git a/MediaBrowser.Api/HttpHandlers/GenreHandler.cs b/MediaBrowser.Api/HttpHandlers/GenreHandler.cs index eeadf1e453..dffae49d79 100644 --- a/MediaBrowser.Api/HttpHandlers/GenreHandler.cs +++ b/MediaBrowser.Api/HttpHandlers/GenreHandler.cs @@ -1,11 +1,11 @@ -using System; -using System.Collections.Generic; -using System.Linq; -using System.Threading.Tasks; -using MediaBrowser.Common.Net.Handlers; +using MediaBrowser.Common.Net.Handlers; using MediaBrowser.Controller; using MediaBrowser.Model.DTO; using MediaBrowser.Model.Entities; +using System; +using System.Collections.Generic; +using System.Linq; +using System.Threading.Tasks; namespace MediaBrowser.Api.HttpHandlers { @@ -17,8 +17,7 @@ namespace MediaBrowser.Api.HttpHandlers protected override Task GetObjectToSerialize() { Folder parent = ApiService.GetItemById(QueryString["id"]) as Folder; - Guid userId = Guid.Parse(QueryString["userid"]); - User user = Kernel.Instance.Users.First(u => u.Id == userId); + User user = ApiService.GetUserById(QueryString["userid"], true); string name = QueryString["name"]; diff --git a/MediaBrowser.Api/HttpHandlers/GenresHandler.cs b/MediaBrowser.Api/HttpHandlers/GenresHandler.cs index 9be2efa173..073411b882 100644 --- a/MediaBrowser.Api/HttpHandlers/GenresHandler.cs +++ b/MediaBrowser.Api/HttpHandlers/GenresHandler.cs @@ -1,11 +1,10 @@ -using System; -using System.Collections.Generic; -using System.Linq; -using System.Threading.Tasks; -using MediaBrowser.Common.Net.Handlers; +using MediaBrowser.Common.Net.Handlers; using MediaBrowser.Controller; using MediaBrowser.Model.DTO; using MediaBrowser.Model.Entities; +using System.Collections.Generic; +using System.Linq; +using System.Threading.Tasks; namespace MediaBrowser.Api.HttpHandlers { @@ -14,8 +13,7 @@ namespace MediaBrowser.Api.HttpHandlers protected override Task GetObjectToSerialize() { Folder parent = ApiService.GetItemById(QueryString["id"]) as Folder; - Guid userId = Guid.Parse(QueryString["userid"]); - User user = Kernel.Instance.Users.First(u => u.Id == userId); + User user = ApiService.GetUserById(QueryString["userid"], true); return GetAllGenres(parent, user); } diff --git a/MediaBrowser.Api/HttpHandlers/ImageHandler.cs b/MediaBrowser.Api/HttpHandlers/ImageHandler.cs index c45d20b7cc..9496362b90 100644 --- a/MediaBrowser.Api/HttpHandlers/ImageHandler.cs +++ b/MediaBrowser.Api/HttpHandlers/ImageHandler.cs @@ -1,12 +1,12 @@ -using System; -using System.IO; -using System.Linq; -using System.Threading.Tasks; -using MediaBrowser.Common.Logging; +using MediaBrowser.Common.Logging; using MediaBrowser.Common.Net; using MediaBrowser.Common.Net.Handlers; using MediaBrowser.Controller; using MediaBrowser.Model.Entities; +using System; +using System.IO; +using System.Linq; +using System.Threading.Tasks; namespace MediaBrowser.Api.HttpHandlers { @@ -57,8 +57,7 @@ namespace MediaBrowser.Api.HttpHandlers if (!string.IsNullOrEmpty(userId)) { - Guid userIdGuid = new Guid(userId); - return Kernel.Instance.Users.First(u => u.Id == userIdGuid).PrimaryImagePath; + return ApiService.GetUserById(userId, false).PrimaryImagePath; } BaseItem item = ApiService.GetItemById(QueryString["id"]); diff --git a/MediaBrowser.Api/HttpHandlers/ItemHandler.cs b/MediaBrowser.Api/HttpHandlers/ItemHandler.cs index 35310f042b..e6908001de 100644 --- a/MediaBrowser.Api/HttpHandlers/ItemHandler.cs +++ b/MediaBrowser.Api/HttpHandlers/ItemHandler.cs @@ -1,10 +1,7 @@ -using System; -using System.Linq; -using System.Threading.Tasks; -using MediaBrowser.Common.Net.Handlers; -using MediaBrowser.Controller; +using MediaBrowser.Common.Net.Handlers; using MediaBrowser.Model.DTO; using MediaBrowser.Model.Entities; +using System.Threading.Tasks; namespace MediaBrowser.Api.HttpHandlers { @@ -12,8 +9,7 @@ namespace MediaBrowser.Api.HttpHandlers { protected override Task GetObjectToSerialize() { - Guid userId = Guid.Parse(QueryString["userid"]); - User user = Kernel.Instance.Users.First(u => u.Id == userId); + User user = ApiService.GetUserById(QueryString["userid"], true); BaseItem item = ItemToSerialize; diff --git a/MediaBrowser.Api/HttpHandlers/ItemListHandler.cs b/MediaBrowser.Api/HttpHandlers/ItemListHandler.cs index 09814b191d..a792f8b03f 100644 --- a/MediaBrowser.Api/HttpHandlers/ItemListHandler.cs +++ b/MediaBrowser.Api/HttpHandlers/ItemListHandler.cs @@ -1,11 +1,10 @@ -using System; +using MediaBrowser.Common.Net.Handlers; +using MediaBrowser.Model.DTO; +using MediaBrowser.Model.Entities; +using System; using System.Collections.Generic; using System.Linq; using System.Threading.Tasks; -using MediaBrowser.Common.Net.Handlers; -using MediaBrowser.Controller; -using MediaBrowser.Model.DTO; -using MediaBrowser.Model.Entities; namespace MediaBrowser.Api.HttpHandlers { @@ -13,53 +12,48 @@ namespace MediaBrowser.Api.HttpHandlers { protected override Task GetObjectToSerialize() { - User user = Kernel.Instance.Users.First(u => u.Id == UserId); + User user = ApiService.GetUserById(QueryString["userid"], true); - return Task.WhenAll(ItemsToSerialize.Select(i => + return Task.WhenAll(GetItemsToSerialize(user).Select(i => { return ApiService.GetDTOBaseItem(i, user, includeChildren: false, includePeople: false); })); } - protected IEnumerable ItemsToSerialize + private IEnumerable GetItemsToSerialize(User user) { - get + Folder parent = ApiService.GetItemById(ItemId) as Folder; + + if (ListType.Equals("inprogressitems", StringComparison.OrdinalIgnoreCase)) { - Folder parent = ApiService.GetItemById(ItemId) as Folder; - - User user = Kernel.Instance.Users.First(u => u.Id == UserId); - - if (ListType.Equals("inprogressitems", StringComparison.OrdinalIgnoreCase)) - { - return parent.GetInProgressItems(user); - } - else if (ListType.Equals("recentlyaddeditems", StringComparison.OrdinalIgnoreCase)) - { - return parent.GetRecentlyAddedItems(user); - } - else if (ListType.Equals("recentlyaddedunplayeditems", StringComparison.OrdinalIgnoreCase)) - { - return parent.GetRecentlyAddedUnplayedItems(user); - } - else if (ListType.Equals("itemswithgenre", StringComparison.OrdinalIgnoreCase)) - { - return parent.GetItemsWithGenre(QueryString["name"], user); - } - else if (ListType.Equals("itemswithyear", StringComparison.OrdinalIgnoreCase)) - { - return parent.GetItemsWithYear(int.Parse(QueryString["year"]), user); - } - else if (ListType.Equals("itemswithstudio", StringComparison.OrdinalIgnoreCase)) - { - return parent.GetItemsWithStudio(QueryString["name"], user); - } - else if (ListType.Equals("itemswithperson", StringComparison.OrdinalIgnoreCase)) - { - return parent.GetItemsWithPerson(QueryString["name"], null, user); - } - - throw new InvalidOperationException(); + return parent.GetInProgressItems(user); } + else if (ListType.Equals("recentlyaddeditems", StringComparison.OrdinalIgnoreCase)) + { + return parent.GetRecentlyAddedItems(user); + } + else if (ListType.Equals("recentlyaddedunplayeditems", StringComparison.OrdinalIgnoreCase)) + { + return parent.GetRecentlyAddedUnplayedItems(user); + } + else if (ListType.Equals("itemswithgenre", StringComparison.OrdinalIgnoreCase)) + { + return parent.GetItemsWithGenre(QueryString["name"], user); + } + else if (ListType.Equals("itemswithyear", StringComparison.OrdinalIgnoreCase)) + { + return parent.GetItemsWithYear(int.Parse(QueryString["year"]), user); + } + else if (ListType.Equals("itemswithstudio", StringComparison.OrdinalIgnoreCase)) + { + return parent.GetItemsWithStudio(QueryString["name"], user); + } + else if (ListType.Equals("itemswithperson", StringComparison.OrdinalIgnoreCase)) + { + return parent.GetItemsWithPerson(QueryString["name"], null, user); + } + + throw new InvalidOperationException(); } protected string ItemId @@ -70,14 +64,6 @@ namespace MediaBrowser.Api.HttpHandlers } } - protected Guid UserId - { - get - { - return Guid.Parse(QueryString["userid"]); - } - } - private string ListType { get diff --git a/MediaBrowser.Api/HttpHandlers/PersonHandler.cs b/MediaBrowser.Api/HttpHandlers/PersonHandler.cs index 0d496c2406..74373675f7 100644 --- a/MediaBrowser.Api/HttpHandlers/PersonHandler.cs +++ b/MediaBrowser.Api/HttpHandlers/PersonHandler.cs @@ -1,11 +1,9 @@ -using System; -using System.Collections.Generic; -using System.Linq; -using System.Threading.Tasks; -using MediaBrowser.Common.Net.Handlers; +using MediaBrowser.Common.Net.Handlers; using MediaBrowser.Controller; using MediaBrowser.Model.DTO; using MediaBrowser.Model.Entities; +using System.Collections.Generic; +using System.Threading.Tasks; namespace MediaBrowser.Api.HttpHandlers { @@ -17,8 +15,7 @@ namespace MediaBrowser.Api.HttpHandlers protected override Task GetObjectToSerialize() { Folder parent = ApiService.GetItemById(QueryString["id"]) as Folder; - Guid userId = Guid.Parse(QueryString["userid"]); - User user = Kernel.Instance.Users.First(u => u.Id == userId); + User user = ApiService.GetUserById(QueryString["userid"], true); string name = QueryString["name"]; diff --git a/MediaBrowser.Api/HttpHandlers/StudioHandler.cs b/MediaBrowser.Api/HttpHandlers/StudioHandler.cs index 458dd9da13..40cdc23bcc 100644 --- a/MediaBrowser.Api/HttpHandlers/StudioHandler.cs +++ b/MediaBrowser.Api/HttpHandlers/StudioHandler.cs @@ -1,11 +1,11 @@ -using System; -using System.Collections.Generic; -using System.Linq; -using System.Threading.Tasks; -using MediaBrowser.Common.Net.Handlers; +using MediaBrowser.Common.Net.Handlers; using MediaBrowser.Controller; using MediaBrowser.Model.DTO; using MediaBrowser.Model.Entities; +using System; +using System.Collections.Generic; +using System.Linq; +using System.Threading.Tasks; namespace MediaBrowser.Api.HttpHandlers { @@ -17,8 +17,7 @@ namespace MediaBrowser.Api.HttpHandlers protected override Task GetObjectToSerialize() { Folder parent = ApiService.GetItemById(QueryString["id"]) as Folder; - Guid userId = Guid.Parse(QueryString["userid"]); - User user = Kernel.Instance.Users.First(u => u.Id == userId); + User user = ApiService.GetUserById(QueryString["userid"], true); string name = QueryString["name"]; diff --git a/MediaBrowser.Api/HttpHandlers/StudiosHandler.cs b/MediaBrowser.Api/HttpHandlers/StudiosHandler.cs index d9805c43c8..6ccc6aa788 100644 --- a/MediaBrowser.Api/HttpHandlers/StudiosHandler.cs +++ b/MediaBrowser.Api/HttpHandlers/StudiosHandler.cs @@ -1,11 +1,10 @@ -using System; -using System.Collections.Generic; -using System.Linq; -using System.Threading.Tasks; -using MediaBrowser.Common.Net.Handlers; +using MediaBrowser.Common.Net.Handlers; using MediaBrowser.Controller; using MediaBrowser.Model.DTO; using MediaBrowser.Model.Entities; +using System.Collections.Generic; +using System.Linq; +using System.Threading.Tasks; namespace MediaBrowser.Api.HttpHandlers { @@ -14,8 +13,7 @@ namespace MediaBrowser.Api.HttpHandlers protected override Task GetObjectToSerialize() { Folder parent = ApiService.GetItemById(QueryString["id"]) as Folder; - Guid userId = Guid.Parse(QueryString["userid"]); - User user = Kernel.Instance.Users.First(u => u.Id == userId); + User user = ApiService.GetUserById(QueryString["userid"], true); return GetAllStudios(parent, user); } diff --git a/MediaBrowser.Api/HttpHandlers/UserAuthenticationHandler.cs b/MediaBrowser.Api/HttpHandlers/UserAuthenticationHandler.cs index 8f66805301..9f72aa4175 100644 --- a/MediaBrowser.Api/HttpHandlers/UserAuthenticationHandler.cs +++ b/MediaBrowser.Api/HttpHandlers/UserAuthenticationHandler.cs @@ -1,10 +1,7 @@ -using System; -using System.Linq; -using System.Threading.Tasks; -using MediaBrowser.Common.Net.Handlers; +using MediaBrowser.Common.Net.Handlers; using MediaBrowser.Controller; -using MediaBrowser.Model.DTO; using MediaBrowser.Model.Entities; +using System.Threading.Tasks; namespace MediaBrowser.Api.HttpHandlers { @@ -12,15 +9,12 @@ namespace MediaBrowser.Api.HttpHandlers { protected override async Task GetObjectToSerialize() { - Guid userId = Guid.Parse(await GetFormValue("userid").ConfigureAwait(false)); - User user = Kernel.Instance.Users.First(u => u.Id == userId); + string userId = await GetFormValue("userid").ConfigureAwait(false); + User user = ApiService.GetUserById(userId, false); string password = await GetFormValue("password").ConfigureAwait(false); - return new AuthenticationResult() - { - Success = Kernel.GetMD5(password).Equals(user.Password) - }; + return Kernel.Instance.AuthenticateUser(user, password); } } } diff --git a/MediaBrowser.Api/HttpHandlers/UsersHandler.cs b/MediaBrowser.Api/HttpHandlers/UsersHandler.cs index e7617fe881..82bd1f4984 100644 --- a/MediaBrowser.Api/HttpHandlers/UsersHandler.cs +++ b/MediaBrowser.Api/HttpHandlers/UsersHandler.cs @@ -1,9 +1,9 @@ -using System.Collections.Generic; -using System.Linq; -using System.Threading.Tasks; -using MediaBrowser.Common.Net.Handlers; +using MediaBrowser.Common.Net.Handlers; using MediaBrowser.Controller; using MediaBrowser.Model.DTO; +using System.Collections.Generic; +using System.Linq; +using System.Threading.Tasks; namespace MediaBrowser.Api.HttpHandlers { diff --git a/MediaBrowser.Api/HttpHandlers/YearHandler.cs b/MediaBrowser.Api/HttpHandlers/YearHandler.cs index 1b0c7f6704..44e9f5198c 100644 --- a/MediaBrowser.Api/HttpHandlers/YearHandler.cs +++ b/MediaBrowser.Api/HttpHandlers/YearHandler.cs @@ -1,11 +1,9 @@ -using System; -using System.Collections.Generic; -using System.Linq; -using System.Threading.Tasks; -using MediaBrowser.Common.Net.Handlers; +using MediaBrowser.Common.Net.Handlers; using MediaBrowser.Controller; using MediaBrowser.Model.DTO; using MediaBrowser.Model.Entities; +using System.Collections.Generic; +using System.Threading.Tasks; namespace MediaBrowser.Api.HttpHandlers { @@ -17,8 +15,7 @@ namespace MediaBrowser.Api.HttpHandlers protected override Task GetObjectToSerialize() { Folder parent = ApiService.GetItemById(QueryString["id"]) as Folder; - Guid userId = Guid.Parse(QueryString["userid"]); - User user = Kernel.Instance.Users.First(u => u.Id == userId); + User user = ApiService.GetUserById(QueryString["userid"], true); string year = QueryString["year"]; diff --git a/MediaBrowser.Api/HttpHandlers/YearsHandler.cs b/MediaBrowser.Api/HttpHandlers/YearsHandler.cs index 9a7325f649..dffc0328c0 100644 --- a/MediaBrowser.Api/HttpHandlers/YearsHandler.cs +++ b/MediaBrowser.Api/HttpHandlers/YearsHandler.cs @@ -1,11 +1,10 @@ -using System; -using System.Collections.Generic; -using System.Linq; -using System.Threading.Tasks; -using MediaBrowser.Common.Net.Handlers; +using MediaBrowser.Common.Net.Handlers; using MediaBrowser.Controller; using MediaBrowser.Model.DTO; using MediaBrowser.Model.Entities; +using System.Collections.Generic; +using System.Linq; +using System.Threading.Tasks; namespace MediaBrowser.Api.HttpHandlers { @@ -14,8 +13,7 @@ namespace MediaBrowser.Api.HttpHandlers protected override Task GetObjectToSerialize() { Folder parent = ApiService.GetItemById(QueryString["id"]) as Folder; - Guid userId = Guid.Parse(QueryString["userid"]); - User user = Kernel.Instance.Users.First(u => u.Id == userId); + User user = ApiService.GetUserById(QueryString["userid"], true); return GetAllYears(parent, user); } diff --git a/MediaBrowser.ApiInteraction/ApiClient.cs b/MediaBrowser.ApiInteraction/ApiClient.cs index 5de1750959..0315d9dd9a 100644 --- a/MediaBrowser.ApiInteraction/ApiClient.cs +++ b/MediaBrowser.ApiInteraction/ApiClient.cs @@ -1,5 +1,6 @@ using MediaBrowser.Model.Configuration; using MediaBrowser.Model.DTO; +using MediaBrowser.Model.Entities; using MediaBrowser.Model.Weather; using System; using System.IO; @@ -82,12 +83,29 @@ namespace MediaBrowser.ApiInteraction public async Task GetRecentlyAddedItemsAsync(Guid userId) { string url = ApiUrl + "/itemlist?listtype=recentlyaddeditems&userId=" + userId.ToString(); - using (Stream stream = await GetSerializedStreamAsync(url).ConfigureAwait(true)) + + using (Stream stream = await GetSerializedStreamAsync(url).ConfigureAwait(false)) { return DeserializeFromStream(stream); } - } + } + /// + /// Gets recently added items within a specific folder + /// + /// The user id. + public async Task GetRecentlyAddedItemsAsync(Guid userId, Guid folderId) + { + string url = ApiUrl + "/itemlist?listtype=recentlyaddeditems&userId=" + userId.ToString(); + + url += "&id=" + folderId.ToString(); + + using (Stream stream = await GetSerializedStreamAsync(url).ConfigureAwait(false)) + { + return DeserializeFromStream(stream); + } + } + /// /// Gets all Years /// diff --git a/MediaBrowser.Common/Kernel/BaseKernel.cs b/MediaBrowser.Common/Kernel/BaseKernel.cs index 8b865201ba..1139fecb92 100644 --- a/MediaBrowser.Common/Kernel/BaseKernel.cs +++ b/MediaBrowser.Common/Kernel/BaseKernel.cs @@ -1,4 +1,10 @@ -using System; +using MediaBrowser.Common.Logging; +using MediaBrowser.Common.Net; +using MediaBrowser.Common.Plugins; +using MediaBrowser.Common.Serialization; +using MediaBrowser.Model.Configuration; +using MediaBrowser.Model.Progress; +using System; using System.Collections.Generic; using System.ComponentModel.Composition; using System.ComponentModel.Composition.Hosting; @@ -6,12 +12,6 @@ using System.IO; using System.Linq; using System.Reflection; using System.Threading.Tasks; -using MediaBrowser.Common.Logging; -using MediaBrowser.Common.Net; -using MediaBrowser.Common.Plugins; -using MediaBrowser.Common.Serialization; -using MediaBrowser.Model.Configuration; -using MediaBrowser.Model.Progress; namespace MediaBrowser.Common.Kernel { diff --git a/MediaBrowser.Controller/Kernel.cs b/MediaBrowser.Controller/Kernel.cs index 6f9d636bb2..b45e3ab9a5 100644 --- a/MediaBrowser.Controller/Kernel.cs +++ b/MediaBrowser.Controller/Kernel.cs @@ -1,13 +1,4 @@ -using System; -using System.Collections.Generic; -using System.ComponentModel.Composition; -using System.IO; -using System.Linq; -using System.Reflection; -using System.Security.Cryptography; -using System.Text; -using System.Threading.Tasks; -using MediaBrowser.Common.Kernel; +using MediaBrowser.Common.Kernel; using MediaBrowser.Common.Logging; using MediaBrowser.Controller.IO; using MediaBrowser.Controller.Library; @@ -17,6 +8,15 @@ using MediaBrowser.Controller.Weather; using MediaBrowser.Model.Configuration; using MediaBrowser.Model.Entities; using MediaBrowser.Model.Progress; +using System; +using System.Collections.Generic; +using System.ComponentModel.Composition; +using System.IO; +using System.Linq; +using System.Reflection; +using System.Security.Cryptography; +using System.Text; +using System.Threading.Tasks; namespace MediaBrowser.Controller { @@ -181,6 +181,55 @@ namespace MediaBrowser.Controller } } + /// + /// Gets the default user to use when EnableUserProfiles is false + /// + public User GetDefaultUser() + { + User user = Users.FirstOrDefault(); + + return user; + } + + /// + /// Persists a User + /// + public void SaveUser(User user) + { + + } + + /// + /// Authenticates a User and returns a result indicating whether or not it succeeded + /// + public AuthenticationResult AuthenticateUser(User user, string password) + { + AuthenticationResult result = new AuthenticationResult(); + + // When EnableUserProfiles is false, only the default User can login + if (!Configuration.EnableUserProfiles) + { + result.Success = user.Id == GetDefaultUser().Id; + } + else if (string.IsNullOrEmpty(user.Password)) + { + result.Success = true; + } + else + { + result.Success = GetMD5(password).Equals(user.Password); + + // Update LastActivityDate and LastLoginDate, then save + if (result.Success) + { + user.LastActivityDate = user.LastLoginDate = DateTime.UtcNow; + SaveUser(user); + } + } + + return result; + } + public async Task ReloadItem(BaseItem item) { Folder folder = item as Folder; @@ -236,7 +285,6 @@ namespace MediaBrowser.Controller user.Name = "Default User"; user.Id = Guid.Parse("5d1cf7fce25943b790d140095457a42b"); - user.PrimaryImagePath = @"g:\Mel.jpg"; list.Add(user); user = new User(); @@ -245,19 +293,16 @@ namespace MediaBrowser.Controller user.LastLoginDate = DateTime.UtcNow.AddDays(-1); user.LastActivityDate = DateTime.UtcNow.AddHours(-3); user.Password = GetMD5("1234").ToString(); - user.PrimaryImagePath = @"g:\abobader.jpg"; list.Add(user); user = new User(); user.Name = "Scottisafool"; user.Id = Guid.NewGuid(); - user.PrimaryImagePath = @"g:\Scott.jpg"; list.Add(user); user = new User(); user.Name = "Redshirt"; user.Id = Guid.NewGuid(); - user.PrimaryImagePath = @"g:\redshirt.png"; list.Add(user); /*user = new User(); diff --git a/MediaBrowser.Model/DTO/AuthenticationResult.cs b/MediaBrowser.Model/Entities/AuthenticationResult.cs similarity index 64% rename from MediaBrowser.Model/DTO/AuthenticationResult.cs rename to MediaBrowser.Model/Entities/AuthenticationResult.cs index ce492b60ef..312e71f388 100644 --- a/MediaBrowser.Model/DTO/AuthenticationResult.cs +++ b/MediaBrowser.Model/Entities/AuthenticationResult.cs @@ -1,7 +1,6 @@ -using System; -using ProtoBuf; +using ProtoBuf; -namespace MediaBrowser.Model.DTO +namespace MediaBrowser.Model.Entities { [ProtoContract] public class AuthenticationResult diff --git a/MediaBrowser.Model/MediaBrowser.Model.csproj b/MediaBrowser.Model/MediaBrowser.Model.csproj index da6fac5387..fc9c901be7 100644 --- a/MediaBrowser.Model/MediaBrowser.Model.csproj +++ b/MediaBrowser.Model/MediaBrowser.Model.csproj @@ -35,7 +35,7 @@ - +