Skip to content

Commit ac3b023

Browse files
committed
fix: refactor
1 parent d94809f commit ac3b023

File tree

3 files changed

+29
-22
lines changed

3 files changed

+29
-22
lines changed

src/VirtoCommerce.Platform.Security/Services/BaseUserSignInValidator.cs

+6-12
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,5 @@
11
using System.Collections.Generic;
22
using System.Threading.Tasks;
3-
using VirtoCommerce.Platform.Core.Security;
43
using VirtoCommerce.Platform.Security.Model;
54

65
namespace VirtoCommerce.Platform.Security.Services
@@ -9,10 +8,15 @@ public class BaseUserSignInValidator : IUserSignInValidator
98
{
109
public int Priority { get; set; }
1110

12-
public Task<IList<TokenLoginResponse>> ValidateUserAsync(ApplicationUser user, IDictionary<string, object> context)
11+
public Task<IList<TokenLoginResponse>> ValidateUserAsync(SignInValidatorContext context)
1312
{
1413
var result = new List<TokenLoginResponse>();
1514

15+
if (!context.IsSucceeded)
16+
{
17+
result.Add(SecurityErrorDescriber.LoginFailed());
18+
}
19+
1620
//if (!signInResult.Succeeded)
1721
//{
1822
// var detailedErrors = GetDetailedErrors(context);
@@ -36,15 +40,5 @@ public Task<IList<TokenLoginResponse>> ValidateUserAsync(ApplicationUser user, I
3640

3741
return Task.FromResult<IList<TokenLoginResponse>>(result);
3842
}
39-
40-
private static bool GetDetailedErrors(IDictionary<string, object> context)
41-
{
42-
var detailedErrors = false;
43-
if (context.TryGetValue("detailedErrors", out var detailedErrorsValue))
44-
{
45-
detailedErrors = (bool)detailedErrorsValue;
46-
}
47-
return detailedErrors;
48-
}
4943
}
5044
}
Original file line numberDiff line numberDiff line change
@@ -1,14 +1,30 @@
1+
using System;
12
using System.Collections.Generic;
23
using System.Threading.Tasks;
34
using VirtoCommerce.Platform.Core.Security;
45
using VirtoCommerce.Platform.Security.Model;
56

67
namespace VirtoCommerce.Platform.Security.Services
78
{
9+
public class SignInValidatorContext
10+
{
11+
public ApplicationUser User { get; set; }
12+
13+
public string StoreId { get; set; }
14+
15+
public bool DetailedErrors { get; set; }
16+
17+
public bool IsSucceeded { get; set; }
18+
19+
public bool IsLockedOut { get; set; }
20+
21+
public IDictionary<string, object> AdditionalParameters { get; set; } = new Dictionary<string, object>(StringComparer.OrdinalIgnoreCase);
22+
}
23+
824
public interface IUserSignInValidator
925
{
1026
public int Priority { get; set; }
1127

12-
Task<IList<TokenLoginResponse>> ValidateUserAsync(ApplicationUser user, IDictionary<string, object> context);
28+
Task<IList<TokenLoginResponse>> ValidateUserAsync(SignInValidatorContext context);
1329
}
1430
}

src/VirtoCommerce.Platform.Web/Controllers/Api/AuthorizationController.cs

+6-9
Original file line numberDiff line numberDiff line change
@@ -105,20 +105,17 @@ public async Task<ActionResult> Exchange()
105105
return BadRequest(SecurityErrorDescriber.LoginFailed());
106106
}
107107

108-
var context = new Dictionary<string, object>(StringComparer.OrdinalIgnoreCase)
108+
var context = new SignInValidatorContext
109109
{
110-
{ "detailedErrors", _passwordLoginOptions.DetailedErrors },
110+
User = user,
111+
DetailedErrors = _passwordLoginOptions.DetailedErrors,
112+
IsSucceeded = result.Succeeded,
113+
IsLockedOut = result.IsLockedOut,
111114
};
112115

113-
var storeId = openIdConnectRequest.GetParameter("storeId");
114-
if (storeId != null)
115-
{
116-
context.Add("storeId", storeId.Value);
117-
}
118-
119116
foreach (var loginValidation in _userSignInValidators.OrderByDescending(x => x.Priority).ThenBy(x => x.GetType().Name).ToList())
120117
{
121-
var validationErrors = await loginValidation.ValidateUserAsync(user, context);
118+
var validationErrors = await loginValidation.ValidateUserAsync(context);
122119
var error = validationErrors.FirstOrDefault();
123120
if (error != null)
124121
{

0 commit comments

Comments
 (0)