diff --git a/hiboo/account/login.py b/hiboo/account/login.py
index ad5afca1def2ff01ae4e06cba92063c0023a3af5..08132659b62f9597bb2d387b06e4583ab6263310 100644
--- a/hiboo/account/login.py
+++ b/hiboo/account/login.py
@@ -8,14 +8,14 @@ import datetime
 import flask_login
 import flask
 
-@blueprint.route("/signin", methods=["GET", "POST"])
-def signin():
+@blueprint.route("/signin/password", methods=["GET", "POST"])
+def signin_password():
     form = forms.LoginForm()
     if form.validate_on_submit():
         user = models.User.login(form.username.data, form.password.data)
         if user and models.Auth.TOTP in user.auths:
             session["username"] = user.username
-            return flask.redirect(utils.url_for(".totp_verify"))
+            return flask.redirect(utils.url_for(".signin_totp"))
         elif user:
             flask_login.login_user(user)
             if form.remember_me.data == True:
@@ -23,12 +23,12 @@ def signin():
             return flask.redirect(utils.url_or_intent(".home"))
         else:
             flask.flash(_("Wrong credentials"), "danger")
-    return flask.render_template("account_signin.html", form=form,
-        action=utils.url_for(".signin"))
+    return flask.render_template("account_signin_password.html", form=form,
+        action=utils.url_for(".signin_password"))
 
 
-@blueprint.route("/totp/verify", methods=["GET", "POST"])
-def totp_verify():
+@blueprint.route("/signin/totp", methods=["GET", "POST"])
+def signin_totp():
     form = forms.TotpForm()
     username = session.get("username") or flask.abort(403)
     user = models.User.query.filter_by(username=username).first() or flask.abort(403)
@@ -39,14 +39,14 @@ def totp_verify():
             return flask.redirect(utils.url_or_intent(".home"))
         else:
             flask.flash(_("Wrong TOTP"), "danger")
-    return flask.render_template("account_totp_verify.html", form=form)
+    return flask.render_template("account_signin_totp.html", form=form)
 
 
 @blueprint.route("/signout")
 @security.authentication_required()
 def signout():
     flask_login.logout_user()
-    return flask.redirect(flask.url_for(".signin"))
+    return flask.redirect(flask.url_for(".signin_password"))
 
 
 @blueprint.route("/signup", methods=["GET", "POST"])
@@ -64,7 +64,7 @@ def signup():
             claims.validate()
         except Exception as e:
             flask.flash(_("Invalid or expired signup link"), "danger")
-            return flask.redirect(flask.url_for(".signin"))
+            return flask.redirect(flask.url_for(".signin_password"))
     form = forms.SignupForm()
     if form.validate_on_submit():
         conflict = models.User.query.filter_by(username=form.username.data).first()
@@ -86,14 +86,14 @@ def signup():
             return flask.redirect(utils.url_or_intent(".home"))
     return flask.render_template("account_signup.html", form=form)
 
-@blueprint.route("/reset", methods=["GET", "POST"])
-def reset():
+@blueprint.route("/auth/password/reset", methods=["GET", "POST"])
+def password_reset():
     token = flask.request.args.get('token') or flask.abort(403)
     key = flask.current_app.config["SECRET_KEY"]
     jwt = JsonWebToken(['HS512'])
     claims_options = {
         'exp': {'essential': True, 'value': datetime.datetime.now().timestamp()},
-        'aud': {'essential': True, 'value': flask.url_for('.reset')},
+        'aud': {'essential': True, 'value': flask.url_for('.password_reset')},
         'user_uuid': {'essential': True}
     }
     try:
@@ -102,7 +102,7 @@ def reset():
         user = models.User.query.get(claims["user_uuid"]) or flask.abort(404)
     except Exception as e:
         flask.flash(_("Invalid or expired reset link"), "danger")
