diff options
| author | LukePulverenti Luke Pulverenti luke pulverenti <LukePulverenti Luke Pulverenti luke.pulverenti@gmail.com> | 2012-09-07 12:17:39 -0400 |
|---|---|---|
| committer | LukePulverenti Luke Pulverenti luke pulverenti <LukePulverenti Luke Pulverenti luke.pulverenti@gmail.com> | 2012-09-07 12:17:39 -0400 |
| commit | 8fc828361e6e6019bc833ffba1d5ef8fc8605ac9 (patch) | |
| tree | f06929b9d9ee013a3fb49b2f53abd7a9f7e4b7bc | |
| parent | 31c710ca34e91a21356a19a6c1f3f6f5f3a2011f (diff) | |
Updated authentication
19 files changed, 262 insertions, 165 deletions
diff --git a/MediaBrowser.Api/ApiService.cs b/MediaBrowser.Api/ApiService.cs index ca76d5c5c..ab12a350f 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 /// </summary>
public static class ApiService
{
+ /// <summary>
+ /// Gets an Item by Id, or the root item if none is supplied
+ /// </summary>
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);
}
+ /// <summary>
+ /// Gets a User by Id
+ /// </summary>
+ /// <param name="logActivity">Whether or not to update the user's LastActivityDate</param>
+ 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;
+ }
+
+ /// <summary>
+ /// Gets the default User
+ /// </summary>
+ /// <param name="logActivity">Whether or not to update the user's LastActivityDate</param>
+ public static User GetDefaultUser(bool logActivity)
+ {
+ User user = Kernel.Instance.GetDefaultUser();
+
+ if (logActivity)
+ {
+ LogUserActivity(user);
+ }
+
+ return user;
+ }
+
+ /// <summary>
+ /// Updates LastActivityDate for a given User
+ /// </summary>
+ public static void LogUserActivity(User user)
+ {
+ user.LastActivityDate = DateTime.UtcNow;
+ Kernel.Instance.SaveUser(user);
+ }
+
+ /// <summary>
+ /// Converts a BaseItem to a DTOBaseItem
+ /// </summary>
public async static Task<DTOBaseItem> GetDTOBaseItem(BaseItem item, User user,
bool includeChildren = true,
bool includePeople = true)
@@ -52,6 +101,9 @@ namespace MediaBrowser.Api return dto;
}
+ /// <summary>
+ /// Sets simple property values on a DTOBaseItem
+ /// </summary>
private static void AttachBasicFields(DTOBaseItem dto, BaseItem item, User user)
{
dto.AspectRatio = item.AspectRatio;
@@ -168,6 +220,9 @@ namespace MediaBrowser.Api }
}
+ /// <summary>
+ /// Attaches Studio DTO's to a DTOBaseItem
+ /// </summary>
private static async Task AttachStudios(DTOBaseItem dto, BaseItem item)
{
// Attach Studios by transforming them into BaseItemStudio (DTO)
@@ -191,6 +246,9 @@ namespace MediaBrowser.Api }
}
+ /// <summary>
+ /// Attaches child DTO's to a DTOBaseItem
+ /// </summary>
private static async Task AttachChildren(DTOBaseItem dto, BaseItem item, User user)
{
var folder = item as Folder;
@@ -203,6 +261,9 @@ namespace MediaBrowser.Api }
}
+ /// <summary>
+ /// Attaches trailer DTO's to a DTOBaseItem
+ /// </summary>
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 }
}
+ /// <summary>
+ /// Attaches People DTO's to a DTOBaseItem
+ /// </summary>
private static async Task AttachPeople(DTOBaseItem dto, BaseItem item)
{
// Attach People by transforming them into BaseItemPerson (DTO)
@@ -238,6 +302,9 @@ namespace MediaBrowser.Api }
}
+ /// <summary>
+ /// If an item does not any backdrops, this can be used to find the first parent that does have one
+ /// </summary>
private static Guid? GetParentBackdropItemId(BaseItem item, out int backdropCount)
{
backdropCount = 0;
@@ -258,6 +325,9 @@ namespace MediaBrowser.Api return null;
}
+ /// <summary>
+ /// If an item does not have a logo, this can be used to find the first parent that does have one
+ /// </summary>
private static Guid? GetParentLogoItemId(BaseItem item)
{
var parent = item.Parent;
@@ -275,6 +345,9 @@ namespace MediaBrowser.Api return null;
}
+ /// <summary>
+ /// Gets an ImagesByName entity along with the number of items containing it
+ /// </summary>
public static IBNItem GetIBNItem(BaseEntity entity, int itemCount)
{
return new IBNItem()
@@ -286,6 +359,9 @@ namespace MediaBrowser.Api };
}
+ /// <summary>
+ /// Converts a User to a DTOUser
+ /// </summary>
public static DTOUser GetDTOUser(User user)
{
return new DTOUser()
diff --git a/MediaBrowser.Api/HttpHandlers/DefaultUserHandler.cs b/MediaBrowser.Api/HttpHandlers/DefaultUserHandler.cs index 0fb739b7d..56a05dab8 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<DTOUser> 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 eeadf1e45..dffae49d7 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<IBNItem> 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 9be2efa17..073411b88 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<IBNItem[]> 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 c45d20b7c..9496362b9 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 35310f042..e6908001d 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<DTOBaseItem> 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 09814b191..a792f8b03 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,68 +12,55 @@ namespace MediaBrowser.Api.HttpHandlers {
protected override Task<DTOBaseItem[]> GetObjectToSerialize()
{
- User user = Kernel.Instance.Users.First(u => u.Id == UserId);
+ User user = ApiService.GetUserById(QueryString["userid"], true);
- return Task.WhenAll<DTOBaseItem>(ItemsToSerialize.Select(i =>
+ return Task.WhenAll<DTOBaseItem>(GetItemsToSerialize(user).Select(i =>
{
return ApiService.GetDTOBaseItem(i, user, includeChildren: false, includePeople: false);
}));
}
- protected IEnumerable<BaseItem> ItemsToSerialize
+ private IEnumerable<BaseItem> GetItemsToSerialize(User user)
{
- get
- {
- Folder parent = ApiService.GetItemById(ItemId) as Folder;
-
- User user = Kernel.Instance.Users.First(u => u.Id == UserId);
+ Folder parent = ApiService.GetItemById(ItemId) as Folder;
- 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();
+ if (ListType.Equals("inprogressitems", StringComparison.OrdinalIgnoreCase))
+ {
+ return parent.GetInProgressItems(user);
}
- }
-
- protected string ItemId
- {
- get
+ else if (ListType.Equals("recentlyaddeditems", StringComparison.OrdinalIgnoreCase))
{
- return QueryString["id"];
+ 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 Guid UserId
+ protected string ItemId
{
get
{
- return Guid.Parse(QueryString["userid"]);
+ return QueryString["id"];
}
}
diff --git a/MediaBrowser.Api/HttpHandlers/PersonHandler.cs b/MediaBrowser.Api/HttpHandlers/PersonHandler.cs index 0d496c240..74373675f 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<IBNItem> 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 458dd9da1..40cdc23bc 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<IBNItem> 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 d9805c43c..6ccc6aa78 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<IBNItem[]> 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 8f6680530..9f72aa417 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<AuthenticationResult> 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 e7617fe88..82bd1f498 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 1b0c7f670..44e9f5198 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<IBNItem> 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 9a7325f64..dffc0328c 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<IBNItem[]> 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 5de175095..0315d9dd9 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,13 +83,30 @@ namespace MediaBrowser.ApiInteraction public async Task<DTOBaseItem[]> 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<DTOBaseItem[]>(stream);
}
- }
+ }
/// <summary>
+ /// Gets recently added items within a specific folder
+ /// </summary>
+ /// <param name="userId">The user id.</param>
+ public async Task<DTOBaseItem[]> 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<DTOBaseItem[]>(stream);
+ }
+ }
+
+ /// <summary>
/// Gets all Years
/// </summary>
public async Task<IBNItem[]> GetAllYearsAsync(Guid userId)
diff --git a/MediaBrowser.Common/Kernel/BaseKernel.cs b/MediaBrowser.Common/Kernel/BaseKernel.cs index 8b865201b..1139fecb9 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 6f9d636bb..b45e3ab9a 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 }
}
+ /// <summary>
+ /// Gets the default user to use when EnableUserProfiles is false
+ /// </summary>
+ public User GetDefaultUser()
+ {
+ User user = Users.FirstOrDefault();
+
+ return user;
+ }
+
+ /// <summary>
+ /// Persists a User
+ /// </summary>
+ public void SaveUser(User user)
+ {
+
+ }
+
+ /// <summary>
+ /// Authenticates a User and returns a result indicating whether or not it succeeded
+ /// </summary>
+ 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 index ce492b60e..312e71f38 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 da6fac538..fc9c901be 100644 --- a/MediaBrowser.Model/MediaBrowser.Model.csproj +++ b/MediaBrowser.Model/MediaBrowser.Model.csproj @@ -35,7 +35,7 @@ <Compile Include="Configuration\BaseApplicationConfiguration.cs" />
<Compile Include="Configuration\ServerConfiguration.cs" />
<Compile Include="DTO\AudioInfo.cs" />
- <Compile Include="DTO\AuthenticationResult.cs" />
+ <Compile Include="Entities\AuthenticationResult.cs" />
<Compile Include="DTO\DTOBaseItem.cs" />
<Compile Include="DTO\DTOUser.cs" />
<Compile Include="DTO\VideoInfo.cs" />
|
