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