device_local_account.h revision 4e180b6a0b4720a9b8e9e959a882386f690f08ff
190dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)// Copyright (c) 2013 The Chromium Authors. All rights reserved.
290dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)// Use of this source code is governed by a BSD-style license that can be
390dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)// found in the LICENSE file.
490dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)
590dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)#ifndef CHROME_BROWSER_CHROMEOS_POLICY_DEVICE_LOCAL_ACCOUNT_H_
690dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)#define CHROME_BROWSER_CHROMEOS_POLICY_DEVICE_LOCAL_ACCOUNT_H_
790dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)
890dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)#include <string>
990dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)#include <vector>
1090dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)
1190dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)namespace chromeos {
1290dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)class CrosSettings;
1390dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)}
1490dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)
1590dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)namespace policy {
1690dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)
1790dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)// This must match DeviceLocalAccountInfoProto.AccountType in
1890dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)// chrome_device_policy.proto.
1990dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)struct DeviceLocalAccount {
2090dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)  enum Type {
2190dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)    // A login-less, policy-configured browsing session.
2290dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)    TYPE_PUBLIC_SESSION,
2390dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)    // An account that serves as a container for a single full-screen app.
2490dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)    TYPE_KIOSK_APP,
2590dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)    // Sentinel, must be last.
2690dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)    TYPE_COUNT
2790dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)  };
2890dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)
2990dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)  DeviceLocalAccount(Type type,
3090dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)                     const std::string& account_id,
31d0247b1b59f9c528cb6df88b4f2b9afaf80d181eTorne (Richard Coles)                     const std::string& kiosk_app_id);
3290dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)  ~DeviceLocalAccount();
3390dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)
3490dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)  Type type;
3590dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)  std::string account_id;
3690dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)  std::string user_id;
3790dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)  std::string kiosk_app_id;
3890dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)};
3990dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)
4090dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)std::string GenerateDeviceLocalAccountUserId(const std::string& account_id,
4190dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)                                             DeviceLocalAccount::Type type);
4290dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)
434e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)// Determines whether |user_id| belongs to a device-local account and if so,
444e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)// returns the type of device-local account in |type| unless |type| is NULL.
454e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)bool IsDeviceLocalAccountUser(const std::string& user_id,
464e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)                              DeviceLocalAccount::Type* type);
4790dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)
4890dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)// Stores a list of device-local accounts in |cros_settings|. The accounts are
4990dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)// stored as a list of dictionaries with each dictionary containing the
5090dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)// information about one |DeviceLocalAccount|.
5190dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)void SetDeviceLocalAccounts(
5290dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)    chromeos::CrosSettings* cros_settings,
5390dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)    const std::vector<DeviceLocalAccount>& accounts);
5490dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)
5590dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)// Retrieves a list of device-local accounts from |cros_settings|.
5690dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)std::vector<DeviceLocalAccount> GetDeviceLocalAccounts(
5790dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)    chromeos::CrosSettings* cros_settings);
5890dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)
5990dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)}  // namespace policy
6090dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)
6190dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)#endif  // CHROME_BROWSER_CHROMEOS_POLICY_DEVICE_LOCAL_ACCOUNT_H_
62