Files
login/src/PowerShell/ServicePrincipalLogin.ts
aksm-ms ab6d759ee8 Azure PowerShell Login changes (#25)
* Initial commit

* updating package version

* adding secret info link in logs

* adding user-agent

* Update README.md

* Added changes for azure powershell login

Changes in loginAzurePowerShell.ts

using latest version

Added getlatestazmodule version

changes in runner info

code refactor

changes in loginAzurePowerShell

code refactor

Code refactor

Code refactor

added review comments

changes in scriptbuilder

changes in setmodulepath

added paths in tsconfig.json

Revert "added paths in tsconfig.json"

This reverts commit cb2f4176bf.

changes in action.yml

changes in main

added review comments

Added changes for review comments

Modified description in action.yml

Added telemetry info

Code refactor

added review comments

added review comments

removed tslint from package.json

added log in ServicePrincipalLogin

added boolean for error log

Added Unit tests (#15)

* Added unit tests for Azure PowerShell

* Added unit tests

* changes in utils

* removed babel

* changed variable name of enable-PSSession

* refactor

* added ci.yml

* changes in utils test

making login calls silent (#19)

Co-authored-by: Deepak Sattiraju <desattir@microsoft.com>

update utils test (#16)

* update utils test

* update utils test

* update serviceprincipallogin test

Co-authored-by: Microsoft GitHub User <msftgits@microsoft.com>
Co-authored-by: Sumiran Aggarwal <suaggar@microsoft.com>
Co-authored-by: UshaN <ushan@microsoft.com>
2020-05-06 16:34:34 +05:30

57 lines
2.3 KiB
TypeScript

import * as core from '@actions/core';
import Utils from './Utilities/Utils';
import PowerShellToolRunner from './Utilities/PowerShellToolRunner';
import ScriptBuilder from './Utilities/ScriptBuilder';
import Constants from './Constants';
export class ServicePrincipalLogin implements IAzurePowerShellSession {
static readonly environment: string = Constants.AzureCloud;
static readonly scopeLevel: string = Constants.Subscription;
static readonly scheme: string = Constants.ServicePrincipal;
servicePrincipalId: string;
servicePrincipalKey: string;
tenantId: string;
subscriptionId: string;
constructor(servicePrincipalId: string, servicePrincipalKey: string, tenantId: string, subscriptionId: string) {
this.servicePrincipalId = servicePrincipalId;
this.servicePrincipalKey = servicePrincipalKey;
this.tenantId = tenantId;
this.subscriptionId = subscriptionId;
}
async initialize() {
Utils.setPSModulePath();
const azLatestVersion: string = await Utils.getLatestModule(Constants.moduleName);
core.debug(`Az Module version used: ${azLatestVersion}`);
Utils.setPSModulePath(`${Constants.prefix}${azLatestVersion}`);
}
async login() {
let output: string = "";
const options: any = {
listeners: {
stdout: (data: Buffer) => {
output += data.toString();
}
}
};
const args: any = {
servicePrincipalId: this.servicePrincipalId,
servicePrincipalKey: this.servicePrincipalKey,
subscriptionId: this.subscriptionId,
environment: ServicePrincipalLogin.environment,
scopeLevel: ServicePrincipalLogin.scopeLevel
}
const script: string = new ScriptBuilder().getAzPSLoginScript(ServicePrincipalLogin.scheme, this.tenantId, args);
await PowerShellToolRunner.init();
await PowerShellToolRunner.executePowerShellScriptBlock(script, options);
const result: any = JSON.parse(output.trim());
if (!(Constants.Success in result)) {
throw new Error(`Azure PowerShell login failed with error: ${result[Constants.Error]}`);
}
console.log(`Azure PowerShell session successfully initialized`);
}
}