diff --git a/ci-build.yaml b/ci-build.yaml
index 066b15016..06fffb8ad 100644
--- a/ci-build.yaml
+++ b/ci-build.yaml
@@ -19,7 +19,7 @@ variables:
testProj: '**/*.Tests.csproj'
csProj: '**/*.csproj'
buildConfiguration: 'Release'
- publishLocation: '$(Build.SourcesDirectory)/src/Ombi/bin/Release/netcoreapp3.0'
+ publishLocation: '$(Build.SourcesDirectory)/src/Ombi/bin/Release/netcoreapp3.1'
buildVersion: '4.0.$(Build.BuildId)'
gitTag: 'v$(buildVersion)'
uiLocation: '$(Build.SourcesDirectory)/src/Ombi/ClientApp/'
diff --git a/src/Ombi.Notifications.Templates/EmailBasicTemplate.cs b/src/Ombi.Notifications.Templates/EmailBasicTemplate.cs
index fc80de193..b8d76e10d 100644
--- a/src/Ombi.Notifications.Templates/EmailBasicTemplate.cs
+++ b/src/Ombi.Notifications.Templates/EmailBasicTemplate.cs
@@ -13,7 +13,7 @@ namespace Ombi.Notifications.Templates
if (string.IsNullOrEmpty(_templateLocation))
{
#if DEBUG
- _templateLocation = Path.Combine(Directory.GetCurrentDirectory(), "bin", "Debug", "netcoreapp2.2", "Templates",
+ _templateLocation = Path.Combine(Directory.GetCurrentDirectory(), "bin", "Debug", "netcoreapp3.1", "Templates",
"BasicTemplate.html");
#else
_templateLocation = Path.Combine(Directory.GetCurrentDirectory(), "Templates","BasicTemplate.html");
diff --git a/src/Ombi.Store/Context/OmbiContext.cs b/src/Ombi.Store/Context/OmbiContext.cs
index bd4b383da..a8beecc68 100644
--- a/src/Ombi.Store/Context/OmbiContext.cs
+++ b/src/Ombi.Store/Context/OmbiContext.cs
@@ -61,7 +61,7 @@ namespace Ombi.Store.Context
using (var tran = Database.BeginTransaction())
{
// Make sure we have the API User
- var apiUserExists = Users.ToList().Any(x => x.UserName.Equals("Api", StringComparison.CurrentCultureIgnoreCase));
+ var apiUserExists = Users.ToList().Any(x => x.NormalizedUserName == "API");
if (!apiUserExists)
{
Users.Add(new OmbiUser
diff --git a/src/Ombi.sln b/src/Ombi.sln
index f7e267c60..43abdea44 100644
--- a/src/Ombi.sln
+++ b/src/Ombi.sln
@@ -10,6 +10,7 @@ Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Solution Items", "Solution
..\appveyor.yml = ..\appveyor.yml
..\build.cake = ..\build.cake
..\CHANGELOG.md = ..\CHANGELOG.md
+ ..\ci-build.yaml = ..\ci-build.yaml
EndProjectSection
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Ombi.Core", "Ombi.Core\Ombi.Core.csproj", "{F56E79C7-791D-4668-A0EC-29E3BBC8D24B}"
@@ -116,7 +117,7 @@ Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Ombi.HealthChecks", "Ombi.H
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Ombi.Api.Webhook", "Ombi.Api.Webhook\Ombi.Api.Webhook.csproj", "{E2186FDA-D827-4781-8663-130AC382F12C}"
EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Ombi.Api.CloudService", "Ombi.Api.CloudService\Ombi.Api.CloudService.csproj", "{5DE40A66-B369-469E-8626-ECE23D9D8034}"
+Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Ombi.Api.CloudService", "Ombi.Api.CloudService\Ombi.Api.CloudService.csproj", "{5DE40A66-B369-469E-8626-ECE23D9D8034}"
EndProject
Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution
diff --git a/src/Ombi/ClientApp/src/app/discover/components/card/discover-card-details.component.html b/src/Ombi/ClientApp/src/app/discover/components/card/discover-card-details.component.html
index 63dee260c..1a67b243e 100644
--- a/src/Ombi/ClientApp/src/app/discover/components/card/discover-card-details.component.html
+++ b/src/Ombi/ClientApp/src/app/discover/components/card/discover-card-details.component.html
@@ -96,7 +96,7 @@
-
+
{{data.overview}}
@@ -119,11 +119,11 @@
{{ 'Common.Requested' | translate }}
-
+
@@ -138,10 +138,11 @@
-
-
+
+
-
+
- {{result.title}}
- 13" matTooltip="{{result.title}}">{{result.title | truncate:13}}
+ {{result.title}}
+ 20" matTooltip="{{result.title}}">{{result.title | truncate:20}}
- {{result.overview | truncate: 50}}
+ {{result.overview | truncate: 75}}
-
-
-
\ No newline at end of file
diff --git a/src/Ombi/ClientApp/src/app/discover/components/discover/discover.component.html b/src/Ombi/ClientApp/src/app/discover/components/discover/discover.component.html
index d76c0719e..4593bffe6 100644
--- a/src/Ombi/ClientApp/src/app/discover/components/discover/discover.component.html
+++ b/src/Ombi/ClientApp/src/app/discover/components/discover/discover.component.html
@@ -16,8 +16,8 @@
-
-
+
diff --git a/src/Ombi/Controllers/V1/IdentityController.cs b/src/Ombi/Controllers/V1/IdentityController.cs
index 6e9ee2e72..550d90332 100644
--- a/src/Ombi/Controllers/V1/IdentityController.cs
+++ b/src/Ombi/Controllers/V1/IdentityController.cs
@@ -135,7 +135,7 @@ namespace Ombi.Controllers.V1
public async Task
CreateWizardUser([FromBody] CreateUserWizardModel user)
{
var users = UserManager.Users;
- if (users.Any(x => !x.UserName.Equals("api", StringComparison.InvariantCultureIgnoreCase)))
+ if (users.Any(x => x.NormalizedUserName != "API"))
{
// No one should be calling this. Only the wizard
return new SaveWizardResult { Result = false, Errors = new List { "Looks like there is an existing user!" } };
@@ -280,7 +280,8 @@ namespace Ombi.Controllers.V1
[Authorize]
public async Task GetCurrentUser()
{
- var user = await UserManager.Users.FirstOrDefaultAsync(x => x.UserName.Equals(User.Identity.Name, StringComparison.InvariantCultureIgnoreCase));
+ var username = User.Identity.Name.ToUpper();
+ var user = await UserManager.Users.FirstOrDefaultAsync(x => x.NormalizedUserName == username);
return await GetUserWithRoles(user);
}
@@ -875,7 +876,9 @@ namespace Ombi.Controllers.V1
[ApiExplorerSettings(IgnoreApi = true)]
public async Task GetUserAccessToken()
{
- var user = await UserManager.Users.FirstOrDefaultAsync(x => x.UserName.Equals(User.Identity.Name, StringComparison.InvariantCultureIgnoreCase));
+
+ var username = User.Identity.Name.ToUpper();
+ var user = await UserManager.Users.FirstOrDefaultAsync(x => x.NormalizedUserName == username);
if (user == null)
{
return Guid.Empty.ToString("N");
@@ -897,7 +900,8 @@ namespace Ombi.Controllers.V1
[HttpGet("notificationpreferences")]
public async Task> GetUserPreferences()
{
- var user = await UserManager.Users.FirstOrDefaultAsync(x => x.UserName.Equals(User.Identity.Name, StringComparison.InvariantCultureIgnoreCase));
+ var username = User.Identity.Name.ToUpper();
+ var user = await UserManager.Users.FirstOrDefaultAsync(x => x.NormalizedUserName == username);
return await GetPreferences(user);
}
@@ -950,7 +954,9 @@ namespace Ombi.Controllers.V1
return NotFound();
}
// Check if we are editing a different user than ourself, if we are then we need to power user role
- var me = await UserManager.Users.FirstOrDefaultAsync(x => x.UserName.Equals(User.Identity.Name, StringComparison.InvariantCultureIgnoreCase));
+
+ var username = User.Identity.Name.ToUpper();
+ var me = await UserManager.Users.FirstOrDefaultAsync(x => x.NormalizedUserName == username);
if (!me.Id.Equals(user.Id, StringComparison.InvariantCultureIgnoreCase))
{
var isPowerUser = await UserManager.IsInRoleAsync(me, OmbiRoles.PowerUser);
diff --git a/src/Ombi/Controllers/V1/IssuesController.cs b/src/Ombi/Controllers/V1/IssuesController.cs
index 49b4fe8d1..e65f19fe3 100644
--- a/src/Ombi/Controllers/V1/IssuesController.cs
+++ b/src/Ombi/Controllers/V1/IssuesController.cs
@@ -130,7 +130,9 @@ namespace Ombi.Controllers.V1
public async Task CreateIssue([FromBody]Issues i)
{
i.IssueCategory = null;
- i.UserReportedId = (await _userManager.Users.FirstOrDefaultAsync(x => x.UserName.Equals(User.Identity.Name, StringComparison.InvariantCultureIgnoreCase))).Id;
+
+ var username = User.Identity.Name.ToUpper();
+ i.UserReportedId = (await _userManager.Users.FirstOrDefaultAsync(x => x.NormalizedUserName == username)).Id;
await _issues.Add(i);
var category = await _categories.GetAll().FirstOrDefaultAsync(x => i.IssueCategoryId == x.Id);
if (category != null)
diff --git a/src/Ombi/Controllers/V1/MobileController.cs b/src/Ombi/Controllers/V1/MobileController.cs
index a2b1f05e3..2bae31c9d 100644
--- a/src/Ombi/Controllers/V1/MobileController.cs
+++ b/src/Ombi/Controllers/V1/MobileController.cs
@@ -40,7 +40,8 @@ namespace Ombi.Controllers.V1
{
if (body?.PlayerId.HasValue() ?? false)
{
- var user = await _userManager.Users.FirstOrDefaultAsync(x => x.UserName.Equals(User.Identity.Name, StringComparison.InvariantCultureIgnoreCase));
+ var username = User.Identity.Name.ToUpper();
+ var user = await _userManager.Users.FirstOrDefaultAsync(x => x.NormalizedUserName == username);
// Check if we already have this notification id
var alreadyExists = await _notification.GetAll().AnyAsync(x => x.PlayerId == body.PlayerId && x.UserId == user.Id);
diff --git a/src/Ombi/Controllers/V2/MobileController.cs b/src/Ombi/Controllers/V2/MobileController.cs
index f6185e18e..9ee33e857 100644
--- a/src/Ombi/Controllers/V2/MobileController.cs
+++ b/src/Ombi/Controllers/V2/MobileController.cs
@@ -36,7 +36,9 @@ namespace Ombi.Controllers.V2
{
if (!string.IsNullOrEmpty(body?.Token))
{
- var user = await _userManager.Users.FirstOrDefaultAsync(x => x.UserName.Equals(User.Identity.Name, StringComparison.InvariantCultureIgnoreCase));
+
+ var username = User.Identity.Name.ToUpper();
+ var user = await _userManager.Users.FirstOrDefaultAsync(x => x.NormalizedUserName == username);
// Check if we already have this notification id
var alreadyExists = await _mobileDevices.GetAll().AnyAsync(x => x.Token == body.Token && x.UserId == user.Id);
@@ -64,7 +66,8 @@ namespace Ombi.Controllers.V2
public async Task RemoveNotifications()
{
- var user = await _userManager.Users.FirstOrDefaultAsync(x => x.UserName.Equals(User.Identity.Name, StringComparison.InvariantCultureIgnoreCase));
+ var username = User.Identity.Name.ToUpper();
+ var user = await _userManager.Users.FirstOrDefaultAsync(x => x.NormalizedUserName == username);
// Check if we already have this notification id
var currentDevices = await _mobileDevices.GetAll().Where(x => x.UserId == user.Id).ToListAsync();
diff --git a/src/Ombi/Middleware/ApiKeyMiddlewear.cs b/src/Ombi/Middleware/ApiKeyMiddlewear.cs
index e8fa02d78..0efe5b860 100644
--- a/src/Ombi/Middleware/ApiKeyMiddlewear.cs
+++ b/src/Ombi/Middleware/ApiKeyMiddlewear.cs
@@ -102,10 +102,16 @@ namespace Ombi
if (username.IsNullOrEmpty())
{
UseApiUser(context);
+ }
+ else
+ {
+ username = username.ToUpper();
}
+
var um = context.RequestServices.GetService();
+
var user = await um.Users.FirstOrDefaultAsync(x =>
- x.UserName.Equals(username, StringComparison.InvariantCultureIgnoreCase));
+ x.NormalizedUserName == username);
if (user == null)
{
context.Response.StatusCode = (int)HttpStatusCode.Unauthorized;
diff --git a/src/Ombi/Ombi.csproj b/src/Ombi/Ombi.csproj
index ea748694f..f64a9834f 100644
--- a/src/Ombi/Ombi.csproj
+++ b/src/Ombi/Ombi.csproj
@@ -4,6 +4,8 @@
win10-x64;win10-x86;osx-x64;linux-x64;linux-arm;linux-arm64;
false
Latest
+
$(SemVer)
$(SemVer)
$(FullVer)