diff --git a/src/Microsoft.AspNetCore.Authentication.Abstractions/AuthenticationProperties.cs b/src/Microsoft.AspNetCore.Authentication.Abstractions/AuthenticationProperties.cs index 609b6fad58..9d1e670ea8 100644 --- a/src/Microsoft.AspNetCore.Authentication.Abstractions/AuthenticationProperties.cs +++ b/src/Microsoft.AspNetCore.Authentication.Abstractions/AuthenticationProperties.cs @@ -46,24 +46,8 @@ namespace Microsoft.AspNetCore.Authentication /// public bool IsPersistent { - get { return Items.ContainsKey(IsPersistentKey); } - set - { - if (Items.ContainsKey(IsPersistentKey)) - { - if (!value) - { - Items.Remove(IsPersistentKey); - } - } - else - { - if (value) - { - Items.Add(IsPersistentKey, string.Empty); - } - } - } + get => GetString(IsPersistentKey) != null; + set => SetString(IsPersistentKey, value ? string.Empty : null); } /// @@ -71,25 +55,8 @@ namespace Microsoft.AspNetCore.Authentication /// public string RedirectUri { - get - { - string value; - return Items.TryGetValue(RedirectUriKey, out value) ? value : null; - } - set - { - if (value != null) - { - Items[RedirectUriKey] = value; - } - else - { - if (Items.ContainsKey(RedirectUriKey)) - { - Items.Remove(RedirectUriKey); - } - } - } + get => GetString(RedirectUriKey); + set => SetString(RedirectUriKey, value); } /// @@ -97,33 +64,8 @@ namespace Microsoft.AspNetCore.Authentication /// public DateTimeOffset? IssuedUtc { - get - { - string value; - if (Items.TryGetValue(IssuedUtcKey, out value)) - { - DateTimeOffset dateTimeOffset; - if (DateTimeOffset.TryParseExact(value, UtcDateTimeFormat, CultureInfo.InvariantCulture, DateTimeStyles.RoundtripKind, out dateTimeOffset)) - { - return dateTimeOffset; - } - } - return null; - } - set - { - if (value.HasValue) - { - Items[IssuedUtcKey] = value.Value.ToString(UtcDateTimeFormat, CultureInfo.InvariantCulture); - } - else - { - if (Items.ContainsKey(IssuedUtcKey)) - { - Items.Remove(IssuedUtcKey); - } - } - } + get => GetDateTimeOffset(IssuedUtcKey); + set => SetDateTimeOffset(IssuedUtcKey, value); } /// @@ -131,33 +73,8 @@ namespace Microsoft.AspNetCore.Authentication /// public DateTimeOffset? ExpiresUtc { - get - { - string value; - if (Items.TryGetValue(ExpiresUtcKey, out value)) - { - DateTimeOffset dateTimeOffset; - if (DateTimeOffset.TryParseExact(value, UtcDateTimeFormat, CultureInfo.InvariantCulture, DateTimeStyles.RoundtripKind, out dateTimeOffset)) - { - return dateTimeOffset; - } - } - return null; - } - set - { - if (value.HasValue) - { - Items[ExpiresUtcKey] = value.Value.ToString(UtcDateTimeFormat, CultureInfo.InvariantCulture); - } - else - { - if (Items.ContainsKey(ExpiresUtcKey)) - { - Items.Remove(ExpiresUtcKey); - } - } - } + get => GetDateTimeOffset(ExpiresUtcKey); + set => SetDateTimeOffset(ExpiresUtcKey, value); } /// @@ -165,32 +82,67 @@ namespace Microsoft.AspNetCore.Authentication /// public bool? AllowRefresh { - get + get => GetBool(RefreshKey); + set => SetBool(RefreshKey, value); + } + + private string GetString(string key) + { + return Items.TryGetValue(key, out string value) ? value : null; + } + + private void SetString(string key, string value) + { + if (value != null) { - string value; - if (Items.TryGetValue(RefreshKey, out value)) - { - bool refresh; - if (bool.TryParse(value, out refresh)) - { - return refresh; - } - } - return null; + Items[key] = value; } - set + else if (Items.ContainsKey(key)) { - if (value.HasValue) - { - Items[RefreshKey] = value.Value.ToString(); - } - else - { - if (Items.ContainsKey(RefreshKey)) - { - Items.Remove(RefreshKey); - } - } + Items.Remove(key); + } + } + + private bool? GetBool(string key) + { + if (Items.TryGetValue(key, out string value) && bool.TryParse(value, out bool refresh)) + { + return refresh; + } + return null; + } + + private void SetBool(string key, bool? value) + { + if (value.HasValue) + { + Items[key] = value.Value.ToString(); + } + else if (Items.ContainsKey(key)) + { + Items.Remove(key); + } + } + + private DateTimeOffset? GetDateTimeOffset(string key) + { + if (Items.TryGetValue(key, out string value) + && DateTimeOffset.TryParseExact(value, UtcDateTimeFormat, CultureInfo.InvariantCulture, DateTimeStyles.RoundtripKind, out DateTimeOffset dateTimeOffset)) + { + return dateTimeOffset; + } + return null; + } + + private void SetDateTimeOffset(string key, DateTimeOffset? value) + { + if (value.HasValue) + { + Items[key] = value.Value.ToString(UtcDateTimeFormat, CultureInfo.InvariantCulture); + } + else if (Items.ContainsKey(key)) + { + Items.Remove(key); } } }