diff --git a/zero/Identity/Models/ZeroIdentityUser.cs b/zero/Identity/Models/ZeroIdentityUser.cs index 917e6af1..2924c270 100644 --- a/zero/Identity/Models/ZeroIdentityUser.cs +++ b/zero/Identity/Models/ZeroIdentityUser.cs @@ -76,6 +76,11 @@ public abstract class ZeroIdentityUser : ZeroEntity /// public bool TwoFactorEnabled { get; set; } + /// + /// When the user activated two-factor authentication + /// + public DateTimeOffset? TwoFactorEnabledDate { get; set; } + /// /// The two-factor authenticator key /// diff --git a/zero/Identity/ZeroUserStore(TUser).cs b/zero/Identity/ZeroUserStore(TUser).cs index a1fe0641..2269887f 100644 --- a/zero/Identity/ZeroUserStore(TUser).cs +++ b/zero/Identity/ZeroUserStore(TUser).cs @@ -480,6 +480,7 @@ public partial class ZeroUserStore : public Task SetTwoFactorEnabledAsync(TUser user, bool enabled, CancellationToken cancellationToken) { user.TwoFactorEnabled = enabled; + user.TwoFactorEnabledDate = enabled ? DateTimeOffset.Now : null; return Task.CompletedTask; } diff --git a/zero/TagHelpers/ActiveTagHelper.cs b/zero/TagHelpers/ActiveTagHelper.cs index b2ee3aaf..6b71d9dd 100644 --- a/zero/TagHelpers/ActiveTagHelper.cs +++ b/zero/TagHelpers/ActiveTagHelper.cs @@ -14,6 +14,8 @@ public class ActiveTagHelper : TagHelper [HtmlAttributeName("href")] public string Href { get; set; } + public override int Order => 100; + public ActiveTagHelper(IHttpContextAccessor contextAccessor) { @@ -36,7 +38,6 @@ public class ActiveTagHelper : TagHelper classes.Add("is-active-exact"); } - output.Attributes.SetAttribute("href", Href); output.Attributes.SetAttribute("class", string.Join(" ", classes)); } } \ No newline at end of file