/**
 * A webadmin user record. Creates by the IWebAdminAuth instance.
 *
 * Copyright 2008 Epic Games, Inc. All Rights Reserved
 *
 * @author  Michiel 'elmuerte' Hendriks
 */
interface IWebAdminUser;

struct MessageEntry
{
	var int counter;
	/**
	 * Can be none
	 */
	var PlayerReplicationInfo sender;
	var string senderName;
	var string message;
	/**
	 * Say, TeamSay, None
	 */
	var name type;
	var string teamName;
	var color teamColor;
	/**
	 * INDEX_NONE if not a member of a team
	 */
	var int teamId;
};

/**
 * Return the name of the user. This is the name used for displaying. It can be
 * the same as the result of getUserid();
 */
function string getUsername();

/**
 * Return the user id, this was the name used to log in on the webadmin.
 */
function string getUserid();

/**
 * Used to check for permissions to perform given actions.
 *
 * @param path an URL containing the action description. See rfc2396 for more information.
 * 				The scheme part of the URL will be used as identifier for the interface.
 *				The host is the IP to witch the webserver is bound.
 *				for example:	webadmin://127.0.0.1:8080/current/console
 *				Note that the webapplication path is not included.
 */
function bool canPerform(string url);

/**
 * Returns a list of all urls that were passed to #canPerform(). It does not
 * contain information wether the result was true or false.
 */
function array<string> getCheckedPrivileges();

function clearCheckedPrivileges();

/**
 * Return a PlayerController associated with this user. This method might return
 * none when there is no player controller associated with this user.
 */
function PlayerController getPC();

/**
 * Get the message history.
 */
function messageHistory(out array<MessageEntry> history, optional int startingFrom);

/**
 * Called when this user is logged out.
 */
function logout();

/**
 * Return an instance of the settings privileges class to filter on settings, and/or
 * groups. It is not required.
 */
function ISettingsPrivileges getSettingsPrivileges();
