# RakNet::Client_Login Struct Reference
[Lobby2Commands]

Logon with a previously registered account. More...

`#include <Lobby2Message.h>`

Inheritance diagram for RakNet::Client_Login:

List of all members.

## Public Member Functions

virtual bool | RequiresAdmin (void) const
virtual bool | RequiresRankingPermission (void) const
virtual bool | CancelOnDisconnect (void) const
virtual bool | RequiresLogin (void) const
virtual void | Serialize (bool writeToBitstream, bool serializeOutput, RakNet::BitStream *bitStream)
| Overridable serialization of the contents of this message. Defaults to SerializeBase().
virtual bool | PrevalidateInput (void)

## Detailed Description

Logon with a previously registered account.

Once a client creates an account with Client_RegisterAccount, the client is able to logon. The login process will check

1. The CDKey associated with this user (See CDKey_Use) if checkCDKey is true
2. The userPassword passed to this function
3. The titleName and titleSecretKey, to ensure this title was previously created with System_CreateTitle
4. If allowLoginWithoutEmailAddressValidation==false for this user (See Client_RegisterAccount) and System_SetEmailAddressValidated was not called for that email address, fail.
5. If this user was banned with a ban still in effect via System_BanUser

If all checks pass, store in a logging table that the user has logged in at this time. No status flag needs be set, this will be done in C++.

Parameters:

  `[in]` | userHandle |
  `[in]` | userPassword |
  `[in]` | titleName |
  `[in]` | titleSecretKey |
  `[in]` | checkCDKey |
  `[out]` | userPrimaryKey | Only returned on success
  `[out]` | bannedReason | Only returned on banned
  `[out]` | whenBanned | Only returned on banned
  `[out]` | banningModeratorID | Only returned on banned

## Member Function Documentation

virtual bool RakNet::Client_Login::CancelOnDisconnect | ( | void |  | ) | const`[inline, virtual]`

Should this message not be processed on the server if the requesting user disconnects before it completes? This should be true for functions that only return data. False for functions that affect other users, or change the database

Implements RakNet::Lobby2Message.

virtual bool RakNet::Client_Login::PrevalidateInput | ( | void |  | ) | `[virtual]`

If data members can be validated for correctness in the server's main thread, override this function and do those checks here.

Returns:
  True for input OK. False if the input is bad and does not need to be further processed in the database threads.

Reimplemented from RakNet::Lobby2Message.

virtual bool RakNet::Client_Login::RequiresAdmin | ( | void |  | ) | const`[inline, virtual]`

Is this message something that should only be run by a system with admin privileges? Set admin privileges with Lobby2Server::AddAdminAddress()

Implements RakNet::Lobby2Message.

virtual bool RakNet::Client_Login::RequiresLogin | ( | void |  | ) | const`[inline, virtual]`

Does this function require logging into the server before it can be executed? If true, the user id and user handle will be automatically inferred by the last login by looking up the sender's system address. If false, the message should include the username so the database query can lookup which user is performing this operation.

Implements RakNet::Lobby2Message.

virtual bool RakNet::Client_Login::RequiresRankingPermission | ( | void |  | ) | const`[inline, virtual]`

Is this message something that should only be run by a system with ranking upload priviledges? Set ranking privileges with Lobby2Server::AddRankingAddress()

Implements RakNet::Lobby2Message.

The documentation for this struct was generated from the following file:

- d:/RakNet-3.x/DependentExtensions/Lobby2/Lobby2Message.h