FILE: C:\Windows\SystemApps\Microsoft.Windows.CloudExperienceHost_cw5n1h2txyewy\js\microsoftAccount.js
--
//
// Copyright (C) Microsoft. All rights reserved.
//
/// JS2085.EnableStrictMode
"use strict";
var CloudExperienceHost;
(function (CloudExperienceHost) {
var MSA;
(function (MSA) {
var Crypto = Windows.Security.Cryptography;
let _userInfo = null;
let _ngcBrokeredExtensionForUser = null;
let _isNoPassword = "msa-IsNoPassword";
let _isMsaMuaEnabled = CloudExperienceHostAPI.FeatureStaging.isOobeFeatureEnabled("MsaMuaFlows");
let _persistedMsaExtension = null;
let _verificationCode;
function createConnectedAccount(data, encodedPassword, daToken, creation, expiry, sessionKey, flowToken) {
let passwordBuffer = null;
let daTokenBuffer = null;
let sessionKeyBuffer = null;
if (typeof (data) == "string") {
// data is the username.
if (encodedPassword) {
passwordBuffer = Crypto.CryptographicBuffer.decodeFromBase64String(encodedPassword);
}
if (daToken) {
daTokenBuffer = Crypto.CryptographicBuffer.convertStringToBinary(daToken, Crypto.BinaryStringEncoding.utf8);
}
if (sessionKey) {
sessionKeyBuffer = Crypto.CryptographicBuffer.convertStringToBinary(sessionKey, Crypto.BinaryStringEncoding.utf8);
}
let context = CloudExperienceHost.getContext();
if (context && context.host && context.host.toLowerCase() == "scoobe") {
// TODO: http://osgvsowi/17008906 - Remove this associate call once scoobe work is done on the server side.
CloudExperienceHost.Telemetry.AppTelemetry.getInstance().logEvent("Scoobe remapping createConnectedAccount to AssociateAccount");
let extension = getMsaExtensionForUser();
let usercontext = CloudExperienceHost.IUserManager.getInstance().getIUser();
return extension.associateAccountForUserAsync(usercontext, data, daTokenBuffer, creation, expiry, sessionKeyBuffer, flowToken);
}
else {
let extension = getBrokeredExtension();
// TODO: http://osgvsowi/14843668 - Remove platform check from microsoftAccount.ts bridge in API createConnectedAccount once server changes are in PROD
let platform = CloudExperienceHost.Environment.getPlatform();
let platformIs8828080 = (platform == CloudExperienceHost.TargetPlatform.WINDOWS8828080) || (platform == CloudExperienceHost.TargetPlatform.WINDOWSCORE);
let enableAutologon = platformIs8828080;
let setDeviceOwner = platformIs8828080;
return extension.createConnectedAccountAsync(data, passwordBuffer, daTokenBuffer, creation, expiry, sessionKeyBuffer, flowToken, enableAutologon, setDeviceOwner).then((userId) => {
CloudExperienceHost.IUserManager.getInstance().setIUserFromId(userId.toString());
});
}
}
else {
const encodedPasswordLocal = data.encodedMsaPassword;
if (encodedPasswordLocal) {
passwordBuffer = Crypto.CryptographicBuffer.decodeFromBase64String(encodedPasswordLocal);
}
const daTokenLocal = data.daToken;
if (daTokenLocal) {
daTokenBuffer = Crypto.CryptographicBuffer.convertStringToBinary(daTokenLocal, Crypto.BinaryStringEncoding.utf8);
}
const sessionKeyLocal = data.sessionKey;
if (sessionKeyLocal) {
sessionKeyBuffer = Crypto.CryptographicBuffer.convertStringToBinary(sessionKeyLocal, Crypto.BinaryStringEncoding.utf8);
}
let extension = getBrokeredExtension();
return extension.createConnectedAccountAsync(data.userName, passwordBuffer, daTokenBuffer, data.daCreation, data.daExpiration, sessionKeyBuffer, data.flowToken, Boolean(data.enableAutologon), Boolean(data.setDeviceOwner)).then((userId) => {
CloudExperienceHost.IUserManager.getInstance().setIUserFromId(userId.toString());
});
}
}
MSA.createConnectedAccount = createConnectedAccount;
function createStubAccount(username, isAdmin, localUserName) {
if (typeof localUserName === 'undefined') {
localUserName = '';
}
var extension = getBrokeredExtension();
return extension.createStubAccountAsync(localUserName, username, isAdmin);
}
MSA.createStubAccount = createStubAccount;
// Retrieves the phone numbers from device and begins listening for the verification code.
// The client must begin listening before the request to server is made, since the SendOTT
// request is made before the page is loaded in CXH. The expectation is that this call is
// made as part of the navmesh. The verification code will be stored once getVerificationCodeAsync
// resolves. The stored code can be retrieved through the getVerificationCode API.
//
// Returns: A promise which resolves with the phone numbers on the device in a comma- separated list.
//
function initializeSmsAutoVerification() {
startVerificationCodeWait();
let extension = getMsaExtension();
return extension.getPhoneNumbersFromDeviceAsync();
}
MSA.initializeSmsAutoVerification = initializeSmsAutoVerification;
// Retrieves the stored SMS verification code.
// Returns: The verification code if it was successfully retrieved, null if still waiting for the code, "-1" if retrieval failed.
function getVerificationCode() {
return _verificationCode;
}
MSA.getVerificationCode = getVerificationCode;
function encryptUserData(plainText) {
if (!plainText) {
// Return as a promise for consistency with normal case.
return WinJS.Promise.as("");
}
var provider = new Crypto.DataProtection.DataProtectionProvider("local=user");
var buffer = Crypto.CryptographicBuffer.convertStringToBinary(plainText, Crypto.BinaryStringEncoding.utf8);
return provider.protectAsync(buffer).then(function (protectedBuffer) {
return Crypto.CryptographicBuffer.encodeToBase64String(protectedBuffer);
});
}
MSA.encryptUserData = encryptUserData;
// requireStrongAuth = true, requires strong user authentication for key registration.
function createUserIdKey(requireStrongAuth) {
let extension = getBrokeredExtensionForUser();
let user = null;
let requirePrimeNgcLogonCache = false;
let isNoPassword = CloudExperienceHost.Storage.SharableData.getValue(_isNoPassword);
if (typeof isNoPassword === "string" && isNoPassword.toLowerCase() === "true") {
// If user didn't use password to connect, priming the Ngc logon cache is required
// so that network connection is not required for subsequent logon.
requirePrimeNgcLogonCache = true;
}
if (IsMsaMuaEnabled()) {
user = CloudExperienceHost.IUserManager.getInstance().getIUser();
}
let userName = "";
let accountId = "";
let logonProofToken = null;
return extension.createUserIdKeyForUserAsync(user, requireStrongAuth, requirePrimeNgcLogonCache, userName, accountId, logonProofToken);
}
MSA.createUserIdKey = createUserIdKey;
// requireStrongAuth = true, requires strong user authentication for key registration.
function resetUserIdKey(requireStrongAuth) {
let user = null;
let requirePrimeNgcLogonCache = false;
let isNoPassword = CloudExperienceHost.Storage.SharableData.getValue(_isNoPassword);
let extension = getMsaExtensionForUser();
if (typeof isNoPassword === "string" && isNoPassword.toLowerCase() === "true") {
// If password is not presented in the machine, then every time PIN is reset,
// priming the logon cache avoids hitting the network on subsequent Windows logon using the new PIN.
requirePrimeNgcLogonCache = true;
}
let msaTicketContext = "";
if (CloudExperienceHost.getNavMesh() && CloudExperienceHost.getNavMesh().getMsaTicketContext()) {
msaTicketContext = CloudExperienceHost.getNavMesh().getMsaTicketContext();
}
let userName = "";
let accountId = "";
let logonProofToken = null;
if (IsMsaMuaEnabled()) {
user = CloudExperienceHost.IUserManager.getInstance().getIUser();
}
return extension.resetUserIdKeyForUserAsync(user, requireStrongAuth, requirePrimeNgcLogonCache, msaTicketContext, userName, accountId, logonProofToken);
}
MSA.resetUserIdKey = resetUserIdKey;
// delete the ngc container
function deleteNgcContainer() {
let extension = getNgcBrokeredExtensionForUser();
let user = null;
if (IsMsaMuaEnabled()) {
user = CloudExperienceHost.IUserManager.getInstance().getIUser();
}
return extension.deleteNgcContainerForUserAsync(user);
}
MSA.deleteNgcContainer = deleteNgcContainer;
// Function to detect whether or not we should upsell NGC after connect.
// Return true if there is no NGC key for the MSA, hence we upsell, false otherwise.
// The better name can be used such as isNgcKeyCreationApplicable.
// However, due to legacy and backward compatibility, the name of this function cannot be changed.
function isNgcEnabled(username, puid) {
let extension = getMsaExtensionForUser();
let user = null;
if (IsMsaMuaEnabled()) {
user = CloudExperienceHost.IUserManager.getInstance().getIUser();
}
var usernameLocal = username || "";
var puidLocal = puid || "";
return extension.isNgcEnabledForUserAsync(user, usernameLocal, puidLocal);
}
MSA.isNgcEnabled = isNgcEnabled;
function getContextParameterProperties() {
let extension = getMsaExtensionForUser();
let user = null;
if (IsMsaMuaEnabled()) {
user = CloudExperienceHost.IUserManager.getInstance().getIUser();
}
return extension.getContextParametersForUserAsync(user);
}
MSA.getContextParameterProperties = getContextParameterProperties;
// Returns a query string containing the specified context parameters.
// Caller must specify an array of key names or else empty string will be returned.
function getContextParameters(keysToInclude) {
return getContextParameterProperties().then(function (params) {
// Supplying an array is required to receive any parameters.
if (keysToInclude == null) {
return "";
}
var retParams = params;
retParams = pluckKeys(params, keysToInclude);
return objectToQueryString(retParams);
});
}
MSA.getContextParameters = getContextParameters;
function getContextParametersForLogin() {
return getContextParameters(['mkt', 'platform', 'scid', 'ctc', 'cmn']);
}
MSA.getContextParametersForLogin = getContextParametersForLogin;
function getContextParametersForPinResetSignIn() {
return getContextParameters(['mkt', 'platform', 'scid', 'ctc', 'cmn', 'username']);
}
MSA.getContextParametersForPinResetSignIn = getContextParametersForPinResetSignIn;
function getContextParametersForAccount() {
return getContextParameters(['mkt', 'uiflavor', 'platform', 'hasngc']);
}
MSA.getContextParametersForAccount = getContextParametersForAccount;
function getContextParametersForSSPR() {
return getContextParameters(['mkt', 'uiflavor', 'platform', 'hasngc', 'mn']);
}
MSA.getContextParametersForSSPR = getContextParametersForSSPR;
function getContextParametersForXbox() {
var langCode = "en-US";
var regionCode = "US";
var inOobe = false;
var useLightTheme = false;
// Need to see if we need to override the mkt and country parameters. Xbox supports
// 2 x 2 which are not supported by MSA. As an example, for en-HU, we send en-GB for
// mkt and HU for the country parameters.
try {
langCode = Windows.Xbox.System.Internal.Console.ConsoleProperties.currentNLSLanguage;
regionCode = new Windows.Globalization.GeographicRegion().codeTwoLetter;
var msaLocaleOverrides = Windows.Xbox.System.Internal.LiveSettings.LiveSettings.msaLocaleOverrides;
if (msaLocaleOverrides) {
msaLocaleOverrides = JSON.parse(msaLocaleOverrides);
if (msaLocaleOverrides[langCode]) {
langCode = msaLocaleOverrides[langCode];
}
}
}
catch (e) {
}
// Are we in OOBE?
try {
inOobe = !Windows.Xbox.System.Internal.XConfig.XConfigProperties.getIsOobeCompleted();
}
catch (e) {
}
// Dark or light theme?
try {
var theme = Windows.Xbox.System.Internal.Personalization.SystemPersonalization.defaultSystemTheme;
useLightTheme = (theme == Windows.Xbox.System.Internal.Personalization.SystemTheme.light);
}
catch (e) {
}
// During the Xbox OOBE flow, we don't allow users to cancel out of the
// MSA connect flow, so check to see if OOBE is completed and pass in
// the appropriate query parameter value for oobe.
return getContextParameters(['platform']).then(function (platformQueryString) {
return "mkt=" + langCode +
"&country=" + regionCode +
"&uitheme=" + (useLightTheme ? "xbox_2" : "xbox_1") +
(inOobe ? "&oobe=1" : "") +
"&" + platformQueryString;
});
}
MSA.getContextParametersForXbox = getContextParametersForXbox;
function getContextParametersForXboxConnectWithEmail() {
let extension = getMsaExtensionForUser();
let user = null;
if (IsMsaMuaEnabled()) {
user = CloudExperienceHost.IUserManager.getInstance().getIUser();
}
return extension.getUserEmailForUserAsync(user).then(function (emailAddress) {
return getContextParametersForXbox().then(function (platformQueryString) {
return "username=" + emailAddress +
"&" + platformQueryString;
});
});
}
MSA.getContextParametersForXboxConnectWithEmail = getContextParametersForXboxConnectWithEmail;
function saveAuthState(daToken, creation, expiry, sessionKey) {
// Save the primary MSA's DA and sessionkey into the credential manager
let extension = getBrokeredExtensionForUser();
let user = null;
if (IsMsaMuaEnabled()) {
user = CloudExperienceHost.IUserManager.getInstance().getIUser();
}
let daTokenBuffer = null;
if (daToken) {
daTokenBuffer = Crypto.CryptographicBuffer.convertStringToBinary(daToken, Crypto.BinaryStringEncoding.utf8);
}
let sessionKeyBuffer = null;
if (sessionKey) {
sessionKeyBuffer = Crypto.CryptographicBuffer.decodeFromBase64String(sessionKey);
}
return extension.saveAuthStateForUserAsync(user, daTokenBuffer, creation, expiry, sessionKeyBuffer);
}
MSA.saveAuthState = saveAuthState;
function associateAccount(data, daToken, creation, expiry, flowToken, sessionKey) {
let userName = null;
if (typeof (data) == "string") {
// Old signature. data is user, which is the userName.
userName = data;
}
else {
// New signature; when cleaning up the old signature, make these let declarations and move them closer to usage.
userName = data.userName;
daToken = data.daToken;
creation = data.daCreation;
expiry = data.daExpiration;
flowToken = data.flowToken;
sessionKey = data.sessionKey;
}
var extension = getMsaExtensionForUser();
let usercontext = null;
if (IsMsaMuaEnabled()) {
usercontext = CloudExperienceHost.IUserManager.getInstance().getIUser();
}
if (typeof sessionKey === "undefined") {
sessionKey = null;
}
let daTokenBuffer = null;
if (daToken) {
daTokenBuffer = Crypto.CryptographicBuffer.convertStringToBinary(daToken, Crypto.BinaryStringEncoding.utf8);
}
let sessionKeyBuffer = null;
if (sessionKey) {
sessionKeyBuffer = Crypto.CryptographicBuffer.convertStringToBinary(sessionKey, Crypto.BinaryStringEncoding.utf8);
}
return extension.associateAccountForUserAsync(usercontext, userName, daTokenBuffer, creation, expiry, sessionKeyBuffer, flowToken);
}
MSA.associateAccount = associateAccount;
function connectAccount(data, userName, encodedMsaPassword, daToken, daCreation, daExpiration, flowToken, sessionKey) {
let encodedLocalPassword = null;
let enableAutologon = false;
if (typeof (data) == "string" || (!data && typeof (userName) == "string")) {
// Old signature: data is encodedLocalPassword;
encodedLocalPassword = data;
// TODO: http://osgvsowi/14843668 - Remove platform check from microsoftAccount.ts bridge in API createConnectedAccount/connectAccount once server changes are in PROD
let platform = CloudExperienceHost.Environment.getPlatform();
enableAutologon = (platform == CloudExperienceHost.TargetPlatform.WINDOWS8828080);
}
else {
// New signature; when cleaning up the old signature, make these let declarations and move them closer to usage.
encodedLocalPassword = data.encodedLocalPassword;
userName = data.userName;
encodedMsaPassword = data.encodedMsaPassword;
daToken = data.daToken;
daCreation = data.daCreation;
daExpiration = data.daExpiration;
flowToken = data.flowToken;
sessionKey = data.sessionKey;
enableAutologon = Boolean(data.enableAutologon);
}
let localPasswordBuffer = null;
if (encodedLocalPassword) {
localPasswordBuffer = Crypto.CryptographicBuffer.decodeFromBase64String(encodedLocalPassword);
}
let msaPasswordBuffer = null;
if (encodedMsaPassword) {
msaPasswordBuffer = Crypto.CryptographicBuffer.decodeFromBase64String(encodedMsaPassword);
}
let extension = getMsaExtensionForUser();
let user = null;
if (IsMsaMuaEnabled()) {
user = CloudExperienceHost.IUserManager.getInstance().getIUser();
}
let daTokenBuffer = null;
if (daToken) {
daTokenBuffer = Crypto.CryptographicBuffer.convertStringToBinary(daToken, Crypto.BinaryStringEncoding.utf8);
}
let sessionKeyBuffer = null;
if (sessionKey) {
sessionKeyBuffer = Crypto.CryptographicBuffer.convertStringToBinary(sessionKey, Crypto.BinaryStringEncoding.utf8);
}
return extension.connectAccountForUserAsync(user, localPasswordBuffer, userName, msaPasswordBuffer, daTokenBuffer, daCreation, daExpiration, flowToken, sessionKeyBuffer, enableAutologon);
}
MSA.connectAccount = connectAccount;
// Calls SetUpCflUserTransitionDataAsync to package the given auth info into an
// auth buffer and store that for transition to the user's account. Intended for
// use in CFL flows running in DefaultUserX context.
function setUpUserTransition(user, puid, encodedPassword, daToken, daCreation, daExpiry, flowToken, sessionKey, sessionKeyType) {
// Set all null or undefined parameters to empty string or else they will be passed as
// "null" and "undefined" to WinRT.
user = user || "";
puid = puid || "";
encodedPassword = encodedPassword || ""; // Purposely ignoring password, we will not use or cache it
daCreation = daCreation || "";
daExpiry = daExpiry || "";
flowToken = flowToken || "";
sessionKeyType = sessionKeyType || "";
// Read the customProperty to find the CXID of the target user flow.
// Prepend "ms-cxh://" if found.
var targetUserCxid = CloudExperienceHost.getCurrentNode().customProperty;
if (targetUserCxid) {
targetUserCxid = "ms-cxh://" + targetUserCxid;
}
else {
targetUserCxid = "";
}
let daTokenBuffer = null;
if (daToken) {
daTokenBuffer = Crypto.CryptographicBuffer.convertStringToBinary(daToken, Crypto.BinaryStringEncoding.utf8);
}
let sessionKeyBuffer = null;
if (sessionKey) {
sessionKeyBuffer = Crypto.CryptographicBuffer.convertStringToBinary(sessionKey, Crypto.BinaryStringEncoding.utf8);
}
var extension = getMsaExtension();
return extension.setUpCflUserTransitionDataAsync(user, puid, daTokenBuffer, daCreation, daExpiry, flowToken, sessionKeyBuffer, sessionKeyType, targetUserCxid, null);
}
MSA.setUpUserTransition = setUpUserTransition;
function getDevicePostData() {
var extension = getMsaExtensionForUser();
let user = null;
if (IsMsaMuaEnabled()) {
user = CloudExperienceHost.IUserManager.getInstance().getIUser();
}
return extension.getDevicePostDataForUserAsync(user);
}
MSA.getDevicePostData = getDevicePostData;
// Returns a POST data blob containing the following in application/x-www-form-urlencoded format:
// SDDA: Signed device DA Token
// SUDA: Signed user DA Token (if user is connected)
//
// getSignedAuthTokensAsync() returns a property bag, e.g.:
// {"SUDA": "a=1&b=2&...", "SDDA": "a=1&b=2&..."}
//
function getAuthTokenPostData() {
let extension = getMsaExtensionForUser();
let user = null;
if (IsMsaMuaEnabled()) {
user = CloudExperienceHost.IUserManager.getInstance().getIUser();
}
return extension.getSignedAuthTokensForUserAsync(user).then(function (fields) {
return objectToQueryString(fields);
});
}
MSA.getAuthTokenPostData = getAuthTokenPostData;
// Converts key/value pairs in an object into a query string.
function objectToQueryString(obj) {
var components = [];
Object.keys(obj).forEach(function (key) {
components.push(escapeUrlParam(key) + '=' + escapeUrlParam(obj[key]));
});
return components.join('&');
}
// Returns an object containing only the specified keys from the passed-in object.
function pluckKeys(obj, keysToPluck) {
var result = {};
Object.keys(obj).forEach(function (key) {
if (keysToPluck.indexOf(key) !== -1) {
result[key] = obj[key];
}
});
return result;
}
function setUserInfo(userInfo) {
return new WinJS.Promise(function (completeDispatch, errorDispatch /*, progressDispatch */) {
var provider = new Crypto.DataProtection.DataProtectionProvider("local=user");
var buffer = Crypto.CryptographicBuffer.convertStringToBinary(JSON.stringify(userInfo), Crypto.BinaryStringEncoding.utf8);
provider.protectAsync(buffer).then(function (bufferProtected) {
_userInfo = Crypto.CryptographicBuffer.encodeToBase64String(bufferProtected);
completeDispatch();
}.bind(this), errorDispatch);
}.bind(this));
}
MSA.setUserInfo = setUserInfo;
function getUserInfo() {
return new WinJS.Promise(function (completeDispatch, errorDispatch /*, progressDispatch */) {
if (_userInfo) {
var provider = new Crypto.DataProtection.DataProtectionProvider("local=user");
var buffer = Crypto.CryptographicBuffer.decodeFromBase64String(_userInfo);
provider.unprotectAsync(buffer).then(function (bufferUnprotected) {
var userInfo = JSON.parse(Crypto.CryptographicBuffer.convertBinaryToString(Crypto.BinaryStringEncoding.utf8, bufferUnprotected));
completeDispatch(userInfo);
}.bind(this), errorDispatch);
}
else {
completeDispatch(null);
}
}.bind(this));
}
MSA.getUserInfo = getUserInfo;
function showKeyboardForXbox(show) {
var virtualKeyboard = Windows.UI.ViewManagement.InputPane.getForCurrentView();
if ((typeof show === 'undefined') || show) {
virtualKeyboard.tryShow();
}
else {
virtualKeyboard.tryHide();
}
}
MSA.showKeyboardForXbox = showKeyboardForXbox;
function getAadSscrParameters() {
var extension = getMsaExtension();
return extension.getAadSscrParametersAsync().then(function (params) {
return objectToQueryString(params);
});
}
MSA.getAadSscrParameters = getAadSscrParameters;
function setUpAadUserTransition(userName, refreshToken, scenarioData) {
var scenarioDataLocal = scenarioData || "";
var extension = getMsaExtension();
let refreshTokenBuffer = null;
if (refreshToken) {
refreshTokenBuffer = Crypto.CryptographicBuffer.convertStringToBinary(refreshToken, Crypto.BinaryStringEncoding.utf8);
}
return extension.setUpAadCflUserTransitionDataAsync(userName, refreshTokenBuffer, scenarioDataLocal);
}
MSA.setUpAadUserTransition = setUpAadUserTransition;
function startVerificationCodeWait() {
// Start by clearing state from any prior operations.
cancelVerificationCodeWait();
_verificationCode = null;
// The ExtensionWorker instance must be persisted,
// because it stops listening for the code if the destructor is called.
_persistedMsaExtension = getMsaExtension();
const codeError = "-1";
_persistedMsaExtension.getVerificationCodeAsync().then((verificationCode) => {
cancelVerificationCodeWait();
if (verificationCode) {
_verificationCode = verificationCode;
}
else {
// The operation completed but there was no code
_verificationCode = codeError;
}
}, (e) => {
cancelVerificationCodeWait();
_verificationCode = codeError;
});
}
function cancelVerificationCodeWait() {
if (_persistedMsaExtension) {
_persistedMsaExtension.cancelVerificationCodeWait();
_persistedMsaExtension = null; // Need to make sure this gets cleaned up.
}
}
// Performs encodeURIComponent and escapes apostrophe characters.
function escapeUrlParam(value) {
return encodeURIComponent(value).replace(/'/g, "%27");
}
function getMsaExtension() {
return new MicrosoftAccount.Extension.ExtensionWorker();
}
function getMsaExtensionForUser() {
return new MicrosoftAccount.Extension.ExtensionWorkerForUser();
}
function getBrokeredExtension() {
return new MicrosoftAccount.UserOperations.Extension();
}
function getBrokeredExtensionForUser() {
return new MicrosoftAccount.UserOperations.ExtensionForUser();
}
function getNgcBrokeredExtensionForUser() {
if (_ngcBrokeredExtensionForUser === null) {
_ngcBrokeredExtensionForUser = new MicrosoftAccount.UserOperations.ExtensionForUser();
}
return _ngcBrokeredExtensionForUser;
}
var ShouldSkipNGCEnroll;
(function (ShouldSkipNGCEnroll) {
function getShouldSkipAsync() {
let extension = getMsaExtensionForUser();
let user = null;
if (IsMsaMuaEnabled()) {
user = CloudExperienceHost.IUserManager.getInstance().getIUser();
}
return extension.isNgcCreateContainerDisabledForUserAsync(user);
}
ShouldSkipNGCEnroll.getShouldSkipAsync = getShouldSkipAsync;
})(ShouldSkipNGCEnroll = MSA.ShouldSkipNGCEnroll || (MSA.ShouldSkipNGCEnroll = {}));
var ShouldSkipAadNgcProvisioning;
(function (ShouldSkipAadNgcProvisioning) {
function getShouldSkipAsync() {
let extension = getMsaExtensionForUser();
let user = null;
if (IsMsaMuaEnabled()) {
user = CloudExperienceHost.IUserManager.getInstance().getIUser();
}
return extension.shouldSkipAadNgcProvisioningForUserAsync(user);
}
ShouldSkipAadNgcProvisioning.getShouldSkipAsync = getShouldSkipAsync;
})(ShouldSkipAadNgcProvisioning = MSA.ShouldSkipAadNgcProvisioning || (MSA.ShouldSkipAadNgcProvisioning = {}));
function IsMsaMuaEnabled() {
return _isMsaMuaEnabled;
}
})(MSA = CloudExperienceHost.MSA || (CloudExperienceHost.MSA = {}));
})(CloudExperienceHost || (CloudExperienceHost = {}));
//# sourceMappingURL=microsoftaccount.js.map
--