summary refs log tree commit diff
path: root/synapse/handlers
diff options
context:
space:
mode:
authorSteven Hammerton <steven.hammerton@openmarket.com>2015-10-07 14:45:57 +0100
committerSteven Hammerton <steven.hammerton@openmarket.com>2015-10-10 10:49:42 +0100
commitc33f5c1a2414632f21183f41ecd4aef00e46a437 (patch)
treeb0c395864e3eeaa5deb6b4f7b2d677b23e3f2f5f /synapse/handlers
parentMerge pull request #294 from matrix-org/markjh/initial_sync_archived_flag (diff)
downloadsynapse-c33f5c1a2414632f21183f41ecd4aef00e46a437.tar.xz
Provide ability to login using CAS
Diffstat (limited to 'synapse/handlers')
-rw-r--r--synapse/handlers/auth.py31
1 files changed, 31 insertions, 0 deletions
diff --git a/synapse/handlers/auth.py b/synapse/handlers/auth.py
index 793b3fcd8b..0ad28c4948 100644
--- a/synapse/handlers/auth.py
+++ b/synapse/handlers/auth.py
@@ -296,6 +296,37 @@ class AuthHandler(BaseHandler):
         defer.returnValue((user_id, access_token, refresh_token))
 
     @defer.inlineCallbacks
+    def login_with_cas_user_id(self, user_id):
+        """
+        Authenticates the user with the given user ID, intended to have been captured from a CAS response
+
+        Args:
+            user_id (str): User ID
+        Returns:
+            A tuple of:
+              The user's ID.
+              The access token for the user's session.
+              The refresh token for the user's session.
+        Raises:
+            StoreError if there was a problem storing the token.
+            LoginError if there was an authentication problem.
+        """
+        user_id, ignored = yield self._find_user_id_and_pwd_hash(user_id)
+
+        logger.info("Logging in user %s", user_id)
+        access_token = yield self.issue_access_token(user_id)
+        refresh_token = yield self.issue_refresh_token(user_id)
+        defer.returnValue((user_id, access_token, refresh_token))
+
+    @defer.inlineCallbacks
+    def does_user_exist(self, user_id):
+        try:
+            yield self._find_user_id_and_pwd_hash(user_id)
+            defer.returnValue(True)
+        except LoginError:
+            defer.returnValue(False)
+
+    @defer.inlineCallbacks
     def _find_user_id_and_pwd_hash(self, user_id):
         """Checks to see if a user with the given id exists. Will check case
         insensitively, but will throw if there are multiple inexact matches.