diff --git a/.pylintrc b/.pylintrc index 6a126ef664291b7cb47f090fba4fd14f6ee10137..9ee4f54861cefc3417ffbcbe7af2910a92cad1c3 100644 --- a/.pylintrc +++ b/.pylintrc @@ -143,8 +143,9 @@ disable=missing-module-docstring, deprecated-sys-function, exception-escape, comprehension-escape, - too-few-public-methods, - method-hidden + too-few-public-methods, + method-hidden, + bad-continuation, # Enable the message, report, category or checker with the given id(s). You can # either give multiple identifier separated by comma (,) or put this option diff --git a/uffd/__init__.py b/uffd/__init__.py index 0f071fb907513a30a589e9e0f11d93709655b79b..7dfe0dcfc3a7050c13a135db3490bd43f343bfe0 100644 --- a/uffd/__init__.py +++ b/uffd/__init__.py @@ -48,7 +48,7 @@ def create_app(test_config=None): app.register_blueprint(i) @app.route("/") - def index(): + def index(): #pylint: disable=unused-variable return redirect(url_for('selfservice.self_index')) return app diff --git a/uffd/ldap/ldap.py b/uffd/ldap/ldap.py index 341e410ccb2d635893c65d498c39755b05a092f6..e1ddaf191d623398d03f580f36f3a607d1b822db 100644 --- a/uffd/ldap/ldap.py +++ b/uffd/ldap/ldap.py @@ -1,4 +1,4 @@ -from flask import Blueprint, request, session, current_app +from flask import Blueprint, current_app from ldap3.utils.conv import escape_filter_chars from ldap3.utils.dn import escape_rdn from ldap3.core.exceptions import LDAPBindError @@ -35,8 +35,7 @@ def uid_to_dn(uid): conn.search(current_app.config["LDAP_BASE_USER"], '(&(objectclass=person)(uidNumber={}))'.format(escape_filter_chars(uid))) if not len(conn.entries) == 1: return None - else: - return conn.entries[0].entry_dn + return conn.entries[0].entry_dn def loginname_to_dn(loginname): return 'uid={},{}'.format(escape_rdn(loginname), current_app.config["LDAP_BASE_USER"]) @@ -55,5 +54,4 @@ def get_next_uid(): next_uid = max_uid + 1 if uid_to_dn(next_uid): raise Exception('No free uid found') - else: - return next_uid + return next_uid diff --git a/uffd/selfservice/models.py b/uffd/selfservice/models.py index db19c520385bdb7840c0ea18051bd1cd96381181..505c7f982fba8cda1b213af7584abb7bbee891b4 100644 --- a/uffd/selfservice/models.py +++ b/uffd/selfservice/models.py @@ -1,7 +1,7 @@ import datetime import secrets -from sqlalchemy import Column, Integer, String, Text, LargeBinary, DateTime, Boolean, ForeignKey +from sqlalchemy import Column, String, DateTime from uffd.database import db diff --git a/uffd/selfservice/views.py b/uffd/selfservice/views.py index 04908696e9dfd9a298a61275a538fc635fe7b5fd..0ef6f8a0bd68ed29ccee388347bf0c35fa865691 100644 --- a/uffd/selfservice/views.py +++ b/uffd/selfservice/views.py @@ -7,9 +7,9 @@ from flask import Blueprint, render_template, request, url_for, redirect, flash, from uffd.navbar import register_navbar from uffd.csrf import csrf_protect -from uffd.user.models import User, Group +from uffd.user.models import User from uffd.session import get_current_user, login_required, is_valid_session -from uffd.ldap import get_conn, escape_filter_chars, loginname_to_dn +from uffd.ldap import loginname_to_dn from uffd.selfservice.models import PasswordToken, MailToken from uffd.database import db @@ -72,22 +72,21 @@ def self_token_password(token): if not 'loginname' in request.values: flash('Please set a new password.') return render_template('set_password.html', token=token) - else: - if not request.values['loginname'] == dbtoken.loginname: - flash('That is not the correct login name for this token. Your token is now invalide. Please start the password reset process again') - session.delete(dbtoken) - session.commit() - return redirect(url_for('session.login')) - if not request.values['password1']: - flash('Please specify a new password.') - return render_template('set_password.html', token=token) - user = User.from_ldap_dn(loginname_to_dn(dbtoken.loginname)) - user.set_password(request.values['password1']) - user.to_ldap() - flash('New password set') + if not request.values['loginname'] == dbtoken.loginname: + flash('That is not the correct login name for this token. Your token is now invalide. Please start the password reset process again') session.delete(dbtoken) session.commit() return redirect(url_for('session.login')) + if not request.values['password1']: + flash('Please specify a new password.') + return render_template('set_password.html', token=token) + user = User.from_ldap_dn(loginname_to_dn(dbtoken.loginname)) + user.set_password(request.values['password1']) + user.to_ldap() + flash('New password set') + session.delete(dbtoken) + session.commit() + return redirect(url_for('session.login')) @bp.route("/token/mail_verification/<token>") @login_required() @@ -144,12 +143,12 @@ def send_passwordreset(loginname): msg['Subject'] = 'Password reset' send_mail(user.mail, msg) -def send_mail(to, msg): +def send_mail(to_address, msg): server = smtplib.SMTP(host=current_app.config['MAIL_SERVER'], port=current_app.config['MAIL_PORT']) if current_app.config['MAIL_USE_STARTTLS']: server.starttls() server.login(current_app.config['MAIL_USERNAME'], current_app.config['MAIL_PASSWORD']) msg['From'] = current_app.config['MAIL_FROM_ADDRESS'] - msg['To'] = to + msg['To'] = to_address server.send_message(msg) server.quit() diff --git a/uffd/session/views.py b/uffd/session/views.py index d0a06fdd2c98321be2b7d4d9153e66d2e2856898..ba20dc748d227c26e3edc2bb4c5ce374301cbbd6 100644 --- a/uffd/session/views.py +++ b/uffd/session/views.py @@ -1,14 +1,11 @@ import datetime import secrets -import string import functools from flask import Blueprint, render_template, request, url_for, redirect, flash, current_app, session -from uffd.navbar import register_navbar -from uffd.csrf import csrf_protect from uffd.user.models import User -from uffd.ldap import get_conn, user_conn, uid_to_dn +from uffd.ldap import user_conn, uid_to_dn bp = Blueprint("session", __name__, template_folder='templates', url_prefix='/') diff --git a/uffd/user/models.py b/uffd/user/models.py index f00dffaa393cea0b7b21afb8e78b78cb9bb60b92..a906fe2b647479f7c3519ee6114b25022963d632 100644 --- a/uffd/user/models.py +++ b/uffd/user/models.py @@ -44,7 +44,7 @@ class User(): def to_ldap(self, new=False): conn = ldap.get_conn() if new: - attributes= { + attributes = { 'uidNumber': ldap.get_next_uid(), 'gidNumber': current_app.config['LDAP_USER_GID'], 'homeDirectory': '/home/'+self.loginname, diff --git a/uffd/user/views.py b/uffd/user/views.py index 8421e59fb3877d3df2a2fa2cfb0152788579587e..4906cdbbfae5bd6922703322e92f82b40e22019b 100644 --- a/uffd/user/views.py +++ b/uffd/user/views.py @@ -10,7 +10,7 @@ from .models import User, Group bp_user = Blueprint("user", __name__, template_folder='templates', url_prefix='/user/') @bp_user.before_request @login_required() -def user_acl(): +def user_acl(): #pylint: disable=inconsistent-return-statements if not user_acl_check(): flash('Access denied') return redirect(url_for('index')) @@ -56,11 +56,11 @@ def user_update(uid=False): user = User() if not user.set_loginname(request.form['loginname']): flash('Login name does not meet requirements') - return(url_for('.user_show')) + return url_for('.user_show') user.mail = request.form['mail'] if not user.set_displayname(request.form['displayname']): flash('Display name does not meet requirements') - return(url_for('.user_show')) + return url_for('.user_show') new_password = request.form.get('password') if new_password: user.set_password(new_password) @@ -85,7 +85,7 @@ def user_delete(uid): bp_group = Blueprint("group", __name__, template_folder='templates', url_prefix='/group/') @bp_group.before_request @login_required() -def group_acl(): +def group_acl(): #pylint: disable=inconsistent-return-statements if not user_acl_check(): flash('Access denied') return redirect(url_for('index'))