Added basic HS auth.
parent
783b3b8166
commit
aab5b5536b
|
@ -7,6 +7,7 @@ from flask.ext.principal import Identity
|
||||||
import hashlib
|
import hashlib
|
||||||
import os
|
import os
|
||||||
import yaml
|
import yaml
|
||||||
|
import requests
|
||||||
|
|
||||||
from octoprint.settings import settings
|
from octoprint.settings import settings
|
||||||
|
|
||||||
|
@ -44,6 +45,19 @@ class UserManager(object):
|
||||||
def getAllUsers(self):
|
def getAllUsers(self):
|
||||||
return []
|
return []
|
||||||
|
|
||||||
|
|
||||||
|
class HackerspaceUserManager(UserManager):
|
||||||
|
"""A user manager for the Warsaw Hackerspace, uses interal apis."""
|
||||||
|
def __init__(self):
|
||||||
|
super(HackerspaceUserManager, self).__init__(self)
|
||||||
|
self.group = settings().get(["accessControl", "group"])
|
||||||
|
|
||||||
|
def findUser(self, username=None):
|
||||||
|
if requests.get("https://capacifier.hackerspace.pl/{}/{}".format(self.group, username)).status_code == 200:
|
||||||
|
return HackerspaceUser(username)
|
||||||
|
else
|
||||||
|
return None
|
||||||
|
|
||||||
##~~ FilebasedUserManager, takes available users from users.yaml file
|
##~~ FilebasedUserManager, takes available users from users.yaml file
|
||||||
|
|
||||||
class FilebasedUserManager(UserManager):
|
class FilebasedUserManager(UserManager):
|
||||||
|
@ -218,6 +232,22 @@ class User(UserMixin):
|
||||||
def is_admin(self):
|
def is_admin(self):
|
||||||
return "admin" in self._roles
|
return "admin" in self._roles
|
||||||
|
|
||||||
|
class HackerspaceUser(User):
|
||||||
|
def __init__(self, username):
|
||||||
|
self._username = username
|
||||||
|
self._active = True
|
||||||
|
self._roles = ["user"]
|
||||||
|
if requests.get("https://capacifier.hackerspace.pl/staff/{}".format(username)).status_code == 200:
|
||||||
|
self._roles.append("admin")
|
||||||
|
|
||||||
|
def check_password(self, password):
|
||||||
|
data = {
|
||||||
|
"login": self._username,
|
||||||
|
"password": password,
|
||||||
|
}
|
||||||
|
return requests.post("https://auth.hackerspace.pl/", data).status_code == 200
|
||||||
|
|
||||||
|
|
||||||
##~~ DummyUser object to use when accessControl is disabled
|
##~~ DummyUser object to use when accessControl is disabled
|
||||||
|
|
||||||
class DummyUser(User):
|
class DummyUser(User):
|
||||||
|
|
Loading…
Reference in New Issue