Skip to content

CanClientLogin

Called when a player attempt to login the server

Usage

  • Return type bool to prevent default behavior

Example Autogenerated

csharp
private object CanClientLogin( Connection connection )
{
    Puts( "CanClientLogin works!" );
    return null;
}

Location

  • RustCore::IOnUserApprove(Connection connection)
csharp
private object IOnUserApprove(Connection connection)
{
	string playerName = connection.username;
	string connectionId = connection.userid.ToString();
	string connectionIp = Regex.Replace(connection.ipaddress, ipPattern, "");
	uint authLevel = connection.authLevel;

	// Update name and groups with permissions
	if (permission.IsLoaded)
	{
		permission.UpdateNickname(connectionId, playerName);
		OxideConfig.DefaultGroups defaultGroups = Interface.Oxide.Config.Options.DefaultGroups;
		if (!permission.UserHasGroup(connectionId, defaultGroups.Players))
		{
			permission.AddUserGroup(connectionId, defaultGroups.Players);
		}
		if (authLevel >= 2 && !permission.UserHasGroup(connectionId, defaultGroups.Administrators))
		{
			permission.AddUserGroup(connectionId, defaultGroups.Administrators);
		}
	}

	// Let covalence know
	Covalence.PlayerManager.PlayerJoin(connection.userid, playerName);

	// Call hooks for plugins
	object loginSpecific = Interface.CallHook("CanClientLogin", connection);
	object loginCovalence = Interface.CallHook("CanUserLogin", playerName, connectionId, connectionIp);
	object canLogin = loginSpecific is null ? loginCovalence : loginSpecific;
	if (canLogin is string || canLogin is bool loginBlocked && !loginBlocked)
	{
		ConnectionAuth.Reject(connection, canLogin is string ? canLogin.ToString() : lang.GetMessage("ConnectionRejected", this, connectionId));
		return true;
	}

	// Call hooks for plugins
	object approvedSpecific = Interface.CallHook("OnUserApprove", connection);
	object approvedCovalence = Interface.CallHook("OnUserApproved", playerName, connectionId, connectionIp);
	return approvedSpecific is null ? approvedCovalence : approvedSpecific;
}

Released under the MIT License.