Example #1
0
 def login():
     if request.method == "POST":
         kwargs, success = request.form.to_dict(), False
         username = kwargs["name"]
         try:
             user = app.authenticate_user(**kwargs)
             if user:
                 login_user(user, remember=False)
                 session.permanent = True
                 success, log = True, f"User '{username}' logged in"
             else:
                 log = f"Authentication failed for user '{username}'"
         except Exception as exc:
             log = f"Authentication error for user '{username}' ({exc})"
         finally:
             app.log("info" if success else "warning",
                     log,
                     logger="security")
             if success:
                 return redirect(
                     url_for("blueprint.route", page="dashboard"))
             else:
                 abort(403)
     if not current_user.is_authenticated:
         login_form = LoginForm(request.form)
         methods = app.settings["authentication"]["methods"].items()
         login_form.authentication_method.choices = [
             (method, properties["display_name"])
             for method, properties in methods if properties["enabled"]
         ]
         return render_template("login.html", login_form=login_form)
     return redirect(url_for("blueprint.route", page="dashboard"))
Example #2
0
 def verify_password(username, password):
     user = db.fetch("user", name=username, allow_none=True)
     if not user or not password:
         return False
     if app.authenticate_user(name=username, password=password):
         login_user(user)
         return True
Example #3
0
 def verify_password(username, password):
     user = app.authenticate_user(name=username, password=password)
     if user:
         request_type = f"{request.method.lower()}_requests"
         endpoint = "/".join(request.path.split("/")[:3])
         if user.is_admin or endpoint in getattr(user, request_type, []):
             login_user(user)
             return True
         g.status = 403
     else:
         g.status = 401
Example #4
0
def login():
    if request.method == "POST":
        try:
            user = app.authenticate_user(**request.form.to_dict())
            if user:
                login_user(user)
                return redirect(url_for("blueprint.route", page="dashboard"))
            else:
                abort(403)
        except Exception as e:
            info(f"Authentication failed ({str(e)})")
            abort(403)
    if not current_user.is_authenticated:
        login_form = LoginForm(request.form)
        authentication_methods = [("Local User", ) * 2]
        if app.use_ldap:
            authentication_methods.append(("LDAP Domain", ) * 2)
        if app.use_tacacs:
            authentication_methods.append(("TACACS", ) * 2)
        login_form.authentication_method.choices = authentication_methods
        return render_template("login.html", login_form=login_form)
    return redirect(url_for("blueprint.route", page="dashboard"))