Details
diff --git a/forms/src/main/java/org/keycloak/forms/UrlBean.java b/forms/src/main/java/org/keycloak/forms/UrlBean.java
index fdb11fe..cb82aaa 100644
--- a/forms/src/main/java/org/keycloak/forms/UrlBean.java
+++ b/forms/src/main/java/org/keycloak/forms/UrlBean.java
@@ -120,6 +120,10 @@ public class UrlBean {
return Urls.accountTotpPage(baseURI, realm.getId()).toString();
}
+ public String getTotpRemoveUrl() {
+ return Urls.accountTotpRemove(baseURI, realm.getId()).toString();
+ }
+
public String getEmailVerificationUrl() {
return Urls.accountEmailVerification(baseURI, realm.getId()).toString();
}
diff --git a/forms/src/main/resources/META-INF/resources/forms/theme/default/totp.ftl b/forms/src/main/resources/META-INF/resources/forms/theme/default/totp.ftl
index 63de6ef..57274c2 100755
--- a/forms/src/main/resources/META-INF/resources/forms/theme/default/totp.ftl
+++ b/forms/src/main/resources/META-INF/resources/forms/theme/default/totp.ftl
@@ -22,7 +22,9 @@
<tr>
<td class="provider"><span class="social googleplus">Google</span></td>
<td class="soft">Connected as john@google.com</td>
- <td class="action"><a href="user-totp-setup.html" class="button">Remove Google</a></td>
+ <td class="action">
+ <a href="${url.totpRemoveUrl}" class="button">Remove Google</a>
+ </td>
</tr>
</tbody>
</table>
diff --git a/services/src/main/java/org/keycloak/services/resources/AccountService.java b/services/src/main/java/org/keycloak/services/resources/AccountService.java
index b78d9ed..f853bfe 100755
--- a/services/src/main/java/org/keycloak/services/resources/AccountService.java
+++ b/services/src/main/java/org/keycloak/services/resources/AccountService.java
@@ -164,6 +164,14 @@ public class AccountService {
return accessCodeEntry;
}
+ @Path("totp-remove")
+ @GET
+ public Response processTotpRemove() {
+ UserModel user = getUserFromAuthManager();
+ user.setTotp(false);
+ return Flows.forms(realm, request, uriInfo).setUser(user).forwardToTotp();
+ }
+
@Path("totp")
@POST
@Consumes(MediaType.APPLICATION_FORM_URLENCODED)
diff --git a/services/src/main/java/org/keycloak/services/resources/flows/Urls.java b/services/src/main/java/org/keycloak/services/resources/flows/Urls.java
index 1da6a61..b6a86a2 100755
--- a/services/src/main/java/org/keycloak/services/resources/flows/Urls.java
+++ b/services/src/main/java/org/keycloak/services/resources/flows/Urls.java
@@ -55,6 +55,10 @@ public class Urls {
return accountBase(baseUri).path(AccountService.class, "totpPage").build(realmId);
}
+ public static URI accountTotpRemove(URI baseUri, String realmId) {
+ return accountBase(baseUri).path(AccountService.class, "processTotpRemove").build(realmId);
+ }
+
public static URI accountEmailVerification(URI baseUri, String realmId) {
return accountBase(baseUri).path(AccountService.class, "emailVerification").build(realmId);
}