diff --git a/consent_provider/app.py b/consent_provider/app.py index b4df17ce681cdf8dd63e5a61672a5932c694f716..111bdee96ed0d93c033d117072b2e9673ee902e7 100644 --- a/consent_provider/app.py +++ b/consent_provider/app.py @@ -1,44 +1,20 @@ -from flask import Flask from flask import abort, Flask, redirect, render_template, request from flask.views import View +from os import urandom +from hydra_client import HydraAdmin from flask_wtf import FlaskForm +from wtforms import SubmitField, HiddenField from flask_wtf.csrf import CSRFProtect -from os import urandom -from wtforms import ( - BooleanField, - HiddenField, - PasswordField, - SelectMultipleField, - StringField, - SubmitField, -) from wtforms.validators import DataRequired -from hydra_client import HydraAdmin - -DEBUG = True -HYDRA_ADMIN_URL = "http://127.0.0.1:4445" -class DataRequiredIf(DataRequired): - field_flags = ("optional",) - def __init__(self, check_field, *args, **kwargs): - self.check_field = check_field - super().__init__(*args, **kwargs) - - def __call__(self, form, field): - check_field = form._fields.get(self.check_field) - if check_field is None: - raise RuntimeError(f"No field called '{self.check_field}'") - if check_field.data: - super().__call__(form, field) +HYDRA_ADMIN_URL = "http://127.0.0.1:4445" class ConsentForm(FlaskForm): accept = SubmitField("accept") - decline = SubmitField("decline") - challenge = HiddenField("challenge", validators=[DataRequired()]) - requested_scope = SelectMultipleField("requested scopes") - remember = BooleanField("remember") + challenge = HiddenField("challenge") + class ConsentView(View): @@ -48,20 +24,19 @@ class ConsentView(View): return render_template("consent.html", form=form, **context) def dispatch_request(self): - form = ConsentForm() hydra = HydraAdmin(HYDRA_ADMIN_URL) + form = ConsentForm() challenge = request.args.get("consent_challenge") or form.challenge.data if not challenge: abort(400) consent_request = hydra.consent_request(challenge) - form.requested_scope.choices = [(s, s) for s in consent_request.requested_scope] session = { "access_token": {}, "id_token": { - "sub": "248289761004", + "sub": "248289761010", "name": "Example User", "given_name": "Example", "family_name": "User", @@ -87,7 +62,6 @@ class ConsentView(View): return redirect(redirect_to) else: form.challenge.data = consent_request.challenge - return self.render_form( form, user=consent_request.subject, client=consent_request.client ) @@ -96,10 +70,10 @@ class ConsentView(View): if form.validate(): if form.accept.data: redirect_to = consent_request.accept( - grant_scope=form.requested_scope.data, + grant_scope=consent_request.requested_scope, grant_access_token_audience=consent_request.requested_access_token_audience, session=session, - remember=form.remember.data, + remember=False ) else: redirect_to = consent_request.reject(error="user_decline") diff --git a/consent_provider/templates/consent.html b/consent_provider/templates/consent.html index cb0786b171247250f83d26a0848f25a71e252bb0..db91dd3485c463e257fe333490dd3be72362b975 100644 --- a/consent_provider/templates/consent.html +++ b/consent_provider/templates/consent.html @@ -9,10 +9,7 @@ <dd>{{ client }}</dd> </dl> <form method="POST" action="/consent"> - {{ form.requested_scope.label }} {{ form.requested_scope() }} - {{ form.remember.label }} {{ form.remember }} {{ form.hidden_tag() }} {{ form.accept }} - {{ form.decline }} </form> {% endblock %} diff --git a/consent_provider/templates/login.html b/consent_provider/templates/login.html deleted file mode 100644 index ace23d91aa72dc4b06648b5734f27c8a13b0d7ec..0000000000000000000000000000000000000000 --- a/consent_provider/templates/login.html +++ /dev/null @@ -1,13 +0,0 @@ -{% extends "base.html" %} -{% block title %}Login{% endblock %} - -{% block content %} -<form method="POST" action="/login"> - {{ form.user.label }} {{ form.user(size=25) }} - {{ form.password.label }} {{ form.password(size=25) }} - {{ form.remember.label }} {{ form.remember }} - {{ form.hidden_tag() }} - {{ form.login }} - {{ form.abort }} -</form> -{% endblock %}