Skip to content
This repository has been archived by the owner on Jun 4, 2021. It is now read-only.

Commit

Permalink
More logging
Browse files Browse the repository at this point in the history
  • Loading branch information
noirbizarre committed Oct 8, 2018
1 parent e92c3ec commit 537f17f
Show file tree
Hide file tree
Showing 3 changed files with 29 additions and 13 deletions.
3 changes: 1 addition & 2 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -1,10 +1,9 @@
# Changelog



## Current (in progress)

- Fix the "automatic login" link
- More logging

## 0.2.0

Expand Down
15 changes: 13 additions & 2 deletions udata_ldap/ldap.py
Original file line number Diff line number Diff line change
Expand Up @@ -12,11 +12,22 @@
class LDAPManager(LDAP3LoginManager):
def init_app(self, app):
super(LDAPManager, self).init_app(app)
if self.config['LDAP_DEBUG'] or self.config['TESTING']:
logging.getLogger('flask_ldap3_login').setLevel(logging.DEBUG)
self.krb_config = {}
self.init_logging(app)
self.init_kerberos(app)

def init_logging(self, app):
verbose = self.config['LDAP_DEBUG'] or self.config['TESTING']
with app.app_context():
level = logging.DEBUG if verbose else current_app.logger.level
handlers = current_app.logger.handlers
for name in 'flask_ldap3_login', 'udata_ldap':
logger = logging.getLogger(name)
logger.setLevel(level)
if not logger.handlers:
for handler in handlers:
logger.addHandler(handler)

def init_config(self, config):
# Set default before flask-ldap3 because only first dict.setdefault is remembered
for key, value in DEFAULTS.__dict__.items():
Expand Down
24 changes: 15 additions & 9 deletions udata_ldap/views.py
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@
from __future__ import unicode_literals

import base64
import logging

from flask import current_app, flash, request, Response, url_for, redirect
from flask.views import MethodView
Expand All @@ -19,7 +20,9 @@
from flask_ldap3_login import AuthenticationResponseStatus

bp = I18nBlueprint('ldap', __name__, url_prefix='/ldap',
template_folder='templates',)
template_folder='templates')

log = logging.getLogger(__name__)


@bp.before_app_request
Expand All @@ -32,7 +35,7 @@ def check_remote_user():
data = manager.get_trusted_user_infos(remote_user)
if data:
user = datastore.find_user(email=data['mail'][0])
if not user:
if user is None:
user = datastore.create_user(
active=True,
**manager.extract_user_infos(data)
Expand Down Expand Up @@ -75,8 +78,10 @@ def post(self):
result = manager.authenticate(username, password)

if result.status == AuthenticationResponseStatus.success:
if manager.config['LDAP_DEBUG']:
log.info('Found remote user %s', result.user_id)
user = datastore.find_user(email=result.user_id)
if not user:
if user is None:
user = datastore.create_user(
active=True,
**manager.extract_user_infos(result.user_info)
Expand All @@ -100,17 +105,18 @@ def negociate():
username = str(ctx._inquire(initiator_name=True).initiator_name)
data = manager.get_trusted_user_infos(username)
if data:
user = datastore.find_user(email=data['mail'][0])
if not user:
email = data['mail'][0]
if manager.config['LDAP_DEBUG']:
log.info('Found remote user %s', email)
user = datastore.find_user(email=email)
if user is None:
user = datastore.create_user(
active=True,
**manager.extract_user_infos(data)
)
login_user(user)
return redirect(url_for('site.home'))

next_url = request.args['next'] if 'next' in request.args else url_for('site.home')
return redirect(next_url)
next_url = request.args['next'] if 'next' in request.args else url_for('site.home')
return redirect(next_url)

return Response(
status=401,
Expand Down

0 comments on commit 537f17f

Please sign in to comment.