示例#1
0
 def user_login(self, user):
     """
     Called immediately after a user authenticates successfully.  Saves
     session information in the user's directory.  Expects *user* to be a
     dict containing a 'upn' value representing the username or
     userPrincipalName. e.g. 'user@REALM' or just 'someuser'.  Any additional
     values will be attached to the user object/cookie.
     """
     logging.debug("user_login(%s)" % user['upn'])
     user.update(additional_attributes(user))
     # Make a directory to store this user's settings/files/logs/etc
     user_dir = os.path.join(self.settings['user_dir'], user['upn'])
     if not os.path.exists(user_dir):
         logging.info(_("Creating user directory: %s" % user_dir))
         mkdir_p(user_dir)
         os.chmod(user_dir, 0o700)
     session_file = os.path.join(user_dir, 'session')
     session_file_exists = os.path.exists(session_file)
     if session_file_exists:
         session_data = open(session_file).read()
         try:
             session_info = tornado.escape.json_decode(session_data)
         except ValueError: # Something wrong with the file
             session_file_exists = False # Overwrite it below
     if not session_file_exists:
         with open(session_file, 'w') as f:
             # Save it so we can keep track across multiple clients
             session_info = {
                 'session': generate_session_id(),
             }
             session_info.update(user)
             session_info_json = tornado.escape.json_encode(session_info)
             f.write(session_info_json)
     self.set_secure_cookie(
         "gateone_user", tornado.escape.json_encode(session_info))
示例#2
0
 def user_login(self, user):
     """
     Called immediately after a user authenticates successfully.  Saves
     session information in the user's directory.  Expects *user* to be a
     dict containing a 'upn' value representing the username or
     userPrincipalName. e.g. 'user@REALM' or just 'someuser'.
     Any additional values will be attached to the user object/cookie.
     """
     logging.debug("user_login(%s)" % user['upn'])
     user.update(additional_attributes(user))
     # Make a directory to store this user's settings/files/logs/etc
     try:
         # NOTE: These bytes checks are for Python 2
         # (not needed in Python 3)
         upn = user['upn']
         if isinstance(user['upn'], bytes):
             upn = user['upn'].decode('utf-8')
         user_dir = os.path.join(self.settings['user_dir'], upn)
         if isinstance(user_dir, bytes):
             user_dir = user_dir.decode('utf-8')
         if not os.path.exists(user_dir):
             logging.info(_("Creating user directory: %s" % user_dir))
             mkdir_p(user_dir)
             os.chmod(user_dir, 0o700)
     except UnicodeEncodeError:
         logging.error(
             _("You're trying to use non-ASCII user information on a system "
               "that has the locale set to ASCII (or similar).  Please change"
               "your system's locale to something that supports Unicode "
               "characters. "))
         return
     session_file = os.path.join(user_dir, 'session')
     session_file_exists = os.path.exists(session_file)
     if session_file_exists:
         session_data = open(session_file).read()
         try:
             session_info = tornado.escape.json_decode(session_data)
         except ValueError:
             # Something wrong with the file, overwrite it below
             session_file_exists = False
     if not session_file_exists:
         with open(session_file, 'w') as f:
             # Save it so we can keep track across multiple clients
             session_info = {
                 'session': generate_session_id(),
             }
             session_info.update(user)
             session_info_json = tornado.escape.json_encode(session_info)
             f.write(session_info_json)
     self.set_secure_cookie("gateone_user",
                            tornado.escape.json_encode(session_info))
示例#3
0
 def user_login(self, user):
     """
     Called immediately after a user authenticates successfully.  Saves
     session information in the user's directory.  Expects *user* to be a
     dict containing a 'upn' value representing the username or
     userPrincipalName. e.g. 'user@REALM' or just 'someuser'.  Any additional
     values will be attached to the user object/cookie.
     """
     logging.debug("user_login(%s)" % user['upn'])
     user.update(additional_attributes(user))
     # Make a directory to store this user's settings/files/logs/etc
     try:
         # NOTE: These bytes checks are for Python 2 (not needed in Python 3)
         upn = user['upn']
         if isinstance(user['upn'], bytes):
             upn = user['upn'].decode('utf-8')
         user_dir = os.path.join(self.settings['user_dir'], upn)
         if isinstance(user_dir, bytes):
             user_dir = user_dir.decode('utf-8')
         if not os.path.exists(user_dir):
             logging.info(_("Creating user directory: %s" % user_dir))
             mkdir_p(user_dir)
             os.chmod(user_dir, 0o700)
     except UnicodeEncodeError:
         logging.error(_(
             "You're trying to use non-ASCII user information on a system "
             "that has the locale set to ASCII (or similar).  Please change"
             "your system's locale to something that supports Unicode "
             "characters. "))
         return
     session_file = os.path.join(user_dir, 'session')
     session_file_exists = os.path.exists(session_file)
     if session_file_exists:
         session_data = open(session_file).read()
         try:
             session_info = tornado.escape.json_decode(session_data)
         except ValueError: # Something wrong with the file
             session_file_exists = False # Overwrite it below
     if not session_file_exists:
         with open(session_file, 'w') as f:
             # Save it so we can keep track across multiple clients
             session_info = {
                 'session': generate_session_id(),
             }
             session_info.update(user)
             session_info_json = tornado.escape.json_encode(session_info)
             f.write(session_info_json)
     self.set_secure_cookie(
         "gateone_user", tornado.escape.json_encode(session_info))
示例#4
0
 def user_login(self, user):
     """
     This is an override of BaseAuthHandler since anonymous auth is special.
     Generates a unique session ID for this user and saves it in a browser
     cookie.  This is to ensure that anonymous users can't access each
     other's sessions.
     """
     logging.debug("NullAuthHandler.user_login(%s)" % user["upn"])
     # Make a directory to store this user's settings/files/logs/etc
     user_dir = os.path.join(self.settings["user_dir"], user["upn"])
     if not os.path.exists(user_dir):
         logging.info(_("Creating user directory: %s" % user_dir))
         mkdir_p(user_dir)
         os.chmod(user_dir, 0o700)
     session_info = {"session": generate_session_id()}
     session_info.update(user)
     self.set_secure_cookie("gateone_user", tornado.escape.json_encode(session_info))
 def user_login(self, user):
     """
     This is an override of BaseAuthHandler since anonymous auth is special.
     Generates a unique session ID for this user and saves it in a browser
     cookie.  This is to ensure that anonymous users can't access each
     other's sessions.
     """
     logging.debug("NullAuthHandler.user_login(%s)" % user['upn'])
     # Make a directory to store this user's settings/files/logs/etc
     user_dir = os.path.join(self.settings['user_dir'], user['upn'])
     if not os.path.exists(user_dir):
         logging.info(_("Creating user directory: %s" % user_dir))
         mkdir_p(user_dir)
         os.chmod(user_dir, 0o700)
     session_info = {'session': generate_session_id()}
     session_info.update(user)
     self.set_secure_cookie("gateone_user",
                            tornado.escape.json_encode(session_info))