diff --git a/CHANGELOG.md b/CHANGELOG.md index 049ccaa..259f8f8 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -5,12 +5,6 @@ All notable changes to WuttJamaican will be documented in this file. The format is based on [Keep a Changelog](http://keepachangelog.com/en/1.0.0/) and this project adheres to [Semantic Versioning](http://semver.org/spec/v2.0.0.html). -## v0.8.2 (2024-07-18) - -### Fix - -- add `check_user_password()` method for auth handler - ## v0.8.1 (2024-07-17) ### Fix diff --git a/pyproject.toml b/pyproject.toml index 4d9be0b..e10c2db 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -6,7 +6,7 @@ build-backend = "hatchling.build" [project] name = "WuttJamaican" -version = "0.8.2" +version = "0.8.1" description = "Base package for Wutta Framework" readme = "README.md" authors = [{name = "Lance Edgar", email = "lance@edbob.org"}] diff --git a/src/wuttjamaican/auth.py b/src/wuttjamaican/auth.py index d9300ed..c005f94 100644 --- a/src/wuttjamaican/auth.py +++ b/src/wuttjamaican/auth.py @@ -84,30 +84,19 @@ class AuthHandler(GenericHandler): :returns: :class:`~wuttjamaican.db.model.auth.User` instance, or ``None``. """ - user = self.get_user(username, session=session) + model = self.app.model + + if isinstance(username, model.User): + user = username + else: + user = session.query(model.User)\ + .filter_by(username=username)\ + .first() + if user and user.active and user.password: - if self.check_user_password(user, password): + if password_context.verify(password, user.password): return user - def check_user_password(self, user, password, **kwargs): - """ - Check a user's password. - - This will hash the given password and compare it to the hashed - password we have on file for the given user account. - - This is normally part of the login process, so the - ``password`` param refers to the password entered by a user; - this method will determine if it was correct. - - :param user: :class:`~wuttjamaican.db.model.auth.User` instance. - - :param password: User-entered password in plain text. - - :returns: ``True`` if password matches; else ``False``. - """ - return password_context.verify(password, user.password) - def get_role(self, session, key, **kwargs): """ Locate and return a :class:`~wuttjamaican.db.model.auth.Role` diff --git a/tests/test_auth.py b/tests/test_auth.py index e8d5e15..b5b5f76 100644 --- a/tests/test_auth.py +++ b/tests/test_auth.py @@ -60,17 +60,6 @@ else: user = self.handler.authenticate_user(self.session, 'barney', 'goodpass') self.assertIsNone(user) - def test_check_user_password(self): - model = self.app.model - barney = model.User(username='barney') - self.handler.set_user_password(barney, 'goodpass') - self.session.add(barney) - self.session.commit() - - # basics - self.assertTrue(self.handler.check_user_password(barney, 'goodpass')) - self.assertFalse(self.handler.check_user_password(barney, 'BADPASS')) - def test_get_role(self): model = self.app.model myrole = model.Role(name="My Role")