1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72
|
// Copyright 2022 The Chromium Authors
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
#include "chrome/browser/policy/status_provider/user_cloud_policy_status_provider.h"
#include "base/values.h"
#include "chrome/browser/browser_process.h"
#include "chrome/browser/policy/status_provider/status_provider_util.h"
#include "chrome/browser/profiles/profile.h"
#include "chrome/browser/profiles/profile_attributes_entry.h"
#include "chrome/browser/profiles/profile_attributes_storage.h"
#include "chrome/browser/profiles/profile_manager.h"
#include "chrome/browser/signin/identity_manager_factory.h"
#include "components/enterprise/browser/reporting/common_pref_names.h"
#include "components/policy/core/browser/webui/policy_status_provider.h"
#include "components/policy/core/common/cloud/cloud_policy_core.h"
#include "components/policy/core/common/cloud/cloud_policy_store.h"
#include "components/signin/public/identity_manager/identity_manager.h"
#include "google_apis/gaia/gaia_auth_util.h"
UserCloudPolicyStatusProvider::UserCloudPolicyStatusProvider(
policy::CloudPolicyCore* core,
Profile* profile)
: CloudPolicyCoreStatusProvider(core), profile_(profile) {}
UserCloudPolicyStatusProvider::~UserCloudPolicyStatusProvider() = default;
base::Value::Dict UserCloudPolicyStatusProvider::GetStatus() {
#if BUILDFLAG(IS_CHROMEOS)
const bool show_flex_org_warning = false;
#else
signin::IdentityManager* identity_manager =
IdentityManagerFactory::GetForProfile(profile_);
const bool show_flex_org_warning =
identity_manager && identity_manager
->FindExtendedAccountInfoByEmailAddress(
profile_->GetProfileUserName())
.IsMemberOfFlexOrg();
if (!show_flex_org_warning && !core_->store()->is_managed()) {
return {};
}
#endif
ProfileAttributesEntry* entry =
g_browser_process->profile_manager()
->GetProfileAttributesStorage()
.GetProfileAttributesWithPath(profile_->GetPath());
auto enrollment_token =
entry ? entry->GetProfileManagementEnrollmentToken() : std::string();
base::Value::Dict dict =
policy::PolicyStatusProvider::GetStatusFromCore(core_);
if (enrollment_token.empty()) {
SetDomainExtractedFromUsername(dict);
GetUserAffiliationStatus(&dict, profile_);
dict.Set(policy::kFlexOrgWarningKey, show_flex_org_warning);
} else {
dict.Set(policy::kEnrollmentTokenKey, enrollment_token);
dict.Set(policy::kDomainKey,
gaia::ExtractDomainName(core_->store()->policy()->username()));
dict.Remove(policy::kUsernameKey);
dict.Remove(policy::kGaiaIdKey);
}
UpdateLastReportTimestamp(
dict, profile_->GetPrefs(),
enterprise_reporting::kLastUploadSucceededTimestamp);
dict.Set(policy::kPolicyDescriptionKey, kUserPolicyStatusDescription);
SetProfileId(&dict, profile_);
return dict;
}
|