1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950 |
- # coding: utf8
- from tracim_backend.exceptions import DigestAuthNotImplemented
- from tracim_backend.lib.core.user import UserApi
-
- DEFAULT_TRACIM_WEBDAV_REALM = '/'
-
-
- class TracimDomainController(object):
- """
- The domain controller is used by http_authenticator to authenticate the user every time a request is
- sent
- """
- def __init__(self, app_config, presetdomain=None, presetserver=None):
- self.app_config = app_config
-
- def getDomainRealm(self, inputURL, environ):
- return DEFAULT_TRACIM_WEBDAV_REALM
-
- def getRealmUserPassword(self, realmname, username, environ):
- """
- This method is normally only use for digest auth. wsgidav need
- plain password to deal with it. as we didn't
- provide support for this kind of auth, this method raise an exception.
- """
- raise DigestAuthNotImplemented
-
- def requireAuthentication(self, realmname, environ):
- return True
-
- def isRealmUser(self, realmname, username, environ):
- """
- Called to check if for a given root, the username exists (though here we don't make difference between
- root as we're always starting at tracim's root
- """
- api = UserApi(None, environ['tracim_dbsession'], self.app_config)
- try:
- api.get_one_by_email(username)
- return True
- except:
- return False
-
- def authDomainUser(self, realmname, username, password, environ):
- """
- If you ever feel the need to send a request al-mano with a curl, this is the function that'll be called by
- http_authenticator to validate the password sent
- """
- api = UserApi(None, environ['tracim_dbsession'], self.app_config)
- return self.isRealmUser(realmname, username, environ) and \
- api.get_one_by_email(username).validate_password(password)
|