aboutsummaryrefslogtreecommitdiff
path: root/mu4web/user
diff options
context:
space:
mode:
authorHugo Hörnquist <hugo@lysator.liu.se>2022-11-30 04:39:50 +0100
committerHugo Hörnquist <hugo@lysator.liu.se>2022-11-30 04:39:50 +0100
commit1b9fb005faa6087f6b39da0bf7b634324081e890 (patch)
treeed2c6c96858f1d7487bb773c305ec3396356894e /mu4web/user
parentFix crash on invalid username. (diff)
downloadmu4web-1b9fb005faa6087f6b39da0bf7b634324081e890.tar.gz
mu4web-1b9fb005faa6087f6b39da0bf7b634324081e890.tar.xz
Work.
Diffstat (limited to 'mu4web/user')
-rw-r--r--mu4web/user/__init__.py26
-rw-r--r--mu4web/user/local.py11
-rw-r--r--mu4web/user/pam.py6
3 files changed, 43 insertions, 0 deletions
diff --git a/mu4web/user/__init__.py b/mu4web/user/__init__.py
new file mode 100644
index 0000000..490bcee
--- /dev/null
+++ b/mu4web/user/__init__.py
@@ -0,0 +1,26 @@
+import os
+
+
+class User:
+ def __init__(self, username: str):
+ self._username = username
+ self._authenticated = False
+
+ # @property
+ def is_authenticated(self):
+ return self._authenticated
+
+ # @property
+ def is_active(self):
+ return True
+
+ # @property
+ def is_anonymous(self):
+ return False
+
+ # @property
+ def get_id(self):
+ return self._username
+
+ def validate(self, password: str) -> bool:
+ ...
diff --git a/mu4web/user/local.py b/mu4web/user/local.py
new file mode 100644
index 0000000..c4485ce
--- /dev/null
+++ b/mu4web/user/local.py
@@ -0,0 +1,11 @@
+import password
+from password import Passwords
+from typing import cast
+import os
+from . import User
+
+passwords: Passwords = password.Passwords(cast(os.PathLike, 'passwords.json'))
+
+class LocalUser(User):
+ def validate(self, password: str) -> bool:
+ return passwords.validate(self._username, password)
diff --git a/mu4web/user/pam.py b/mu4web/user/pam.py
new file mode 100644
index 0000000..7942f3b
--- /dev/null
+++ b/mu4web/user/pam.py
@@ -0,0 +1,6 @@
+from . import User
+import pam
+
+class PamUser(User):
+ def validate(self, password):
+ return pam.authenticate(self._username, password)