示例#1
0
    def change_password(self, cur_password, new_password):
        if self.username is None:
            self.send_message(
                "change_password_fail",
                reason="You need to log in to change your password.")
            return

        if not userdb.user_passwd_match(self.username, cur_password):
            self.send_message("change_password_fail",
                              reason="Your password didn't match.")
            self.logger.info(
                "Non-matching current password during password change for %s",
                self.username)
            return

        error = userdb.change_password(self.user_id, new_password)
        if error is None:
            self.user_id, self.user_email, self.user_flags = userdb.get_user_info(
                self.username)
            self.logger.info("User %s changed password.", self.username)
            self.send_message("change_password_done")
        else:
            self.logger.info("Failed to change username for %s: %s",
                             self.username, error)
            self.send_message("change_password_fail", reason=error)
示例#2
0
    def do_login(self, username):
        self.username = username
        self.user_id, self.user_email, self.user_flags = userdb.get_user_info(
            username)
        self.logger.extra["username"] = username

        def login_callback(result):
            success = result == 0
            if not success:
                msg = ("Could not initialize your rc and morgue!<br>" +
                       "This probably means there is something wrong " +
                       "with the server configuration.")
                self.send_message("close", reason=msg)
                self.logger.warning(
                    "User initialization returned an error for user %s!",
                    self.username)
                self.username = None
                self.close()
                return

            self.queue_message("login_success",
                               username=username,
                               admin=self.is_admin())
            if self.watched_game:
                self.watched_game.update_watcher_description()
            else:
                self.send_lobby_html()

        self.init_user(login_callback)
示例#3
0
 def change_email(self, email):
     if self.username is None:
         self.send_message("change_email_fail", reason = "You need to log in to change your email")
         return
     error = userdb.change_email(self.user_id, email)
     if error is None:
         self.user_id, self.user_email, self.user_flags = userdb.get_user_info(self.username)
         self.logger.info("User %s changed email to %s.", self.username, email if email else "null")
         self.send_message("change_email_done", email = email)
     else:
         self.logger.info("Failed to change username for %s: %s", self.username, error)
         self.send_message("change_email_fail", reason = error)
示例#4
0
文件: ws_handler.py 项目: crawl/crawl
 def change_email(self, email):
     if self.username is None:
         self.send_message("change_email_fail", reason = "You need to log in to change your email")
         return
     error = userdb.change_email(self.user_id, email)
     if error is None:
         self.user_id, self.user_email = userdb.get_user_info(self.username)
         self.logger.info("User %s changed email to %s.", self.username, email if email else "null")
         self.send_message("change_email_done", email = email)
     else:
         self.logger.info("Failed to change username for %s: %s", self.username, error)
         self.send_message("change_email_fail", reason = error)
示例#5
0
 def admin_pw_reset(self, username):
     user_info = userdb.get_user_info(username)
     if not user_info:
         self.send_message("admin_pw_reset_done", error="Invalid user")
         return
     ok, msg = userdb.generate_forgot_password(username)
     if not ok:
         self.send_message("admin_pw_reset_done", error=msg)
     else:
         self.logger.info(
             "Admin user '%s' set a password token on account '%s'",
             self.username, username)
         self.send_message("admin_pw_reset_done",
                           email_body=msg,
                           username=username,
                           email=user_info[1])
示例#6
0
文件: ws_handler.py 项目: crawl/crawl
 def do_login(self, username):
     self.username = username
     self.user_id, self.user_email = userdb.get_user_info(username)
     self.logger.extra["username"] = username
     if not self.init_user():
         msg = ("Could not initialize your rc and morgue!<br>" +
                "This probably means there is something wrong " +
                "with the server configuration.")
         self.send_message("close", reason = msg)
         self.logger.warning("User initialization returned an error for user %s!",
                             self.username)
         self.username = None
         self.close()
         return
     self.queue_message("login_success", username = username)
     if self.watched_game:
         self.watched_game.update_watcher_description()
     else:
         self.send_game_links()
示例#7
0
 def do_login(self, username):
     self.username = username
     self.user_id, self.user_email = userdb.get_user_info(username)
     self.logger.extra["username"] = username
     if not self.init_user():
         msg = ("Could not initialize your rc and morgue!<br>" +
                "This probably means there is something wrong " +
                "with the server configuration.")
         self.send_message("close", reason=msg)
         self.logger.warning(
             "User initialization returned an error for user %s!",
             self.username)
         self.username = None
         self.close()
         return
     self.queue_message("login_success", username=username)
     if self.watched_game:
         self.watched_game.update_watcher_description()
     else:
         self.send_game_links()
示例#8
0
def reset_token_commands(args):
    if args.clear_reset_password:
        username = args.clear_reset_password
    else:
        username = args.reset_password

    # duplicate some minimal setup needed for this to work
    config.logging_config.pop('filename', None)
    args.logfile = "<stdout>"  # make the log message easier to read

    init_logging(config.logging_config)

    if not check_config():
        err_exit("Errors in config. Exiting.")
    if config.dgl_mode:
        userdb.ensure_user_db_exists()
        userdb.upgrade_user_db()
    userdb.ensure_settings_db_exists()
    user_info = userdb.get_user_info(username)
    if not user_info:
        err_exit("Reset/clear password failed; invalid user: %s" % username)

    # don't crash on the default config
    if config.lobby_url is None:
        config.lobby_url = "[insert lobby url here]"

    if args.clear_reset_password:
        ok, msg = userdb.clear_password_token(username)
        if not ok:
            err_exit("Error clearing password reset token for %s: %s" % (username, msg))
        else:
            print("Password reset token cleared for account '%s'." % username)
    else:
        ok, msg = userdb.generate_forgot_password(username)
        if not ok:
            err_exit("Error generating password reset token for %s: %s" % (username, msg))
        else:
            if not user_info[1]:
                logging.warning("No email set for account '%s', use caution!" % username)
            print("Setting a password reset token on account '%s'." % username)
            print("Email: %s\nMessage body to send to user:\n%s\n" % (user_info[1], msg))