From 2781f336e74eb49f75141f4b36420cb34add900d Mon Sep 17 00:00:00 2001
From: Bjarke Madsen <bjarke@nordu.net>
Date: Thu, 15 Jun 2023 19:01:28 +0200
Subject: [PATCH] Add authlib and flask-login libraries for oauth integration
---
compendium_v2/config.py | 16 +++++++++++++---
config-example.json | 8 +++++++-
requirements.txt | 2 ++
setup.py | 4 +++-
test/conftest.py | 3 ++-
5 files changed, 27 insertions(+), 6 deletions(-)
diff --git a/compendium_v2/config.py b/compendium_v2/config.py
index 5cf1a69b..490f399a 100644
--- a/compendium_v2/config.py
+++ b/compendium_v2/config.py
@@ -1,15 +1,25 @@
import json
import jsonschema
-
CONFIG_SCHEMA = {
'$schema': 'http://json-schema.org/draft-07/schema#',
'type': 'object',
'properties': {
'SQLALCHEMY_DATABASE_URI': {'type': 'string', 'format': 'database-uri'},
- 'SURVEY_DATABASE_URI': {'type': 'string', 'format': 'database-uri'}
+ 'SURVEY_DATABASE_URI': {'type': 'string', 'format': 'database-uri'},
+ 'oidc': {
+ 'type': 'object',
+ 'properties': {
+ 'client_id': {'type': 'string'},
+ 'client_secret': {'type': 'string'},
+ 'server_metadata_url': {'type': 'string', 'format': 'uri', 'pattern': '^https?://'},
+ },
+ 'required': ['client_id', 'client_secret', 'server_metadata_url'],
+ 'additionalProperties': False
+ },
+ 'SECRET_KEY': {'type': 'string'},
},
- 'required': ['SQLALCHEMY_DATABASE_URI', 'SURVEY_DATABASE_URI'],
+ 'required': ['SQLALCHEMY_DATABASE_URI', 'SURVEY_DATABASE_URI', 'SECRET_KEY'],
'additionalProperties': False
}
diff --git a/config-example.json b/config-example.json
index f480ed92..a04ee059 100644
--- a/config-example.json
+++ b/config-example.json
@@ -1,4 +1,10 @@
{
"SQLALCHEMY_DATABASE_URI": "postgresql://compendium:compendium321@localhost:65000/compendium",
- "SURVEY_DATABASE_URI": ""
+ "SURVEY_DATABASE_URI": "",
+ "oidc": {
+ "client_id": "<id>",
+ "client_secret": "<secret>",
+ "server_metadata_url": "https://accounts.google.com/.well-known/openid-configuration"
+ },
+ "SECRET_KEY": "changeme"
}
diff --git a/requirements.txt b/requirements.txt
index 2487e32e..fe4111a1 100644
--- a/requirements.txt
+++ b/requirements.txt
@@ -8,6 +8,8 @@ flask-sqlalchemy~=3.0
openpyxl~=3.1
psycopg2-binary~=2.9
SQLAlchemy~=2.0
+authlib~=1.2
+flask-login~=0.6
pytest~=7.2
pytest-mock~=3.10
diff --git a/setup.py b/setup.py
index 87daee04..af25355e 100644
--- a/setup.py
+++ b/setup.py
@@ -20,7 +20,9 @@ setup(
'openpyxl~=3.1',
'psycopg2-binary~=2.9',
'SQLAlchemy~=2.0',
- 'sentry-sdk[flask]~=1.23'
+ 'sentry-sdk[flask]~=1.23',
+ 'authlib~=1.2',
+ 'flask-login~=0.6'
],
include_package_data=True,
diff --git a/test/conftest.py b/test/conftest.py
index 1374fe29..8fdd0c86 100644
--- a/test/conftest.py
+++ b/test/conftest.py
@@ -17,7 +17,8 @@ def _test_data_csv(filename):
def dummy_config():
yield {
'SQLALCHEMY_DATABASE_URI': 'sqlite://',
- 'SURVEY_DATABASE_URI': 'sqlite:///'
+ 'SURVEY_DATABASE_URI': 'sqlite:///',
+ 'SECRET_KEY': 'testsecret123'
}
--
GitLab