-        return flask.redirect(flask.url_for(".signin"))
+        return flask.redirect(flask.url_for(".signin_password"))
     form = forms.PasswordForm()
     del form.old
     if form.validate_on_submit():
@@ -112,5 +112,5 @@ def reset():
         models.db.session.add(auth)
         models.db.session.commit()
         flask.flash(_("Successfully reset your password"), "success")
-        return flask.redirect(flask.url_for(".signin"))
-    return flask.render_template("account_reset.html", form=form)
+        return flask.redirect(flask.url_for(".signin_password"))
+    return flask.render_template("account_password_reset.html", form=form)
diff --git a/hiboo/account/settings.py b/hiboo/account/settings.py
index 4b61027bd37d6fb01aab7555fb06dc3598c2b175..ef92a09c5a53efed64e85c2de1e0f80e5a9c42b7 100644
--- a/hiboo/account/settings.py
+++ b/hiboo/account/settings.py
@@ -11,7 +11,7 @@ import qrcode
 import base64
 
 
-@blueprint.route("/password", methods=["GET", "POST"])
+@blueprint.route("/auth/password", methods=["GET", "POST"])
 @security.authentication_required()
 def password():
     form = forms.PasswordForm()
@@ -26,10 +26,10 @@ def password():
             return flask.redirect(flask.url_for(".home"))
         else:
             flask.flash(_("Wrong credentials, check your old password"), "danger")
-    return flask.render_template("account_password.html", form=form)
+    return flask.render_template("account_auth_password.html", form=form)
 
 
-@blueprint.route("/totp", methods=["GET", "POST"])
+@blueprint.route("/auth/totp", methods=["GET", "POST"])
 @security.authentication_required()
 def totp():
     user = flask_login.current_user
@@ -44,13 +44,13 @@ def totp():
         img.save(buffered, format="PNG")
         qr = base64.b64encode(buffered.getvalue()).decode('ascii')
         return flask.render_template(
-            "account_totp.html",
+            "account_auth_totp.html",
             key=key, name=user.username, issuer=issuer, qr=qr
         )
-    return flask.render_template("account_totp.html")
+    return flask.render_template("account_auth_totp.html")
 
 
-@blueprint.route("/totp/setup", methods=["GET", "POST"])
+@blueprint.route("/auth/totp/setup", methods=["GET", "POST"])
 @security.authentication_required()
 @security.confirmation_required("setup TOTP")
 def totp_setup():
@@ -66,7 +66,7 @@ def totp_setup():
     return flask.redirect(flask.url_for(".totp"))
 
 
-@blueprint.route("/totp/delete", methods=["GET", "POST"])
+@blueprint.route("/auth/totp/delete", methods=["GET", "POST"])
 @security.authentication_required()
 @security.confirmation_required("disable TOTP")
 def totp_delete():
diff --git a/hiboo/account/templates/account_password.html b/hiboo/account/templates/account_auth_password.html
similarity index 100%
rename from hiboo/account/templates/account_password.html
rename to hiboo/account/templates/account_auth_password.html
diff --git a/hiboo/account/templates/account_reset.html b/hiboo/account/templates/account_auth_password_reset.html
similarity index 100%
rename from hiboo/account/templates/account_reset.html
rename to hiboo/account/templates/account_auth_password_reset.html
diff --git a/hiboo/account/templates/account_totp.html b/hiboo/account/templates/account_auth_totp.html
similarity index 100%
rename from hiboo/account/templates/account_totp.html
rename to hiboo/account/templates/account_auth_totp.html
diff --git a/hiboo/account/templates/account_signin.html b/hiboo/account/templates/account_signin_password.html
similarity index 100%
rename from hiboo/account/templates/account_signin.html
rename to hiboo/account/templates/account_signin_password.html
diff --git a/hiboo/account/templates/account_totp_verify.html b/hiboo/account/templates/account_signin_totp.html
similarity index 100%
rename from hiboo/account/templates/account_totp_verify.html
rename to hiboo/account/templates/account_signin_totp.html
diff --git a/hiboo/templates/base.html b/hiboo/templates/base.html
index 91b8195b04c93d06905662106eb2a526df20b7d1..0bdba6436c6cd4c293e42ccc12284aefffa8f100 100644
--- a/hiboo/templates/base.html
+++ b/hiboo/templates/base.html
@@ -33,7 +33,7 @@
                     </li>
                     {% else %}
                     <li class="nav-item user">
