wesnoth/src/server/user_handler.hpp
Alexander van Gessel 57b6e955b1 Strip out jwsmtp and the server mailer based on it.
Turn related functions into stubs
2009-11-08 19:05:49 +01:00

161 lines
4.4 KiB
C++

/* $Id$ */
/*
Copyright (C) 2008 - 2009 by Thomas Baumhauer <thomas.baumhauer@NOSPAMgmail.com>
Part of the Battle for Wesnoth Project http://www.wesnoth.org/
This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License version 2
or at your option any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY.
See the COPYING file for more details.
*/
#ifndef USER_HANDLER_HPP_INCLUDED
#define USER_HANDLER_HPP_INCLUDED
class config;
#include "../global.hpp"
#include <string>
/**
* An interface class to handle nick registration
* To activate it put a [user_handler] section into the
* server configuration file
*/
class user_handler {
// public functions are called by the server
//
// private functions are for convenience as they
// will probably be the same for all user_handler
// implementations
public:
user_handler()
{
}
virtual ~user_handler()
{
}
/**
* Adds a user.
*
* Throws an error containing the error message if adding fails
* (e.g. because a user with the same name already exists).
*/
virtual void add_user(const std::string& name, const std::string& mail, const std::string& password) =0;
/**
* Removes a user.
*
* Throws an error containing the error message if removing fails
* (e.g. no user with the given name exists).
*/
virtual void remove_user(const std::string& name) =0;
/**
* Called by the server once a day.
*
* Could for example be used for removing users that have not logged in
* for a certain amount of time.
*/
virtual void clean_up() =0;
/**
* Send a password reminder email to the given user.
*
* Should throw user_handler::error if sending fails
* (e.g. because we cannot send email).
*/
virtual void password_reminder(const std::string& name) =0;
/**
* Return true if the given password matches the password for the given user.
*
* Password could also be a hash
* Seed is not needed for clear text log ins
* Currently the login procedure in the server and client code is hardcoded
* for the forum_user_handler implementation
*/
virtual bool login(const std::string& name, const std::string& password, const std::string& seed) =0;
/** Executed when the user with the given name logged in. */
virtual void user_logged_in(const std::string& name) =0;
/**
* Returns a string containing info like the last login of this user.
*
* Formatted for user readable output.
*/
virtual std::string user_info(const std::string& name) =0;
/**
* Set data for a given user name.
*
* Should throw an error on invalid data.
*/
virtual void set_user_detail(const std::string& user, const std::string& detail, const std::string& value) =0;
/** List of details that can be set for this user_handler. */
virtual std::string get_valid_details() =0;
/** Returns true if a user with the given name exists. */
virtual bool user_exists(const std::string& name) =0;
/** Returns true if this user is a moderator on this server */
virtual bool user_is_moderator(const std::string& name) =0;
/** Mark this user as a moderator */
virtual void set_is_moderator(const std::string& name, const bool& is_moderator) =0;
/** A simple structure to throw as an error. */
struct error {
error(const std::string& msg) : message(msg) {}
std::string message;
};
/** Initiate the mailer object. */
void init_mailer(const config &c);
/** Create a random string of digits for password encryption. */
std::string create_salt(int length =8);
/**
* Create custom salt.
*
* If not needed let it return and empty string or whatever you feel like.
*/
virtual std::string create_pepper(const std::string& username) =0;
/**
* Does this user_handler want passwords passed encrypted using phpbb's algorithm?
*
* Let it return true if it does and false if it does not.
*/
virtual bool use_phpbb_encryption() const =0;
protected:
/**
* Sends an email to the specified address. Requires access to an SMTP server.
*
* Throws an error if the mail could not be sent.
*/
bool send_mail(const std::string& to_user, const std::string& subject, const std::string& message);
/**
* Used in send_mail().
*
* Should return an empty string when not used.
*/
virtual std::string get_mail(const std::string& user) =0;
};
#endif //USER_HANDLER_HPP_INCLUDED