Fixed auth. Some cleanup
This commit is contained in:
parent
b4505de253
commit
5bfa305c41
|
@ -50,8 +50,8 @@ def _login():
|
|||
token = access_controller.create(user, user_agent=request.user_agent)
|
||||
logger.debug("access token is {{ {} }}".format(token))
|
||||
logger.debug("validate access token")
|
||||
dic = user.toJSON()
|
||||
dic["accessToken"] = token
|
||||
dic = user.default()
|
||||
dic["accessToken"] = token.token
|
||||
logger.info("User {{ {} }} success login.".format(username))
|
||||
logger.debug("return login {{ {} }}".format(dic))
|
||||
return jsonify(dic)
|
||||
|
|
|
@ -110,17 +110,17 @@ class AuthLDAP(modules.Auth):
|
|||
attributes=['uid', 'givenName', 'sn', 'mail'])
|
||||
r = self.ldap.connection.response[0]['attributes']
|
||||
if r['uid'][0] == user.uid:
|
||||
user.setAttribute('DN', self.ldap.connection.response[0]['dn'])
|
||||
user.set_attribute('DN', self.ldap.connection.response[0]['dn'])
|
||||
user.firstname = r['givenName'][0]
|
||||
user.lastname = r['sn'][0]
|
||||
if r['mail']:
|
||||
user.mail = r['mail'][0]
|
||||
if 'displayName' in r:
|
||||
user.displayname = r['displayName'][0]
|
||||
for group in self._getGroups(user.uid):
|
||||
user.addGroup(group)
|
||||
user.display_name = r['displayName'][0]
|
||||
for group in self._get_groups(user.uid):
|
||||
user.add_group(group)
|
||||
|
||||
def _getGroups(self, uid):
|
||||
def _get_groups(self, uid):
|
||||
try:
|
||||
groups = []
|
||||
|
||||
|
@ -141,7 +141,7 @@ class AuthLDAP(modules.Auth):
|
|||
groups.append(data['attributes']['cn'][0])
|
||||
return groups
|
||||
except Exception as err:
|
||||
debug.warning("exception in get groups from ldap", exc_info=True)
|
||||
logger.warning("exception in get groups from ldap", exc_info=True)
|
||||
return []
|
||||
|
||||
# def getAllUser(self):
|
||||
|
|
|
@ -10,18 +10,18 @@ class AuthPlain(modules.Auth):
|
|||
if not user:
|
||||
return False
|
||||
if 'password' in user.attributes:
|
||||
return self.__verify_password(user.attributes['password'].value, password)
|
||||
return self._verify_password(user.attributes['password'].value, password)
|
||||
return False
|
||||
|
||||
def __hash_password(self, password):
|
||||
def _hash_password(self, password):
|
||||
salt = hashlib.sha256(os.urandom(60)).hexdigest().encode('ascii')
|
||||
pwdhash = hashlib.pbkdf2_hmac('sha3-512', password.encode('utf-8'), salt, 100000)
|
||||
pwdhash = binascii.hexlify(pwdhash)
|
||||
return (salt + pwdhash).decode('ascii')
|
||||
pass_hash = hashlib.pbkdf2_hmac('sha3-512', password.encode('utf-8'), salt, 100000)
|
||||
pass_hash = binascii.hexlify(pass_hash)
|
||||
return (salt + pass_hash).decode('ascii')
|
||||
|
||||
def __verify_password(self, stored_password, provided_password):
|
||||
def _verify_password(self, stored_password, provided_password):
|
||||
salt = stored_password[:64]
|
||||
stored_password = stored_password[64:]
|
||||
pwdhash = hashlib.pbkdf2_hmac('sha3-512', provided_password.encode('utf-8'), salt.encode('ascii'), 100000)
|
||||
pwdhash = binascii.hexlify(pwdhash).decode('ascii')
|
||||
return pwdhash == stored_password
|
||||
pass_hash = hashlib.pbkdf2_hmac('sha3-512', provided_password.encode('utf-8'), salt.encode('ascii'), 100000)
|
||||
pass_hash = binascii.hexlify(pass_hash).decode('ascii')
|
||||
return pass_hash == stored_password
|
||||
|
|
|
@ -65,7 +65,7 @@ class AccessTokenController(metaclass=Singleton):
|
|||
return True
|
||||
return False
|
||||
|
||||
def create(self, user, user_agent=None):
|
||||
def create(self, user, user_agent=None) -> AccessToken:
|
||||
""" Create an AccessToken
|
||||
|
||||
Create an AccessToken for an User and add it to the tokenList.
|
||||
|
@ -75,7 +75,7 @@ class AccessTokenController(metaclass=Singleton):
|
|||
user_agent: User agent to identify session
|
||||
|
||||
Returns:
|
||||
A created Token for User
|
||||
AccessToken: A created Token for User
|
||||
"""
|
||||
logger.debug("create access token")
|
||||
token_str = secrets.token_hex(16)
|
||||
|
|
|
@ -5,6 +5,7 @@ from flaschengeist.system.models.user import User
|
|||
from flaschengeist.system.database import db
|
||||
from flaschengeist import logger
|
||||
|
||||
|
||||
class Base:
|
||||
def loginUser(self, username, password):
|
||||
logger.info("login user {{ {} }}".format(username))
|
||||
|
|
|
@ -33,7 +33,7 @@ class AccessToken(db.Model):
|
|||
logger.debug("update timestamp from access token {{ {} }}".format(self))
|
||||
self.timestamp = datetime.utcnow()
|
||||
|
||||
def toJSON(self):
|
||||
def default(self):
|
||||
""" Create Dic to dump in JSON
|
||||
|
||||
Returns:
|
||||
|
|
|
@ -61,7 +61,7 @@ class User(db.Model):
|
|||
if 'display_name' in data:
|
||||
self.display_name = data['display_name']
|
||||
|
||||
def toJSON(self):
|
||||
def default(self):
|
||||
return {
|
||||
# TODO: username should be UID?
|
||||
"username": self.uid,
|
||||
|
|
Loading…
Reference in New Issue