Git based wiki inspired by Gollum
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

57 lines
1.2KB

  1. from __future__ import absolute_import
  2. from flask import render_template
  3. from flask_login import login_user
  4. from flask_ldap_login import LDAPLoginForm
  5. from realms import ldap
  6. from realms.modules.auth.models import BaseUser
  7. users = {}
  8. @ldap.save_user
  9. def save_user(username, userdata):
  10. user = User(username, userdata.get('email'))
  11. users[user.id] = user
  12. return user
  13. class User(BaseUser):
  14. type = 'ldap'
  15. def __init__(self, username, email='null@localhost.local', password=None):
  16. self.id = username
  17. self.username = username
  18. self.email = email
  19. self.password = password
  20. @property
  21. def auth_token_id(self):
  22. return self.password
  23. @staticmethod
  24. def load_user(*args, **kwargs):
  25. return User.get_by_id(args[0])
  26. @staticmethod
  27. def get_by_id(user_id):
  28. return users.get(user_id)
  29. @staticmethod
  30. def login_form():
  31. return render_template('auth/ldap/login.html', form=LDAPLoginForm())
  32. @staticmethod
  33. def auth(user, password):
  34. password = User.hash_password(password)
  35. user.password = password
  36. users[user.id] = user
  37. if user:
  38. login_user(user, remember=True)
  39. return True
  40. else:
  41. return False