Skip to content

Instantly share code, notes, and snippets.

@markadrake
Last active October 16, 2025 08:29
Show Gist options
  • Select an option

  • Save markadrake/f6c00123ad177e7d4395849c079ab0e9 to your computer and use it in GitHub Desktop.

Select an option

Save markadrake/f6c00123ad177e7d4395849c079ab0e9 to your computer and use it in GitHub Desktop.
Force Users to Enable Two-Factor Authentication in Umbraco 13
(() => {
angular.module("umbraco").run(["authResource", "twoFactorLoginResource", "editorService", "notificationsService", "eventsService", async (authResource, twoFactorLoginResource, editorService, notificationsService, eventsService) => {
const state = {};
const init = async (firstInit) => {
"app.ready"
state.currentUser = await authResource.getCurrentUser();
state.twoFactorAuthProviders = await twoFactorLoginResource.get2FAProvidersForUser(state.currentUser.id);
if(firstInit && !twoFactorIsEnabled()) {
configureTwoFactor();
}
};
const twoFactorIsEnabled = () => {
return !!state.twoFactorAuthProviders.find(provider => provider.isEnabledOnUser);
};
const configureTwoFactor = () => {
editorService.open({
create: true,
user: state.currentUser,
isCurrentUser: true,
size: "small",
view: "views/common/infiniteeditors/twofactor/configuretwofactor.html",
close: async () => {
await init();
if(twoFactorIsEnabled()) {
notificationsService.success("Two-Factor Auth", "You have successfully configured two-factor authentication.");
editorService.close();
} else {
notificationsService.error("Two-Factor Auth", "You must configure two-factor authentication before continuing.");
}
}
});
};
eventsService.on("app.ready", (name, args) => {
init(true);
});
}]);
})();
{
"javascript": [
"~/App_Plugins/path/to/EnforceTwoFactorAuthentication.js"
]
}
@ramlakhan78
Copy link

ramlakhan78 commented Apr 29, 2025

Hey @markadrake
This works in umbraco 13 but not for 14/15.
Can you please let me know, have you tried same for umbraco version 15?

@richard-arkom
Copy link

Where abouts in Umbraco 13 would you place this code, and is there any other config to do other than the usual Umbraco 2FA stuff?

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment