| // Copyright 2019 The Chromium Authors |
| // Use of this source code is governed by a BSD-style license that can be |
| // found in the LICENSE file. |
| |
| #include "remoting/host/file_transfer/ensure_user.h" |
| |
| #include <unistd.h> |
| |
| #include <variant> |
| |
| #include "base/check_is_test.h" |
| #include "base/logging.h" |
| |
| namespace remoting { |
| |
| namespace { |
| |
| static bool g_disable_user_context_check_for_testing = false; |
| |
| } // namespace |
| |
| protocol::FileTransferResult<std::monostate> EnsureUserContext() { |
| if (g_disable_user_context_check_for_testing) { |
| CHECK_IS_TEST(); |
| return kSuccessTag; |
| } |
| // Make sure we're not on the log-in screen. |
| if (getuid() == 0) { |
| LOG(ERROR) << "Cannot transfer files on log-in screen."; |
| return protocol::MakeFileTransferError( |
| FROM_HERE, protocol::FileTransfer_Error_Type_NOT_LOGGED_IN); |
| } |
| return kSuccessTag; |
| } |
| |
| void DisableUserContextCheckForTesting() { |
| g_disable_user_context_check_for_testing = true; |
| } |
| |
| } // namespace remoting |