fix(api): CAS authentication

This commit is contained in:
pycook 2023-12-20 12:10:00 +08:00
parent f1f86ce25a
commit 6eb8ae1dac
1 changed files with 9 additions and 1 deletions

View File

@ -11,6 +11,7 @@ from flask import session
from flask import url_for from flask import url_for
from flask_login import login_user from flask_login import login_user
from flask_login import logout_user from flask_login import logout_user
from six.moves.urllib.parse import urlparse
from six.moves.urllib_request import urlopen from six.moves.urllib_request import urlopen
from api.lib.common_setting.common_data import AuthenticateDataCRUD from api.lib.common_setting.common_data import AuthenticateDataCRUD
@ -45,7 +46,11 @@ def login():
if request.values.get("next"): if request.values.get("next"):
session["next"] = request.values.get("next") session["next"] = request.values.get("next")
_service = url_for('cas.login', _external=True) # _service = url_for('cas.login', _external=True)
_service = "{}://{}{}".format(urlparse(request.referrer).scheme,
urlparse(request.referrer).netloc,
url_for('cas.login'))
redirect_url = create_cas_login_url( redirect_url = create_cas_login_url(
config['cas_server'], config['cas_server'],
config['cas_login_route'], config['cas_login_route'],
@ -161,6 +166,9 @@ def validate(ticket):
v = soup.find(cas_user_map[k]['tag'], cas_user_map[k].get('attrs', {})) v = soup.find(cas_user_map[k]['tag'], cas_user_map[k].get('attrs', {}))
user_dict[k] = v and v.text or None user_dict[k] = v and v.text or None
user_dict['password'] = uuid.uuid4().hex user_dict['password'] = uuid.uuid4().hex
if "email" not in user_dict:
user_dict['email'] = username
UserCRUD.add(**user_dict) UserCRUD.add(**user_dict)
from api.lib.perm.acl.acl import ACLManager from api.lib.perm.acl.acl import ACLManager