Fixed another EF client side execution bug

pull/3528/head
tidusjar 4 years ago
parent 01217cfe70
commit 1107c4a366

@ -24,7 +24,8 @@ namespace Ombi.Core.Rule.Rules.Request
public async Task<RuleResult> Execute(BaseRequest obj) public async Task<RuleResult> Execute(BaseRequest obj)
{ {
var user = await _manager.Users.FirstOrDefaultAsync(x => x.UserName.Equals(User.Identity.Name, StringComparison.InvariantCultureIgnoreCase)); var username = User.Identity.Name.ToUpper();
var user = await _manager.Users.FirstOrDefaultAsync(x => x.NormalizedUserName == username);
if (await _manager.IsInRoleAsync(user, OmbiRoles.Admin) || user.IsSystemUser) if (await _manager.IsInRoleAsync(user, OmbiRoles.Admin) || user.IsSystemUser)
{ {
obj.Approved = true; obj.Approved = true;

@ -25,7 +25,9 @@ namespace Ombi.Core.Rule.Rules.Request
public async Task<RuleResult> Execute(BaseRequest obj) public async Task<RuleResult> Execute(BaseRequest obj)
{ {
var user = await _manager.Users.FirstOrDefaultAsync(x => x.UserName.Equals(User.Identity.Name, StringComparison.InvariantCultureIgnoreCase));
var username = User.Identity.Name.ToUpper();
var user = await _manager.Users.FirstOrDefaultAsync(x => x.NormalizedUserName == username);
if (await _manager.IsInRoleAsync(user, OmbiRoles.Admin) || user.IsSystemUser) if (await _manager.IsInRoleAsync(user, OmbiRoles.Admin) || user.IsSystemUser)
return Success(); return Success();

@ -61,7 +61,7 @@ namespace Ombi.Store.Context
using (var tran = Database.BeginTransaction()) using (var tran = Database.BeginTransaction())
{ {
// Make sure we have the API User // 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) if (!apiUserExists)
{ {
Users.Add(new OmbiUser Users.Add(new OmbiUser

@ -280,7 +280,8 @@ namespace Ombi.Controllers.V1
[Authorize] [Authorize]
public async Task<UserViewModel> GetCurrentUser() public async Task<UserViewModel> 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); return await GetUserWithRoles(user);
} }
@ -875,7 +876,9 @@ namespace Ombi.Controllers.V1
[ApiExplorerSettings(IgnoreApi = true)] [ApiExplorerSettings(IgnoreApi = true)]
public async Task<string> GetUserAccessToken() public async Task<string> 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) if (user == null)
{ {
return Guid.Empty.ToString("N"); return Guid.Empty.ToString("N");
@ -897,7 +900,8 @@ namespace Ombi.Controllers.V1
[HttpGet("notificationpreferences")] [HttpGet("notificationpreferences")]
public async Task<List<UserNotificationPreferences>> GetUserPreferences() public async Task<List<UserNotificationPreferences>> 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); return await GetPreferences(user);
} }
@ -950,7 +954,9 @@ namespace Ombi.Controllers.V1
return NotFound(); return NotFound();
} }
// Check if we are editing a different user than ourself, if we are then we need to power user role // 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)) if (!me.Id.Equals(user.Id, StringComparison.InvariantCultureIgnoreCase))
{ {
var isPowerUser = await UserManager.IsInRoleAsync(me, OmbiRoles.PowerUser); var isPowerUser = await UserManager.IsInRoleAsync(me, OmbiRoles.PowerUser);

@ -130,7 +130,9 @@ namespace Ombi.Controllers.V1
public async Task<int> CreateIssue([FromBody]Issues i) public async Task<int> CreateIssue([FromBody]Issues i)
{ {
i.IssueCategory = null; 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); await _issues.Add(i);
var category = await _categories.GetAll().FirstOrDefaultAsync(x => i.IssueCategoryId == x.Id); var category = await _categories.GetAll().FirstOrDefaultAsync(x => i.IssueCategoryId == x.Id);
if (category != null) if (category != null)

@ -40,7 +40,8 @@ namespace Ombi.Controllers.V1
{ {
if (body?.PlayerId.HasValue() ?? false) 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 // Check if we already have this notification id
var alreadyExists = await _notification.GetAll().AnyAsync(x => x.PlayerId == body.PlayerId && x.UserId == user.Id); var alreadyExists = await _notification.GetAll().AnyAsync(x => x.PlayerId == body.PlayerId && x.UserId == user.Id);

@ -36,7 +36,9 @@ namespace Ombi.Controllers.V2
{ {
if (!string.IsNullOrEmpty(body?.Token)) 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 // Check if we already have this notification id
var alreadyExists = await _mobileDevices.GetAll().AnyAsync(x => x.Token == body.Token && x.UserId == user.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<IActionResult> RemoveNotifications() public async Task<IActionResult> 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 // Check if we already have this notification id
var currentDevices = await _mobileDevices.GetAll().Where(x => x.UserId == user.Id).ToListAsync(); var currentDevices = await _mobileDevices.GetAll().Where(x => x.UserId == user.Id).ToListAsync();

@ -102,10 +102,16 @@ namespace Ombi
if (username.IsNullOrEmpty()) if (username.IsNullOrEmpty())
{ {
UseApiUser(context); UseApiUser(context);
}
else
{
username = username.ToUpper();
} }
var um = context.RequestServices.GetService<OmbiUserManager>(); var um = context.RequestServices.GetService<OmbiUserManager>();
var user = await um.Users.FirstOrDefaultAsync(x => var user = await um.Users.FirstOrDefaultAsync(x =>
x.UserName.Equals(username, StringComparison.InvariantCultureIgnoreCase)); x.NormalizedUserName == username);
if (user == null) if (user == null)
{ {
context.Response.StatusCode = (int)HttpStatusCode.Unauthorized; context.Response.StatusCode = (int)HttpStatusCode.Unauthorized;

Loading…
Cancel
Save