Skip to content

Commit b3ac77b

Browse files
committed
add: admin login with SAML + Andrvotr instead of Cosign
1 parent de71614 commit b3ac77b

File tree

6 files changed

+32
-43
lines changed

6 files changed

+32
-43
lines changed

.gitmodules

Lines changed: 0 additions & 3 deletions
This file was deleted.

config-sample.py

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -30,7 +30,8 @@
3030

3131
UA_CODE = 'UA-23362538-7'
3232

33-
COSIGN_PROXY_DIR = '/opt/cosign/proxy'
33+
MY_ENTITY_ID = 'xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx'
34+
ANDRVOTR_API_KEY = 'xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx'
3435

3536
SUBMISSIONS_OPEN = True
3637
UPLOADS_ENABLED = True

eprihlaska/ais_utils.py

Lines changed: 17 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -1,19 +1,26 @@
1-
import os
21
import sys
32
import re
43
import flask.json
54
from flask import url_for
6-
DIR = os.path.dirname(os.path.abspath(__file__))
7-
sys.path.insert(0, DIR + '/votr/')
8-
9-
from aisikl.context import Context # noqa
105
from aisikl.app import Application # noqa
116
import aisikl.portal # noqa
12-
13-
14-
def create_context(cookies, origin='ais2-beta.uniba.sk'):
15-
ctx = Context(cookies, ais_url='https://'+origin+'/')
16-
return ctx
7+
from fladgejt.login import create_client # noqa
8+
9+
10+
def create_context(*,
11+
my_entity_id,
12+
andrvotr_api_key,
13+
andrvotr_authority_token,
14+
beta):
15+
ais_url = 'https://ais2-beta.uniba.sk/' if beta else 'https://ais2.uniba.sk/'
16+
server = dict(login_types=('saml_andrvotr',), ais_url=ais_url)
17+
params = dict(
18+
type='saml_andrvotr',
19+
my_entity_id=my_entity_id,
20+
andrvotr_api_key=andrvotr_api_Key,
21+
andrvotr_authority_token=andrvotr_authority_token,
22+
)
23+
return create_client(server, params).context
1724

1825

1926
def test_ais(ctx):

eprihlaska/views.py

Lines changed: 12 additions & 28 deletions
Original file line numberDiff line numberDiff line change
@@ -986,29 +986,21 @@ def admin_file_download(id, uuid):
986986
return send_from_directory(receipt_dir, file, as_attachment=True)
987987

988988

989-
def get_cosign_cookies():
990-
name = request.environ['COSIGN_SERVICE']
991-
value = request.cookies[name]
992-
filename = name + '=' + value.partition('/')[0]
993-
result = {}
994-
with open(os.path.join(app.config['COSIGN_PROXY_DIR'],
995-
filename)) as f:
996-
for line in f:
997-
# Remove starting "x" and everything after the space.
998-
name, _, value = line[1:].split()[0].partition('=')
999-
result[name] = value
1000-
return result
989+
def create_votr_context(*, beta):
990+
from .ais_utils import create_context
991+
return create_context(
992+
my_entity_id=app.config['MY_ENTITY_ID'],
993+
andrvotr_api_key=app.config['ANDRVOTR_API_KEY'],
994+
andrvotr_authority_token=request.environ['ANDRVOTR_AUTHORITY_TOKEN'],
995+
beta=beta,
996+
)
1001997

1002998

1003999
@app.route('/admin/ais_test')
10041000
@require_remote_user
10051001
def admin_ais_test():
1006-
from .ais_utils import (create_context, test_ais)
1007-
cosign_cookies = get_cosign_cookies()
1008-
ctx = create_context(cosign_cookies,
1009-
origin='ais2.uniba.sk')
1010-
# Do log in
1011-
ctx.request_html('/ais/loginCosign.do', method='POST')
1002+
from .ais_utils import test_ais
1003+
ctx = create_votr_context(beta=False)
10121004
test_ais(ctx)
10131005
return redirect(url_for('admin_list'))
10141006

@@ -1158,17 +1150,9 @@ def admin_process_special(id, process_type):
11581150

11591151

11601152
def send_application_to_ais2(id, application, form, process_type, beta=False):
1161-
from .ais_utils import (create_context, save_application_form)
1153+
from .ais_utils import save_application_form
11621154
if form.validate_on_submit():
1163-
origin = 'ais2.uniba.sk'
1164-
if beta:
1165-
origin = 'ais2-beta.uniba.sk'
1166-
1167-
cosign_cookies = get_cosign_cookies()
1168-
ctx = create_context(cosign_cookies,
1169-
origin=origin)
1170-
# Do log in
1171-
ctx.request_html('/ais/loginCosign.do', method='POST')
1155+
ctx = create_votr_context(beta=beta)
11721156

11731157
ais2_output = None
11741158
error_output = None

eprihlaska/votr

Lines changed: 0 additions & 1 deletion
This file was deleted.

requirements.txt

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -53,6 +53,7 @@ SQLAlchemy==1.3.0
5353
tinycss2==0.6.1
5454
urllib3==1.26.5
5555
visitor==0.1.3
56+
votr @ git+https://github.com/fmfi-svt/votr.git@2f4a488747f131b8d413b6879a41663e9fbc2880
5657
WeasyPrint==0.42
5758
webencodings==0.5.1
5859
Werkzeug==0.15.3

0 commit comments

Comments
 (0)