Skip to content

Commit 21f1289

Browse files
committed
add: admin login with SAML + Andrvotr instead of Cosign
1 parent 09d18c2 commit 21f1289

File tree

3 files changed

+29
-39
lines changed

3 files changed

+29
-39
lines changed

config-sample.py

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

3232
UA_CODE = 'UA-23362538-7'
3333

34-
COSIGN_PROXY_DIR = '/opt/cosign/proxy'
34+
MY_ENTITY_ID = 'xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx'
35+
ANDRVOTR_API_KEY = 'xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx'
3536

3637
SUBMISSIONS_OPEN = True
3738
UPLOADS_ENABLED = True

eprihlaska/ais_utils.py

Lines changed: 15 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -1,19 +1,24 @@
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(*, my_entity_id, andrvotr_api_key, andrvotr_authority_token, beta):
11+
server = dict(
12+
login_types=('saml_andrvotr',),
13+
ais_url=('https://ais2-beta.uniba.sk/' if beta else 'https://ais2.uniba.sk/'),
14+
)
15+
params = dict(
16+
type='saml_andrvotr',
17+
my_entity_id=my_entity_id,
18+
andrvotr_api_key=andrvotr_api_key,
19+
andrvotr_authority_token=andrvotr_authority_token,
20+
)
21+
return create_client(server, params).context
1722

1823

1924
def test_ais(ctx):

eprihlaska/views.py

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

970970

971-
def get_cosign_cookies():
972-
name = request.environ['COSIGN_SERVICE']
973-
value = request.cookies[name]
974-
filename = name + '=' + value.partition('/')[0]
975-
result = {}
976-
with open(os.path.join(app.config['COSIGN_PROXY_DIR'],
977-
filename)) as f:
978-
for line in f:
979-
# Remove starting "x" and everything after the space.
980-
name, _, value = line[1:].split()[0].partition('=')
981-
result[name] = value
982-
return result
971+
def create_votr_context(*, beta):
972+
from .ais_utils import create_context
973+
return create_context(
974+
my_entity_id=app.config['MY_ENTITY_ID'],
975+
andrvotr_api_key=app.config['ANDRVOTR_API_KEY'],
976+
andrvotr_authority_token=request.environ['ANDRVOTR_AUTHORITY_TOKEN'],
977+
beta=beta,
978+
)
983979

984980

985981
@app.route('/admin/ais_test')
986982
@require_remote_user
987983
def admin_ais_test():
988-
from .ais_utils import (create_context, test_ais)
989-
cosign_cookies = get_cosign_cookies()
990-
ctx = create_context(cosign_cookies,
991-
origin='ais2.uniba.sk')
992-
# Do log in
993-
ctx.request_html('/ais/loginCosign.do', method='POST')
984+
from .ais_utils import test_ais
985+
ctx = create_votr_context(beta=False)
994986
test_ais(ctx)
995987
return redirect(url_for('admin_list'))
996988

@@ -1140,17 +1132,9 @@ def admin_process_special(id, process_type):
11401132

11411133

11421134
def send_application_to_ais2(id, application, form, process_type, beta=False):
1143-
from .ais_utils import (create_context, save_application_form)
1135+
from .ais_utils import save_application_form
11441136
if form.validate_on_submit():
1145-
origin = 'ais2.uniba.sk'
1146-
if beta:
1147-
origin = 'ais2-beta.uniba.sk'
1148-
1149-
cosign_cookies = get_cosign_cookies()
1150-
ctx = create_context(cosign_cookies,
1151-
origin=origin)
1152-
# Do log in
1153-
ctx.request_html('/ais/loginCosign.do', method='POST')
1137+
ctx = create_votr_context(beta=beta)
11541138

11551139
ais2_output = None
11561140
error_output = None

0 commit comments

Comments
 (0)