move password requirement localization back to Client project
This commit is contained in:
		| @ -1,4 +1,5 @@ | ||||
| using Oqtane.Models; | ||||
| using System.Collections.Generic; | ||||
| using System.Threading.Tasks; | ||||
|  | ||||
| namespace Oqtane.Services | ||||
|  | ||||
| @ -4,14 +4,20 @@ using System.Net.Http; | ||||
| using System.Threading.Tasks; | ||||
| using Oqtane.Documentation; | ||||
| using System.Net; | ||||
| using System.ComponentModel.DataAnnotations; | ||||
| using System.Collections.Generic; | ||||
| using Microsoft.Extensions.Localization; | ||||
|  | ||||
| namespace Oqtane.Services | ||||
| { | ||||
|     [PrivateApi("Don't show in the documentation, as everything should use the Interface")] | ||||
|     public class UserService : ServiceBase, IUserService | ||||
|     { | ||||
|         public UserService(HttpClient http, SiteState siteState) : base(http, siteState) { } | ||||
|         private readonly IStringLocalizer<SharedResources> _localizer; | ||||
|  | ||||
|         public UserService(IStringLocalizer<SharedResources> localizer, HttpClient http, SiteState siteState) : base(http, siteState) | ||||
|         { | ||||
|             _localizer = localizer; | ||||
|         } | ||||
|  | ||||
|         private string Apiurl => CreateApiUrl("User"); | ||||
|  | ||||
| @ -98,7 +104,24 @@ namespace Oqtane.Services | ||||
|  | ||||
|         public async Task<string> GetPasswordRequirementsAsync(int siteId) | ||||
|         { | ||||
|             return await GetStringAsync($"{Apiurl}/passwordrequirements/{siteId}"); | ||||
|             var requirements = await GetJsonAsync<Dictionary<string, string>>($"{Apiurl}/passwordrequirements/{siteId}"); | ||||
|  | ||||
|             var minimumlength = (requirements.ContainsKey("IdentityOptions:Password:RequiredLength")) ? requirements["IdentityOptions:Password:RequiredLength"] : "6"; | ||||
|             var uniquecharacters = (requirements.ContainsKey("IdentityOptions:Password:RequiredUniqueChars")) ? requirements["IdentityOptions:Password:RequiredUniqueChars"] : "1"; | ||||
|             var requiredigit = bool.Parse((requirements.ContainsKey("IdentityOptions:Password:RequireDigit")) ? requirements["IdentityOptions:Password:RequireDigit"] : "true"); | ||||
|             var requireupper = bool.Parse((requirements.ContainsKey("IdentityOptions:Password:RequireUppercase")) ? requirements["IdentityOptions:Password:RequireUppercase"] : "true"); | ||||
|             var requirelower = bool.Parse((requirements.ContainsKey("IdentityOptions:Password:RequireLowercase")) ? requirements["IdentityOptions:Password:RequireLowercase"] : "true"); | ||||
|             var requirepunctuation = bool.Parse((requirements.ContainsKey("IdentityOptions:Password:RequireNonAlphanumeric")) ? requirements["IdentityOptions:Password:RequireNonAlphanumeric"] : "true"); | ||||
|  | ||||
|             // replace the placeholders with the setting values | ||||
|             string digitRequirement = requiredigit ? _localizer["Password.DigitRequirement"] + ", " : ""; | ||||
|             string uppercaseRequirement = requireupper ? _localizer["Password.UppercaseRequirement"] + ", " : ""; | ||||
|             string lowercaseRequirement = requirelower ? _localizer["Password.LowercaseRequirement"] + ", " : ""; | ||||
|             string punctuationRequirement = requirepunctuation ? _localizer["Password.PunctuationRequirement"] + ", " : ""; | ||||
|             string passwordValidationCriteriaTemplate = _localizer["Password.ValidationCriteria"]; | ||||
|  | ||||
|             // format requirements | ||||
|             return string.Format(passwordValidationCriteriaTemplate, minimumlength, uniquecharacters, digitRequirement, uppercaseRequirement, lowercaseRequirement, punctuationRequirement); | ||||
|         } | ||||
|     } | ||||
| } | ||||
|  | ||||
		Reference in New Issue
	
	Block a user
	 sbwalker
					sbwalker