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)
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)
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)
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)
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])
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()
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()
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))