For checking on the server, look into APlayerController::OnPossessed(). That fires on the server when the pawn is possessed by the controller.
There’s various points in AGameMode, APlayerController, and AGameState that I know of where you could perform checks for the pawn when the player connects.