-                        <a href="{{ url_for("account.signin") }}" class="nav-link">
+                        <a href="{{ url_for("account.signin_password") }}" class="nav-link">
                             <i class="fas fa-sign-in"></i>
                             {% trans %}Sign in{% endtrans %}
                         </a>
diff --git a/hiboo/templates/sidebar.html b/hiboo/templates/sidebar.html
index 3a1a5450b8166d07f2d74271464130c94b30ecec..8f2ca4b3de9fc0235d9821855805ac1dc7532cd1 100644
--- a/hiboo/templates/sidebar.html
+++ b/hiboo/templates/sidebar.html
@@ -37,7 +37,7 @@
   </a>
 </li>
 <li class="nav-item">
-  <a class="nav-link" href="{{ utils.url_for("account.signin") }}">
+  <a class="nav-link" href="{{ utils.url_for("account.signin_password") }}">
     <i class="nav-icon fas fa-sign-in-alt"></i> <p>{% trans %}Sign in{% endtrans %}</p>
   </a>
 </li>
diff --git a/hiboo/user/views.py b/hiboo/user/views.py
index 86b4cdda07d0c2266ffe86748eeeb9ca8a5b8c13..cf242338e6891b3be861c365fa6892f0f5b9da45 100644
--- a/hiboo/user/views.py
+++ b/hiboo/user/views.py
@@ -29,7 +29,7 @@ def details(user_uuid):
     return flask.render_template("user_details.html", user=user)
 
 
-@blueprint.route("/reset/<user_uuid>", methods=["GET", "POST"])
+@blueprint.route("/auth/password/reset/<user_uuid>", methods=["GET", "POST"])
 @security.admin_required()
 @security.confirmation_required("generate a password reset link")
 def password_reset(user_uuid):
@@ -37,13 +37,13 @@ def password_reset(user_uuid):
     expired = datetime.datetime.now() + datetime.timedelta(days=1)
     payload = {
         "exp": int(expired.timestamp()),
-        "aud": flask.url_for('account.reset'),
+        "aud": flask.url_for('account.password_reset'),
         "user_uuid": user.uuid
     }
     header = {"alg": "HS512"}
     key = flask.current_app.config["SECRET_KEY"]
     token = jwt.encode(header, payload, key)
-    reset_link = flask.url_for("account.reset", token=token, _external=True)
+    reset_link = flask.url_for("account.password_reset", token=token, _external=True)
     flask.flash(_("Reset link: {}").format(reset_link), "success")
     return flask.redirect(flask.url_for(".details", user_uuid=user.uuid))
 
diff --git a/hiboo/utils.py b/hiboo/utils.py
index 9bf6125422179cf91b68251edd74e72592da2825..528ac29e538ffaac800c053f1199ec9cf3d16f04 100644
--- a/hiboo/utils.py
+++ b/hiboo/utils.py
@@ -13,13 +13,13 @@ from werkzeug import routing
 login = flask_login.LoginManager()
 login.login_view = "account.login"
 INTENTS = "intents"
-DISPLAY_HELP = ("account.signin", "account.signup")
+DISPLAY_HELP = ("account.signin_password", "account.signup")
 
 
 @login.unauthorized_handler
 def handle_needs_login():
     return flask.redirect(
-        url_for('account.signin', intent=flask.request.endpoint)
+        url_for('account.signin_password', intent=flask.request.endpoint)
     )