mirror of
https://github.com/ckaczor/azuredatastudio.git
synced 2026-02-05 01:25:38 -05:00
Add default auth type configuration setting for Azure resources (#16999)
* Adding user config for default auth type * adding feature * removing the SqlLogin default from the model * fixing bug, removing dead code * removing unneeded instance of configurationService * fixing line break * removing extra parameter * removing comments * Fix test breaks * Fix build break * More breaks * Address code review feedback Co-authored-by: Troy Witthoeft <troy.witthoeft@gmail.com>
This commit is contained in:
@@ -152,6 +152,16 @@ export class ConnectionDialogService implements IConnectionDialogService {
|
||||
return defaultProvider || Constants.mssqlProviderName;
|
||||
}
|
||||
|
||||
private getDefaultAuthenticationTypeName(): string {
|
||||
let defaultAuthenticationType: string;
|
||||
if (!defaultAuthenticationType && this._configurationService) {
|
||||
defaultAuthenticationType = WorkbenchUtils.getSqlConfigValue<string>(this._configurationService, Constants.defaultAuthenticationType);
|
||||
}
|
||||
|
||||
return defaultAuthenticationType || Constants.sqlLogin; // as a fallback, default to sql login if the value from settings is not available
|
||||
|
||||
}
|
||||
|
||||
private handleOnConnect(params: INewConnectionParams, profile?: IConnectionProfile): void {
|
||||
this._logService.debug('ConnectionDialogService: onConnect event is received');
|
||||
if (!this._connecting) {
|
||||
@@ -383,6 +393,14 @@ export class ConnectionDialogService implements IConnectionDialogService {
|
||||
if (model && !model.providerName) {
|
||||
model.providerName = providerName;
|
||||
}
|
||||
|
||||
const defaultAuthenticationType = this.getDefaultAuthenticationTypeName();
|
||||
let authenticationTypeName = model ? model.authenticationType : defaultAuthenticationType;
|
||||
authenticationTypeName = authenticationTypeName ? authenticationTypeName : defaultAuthenticationType;
|
||||
if (model && !model.authenticationType) {
|
||||
model.authenticationType = authenticationTypeName;
|
||||
}
|
||||
|
||||
let newProfile = new ConnectionProfile(this._capabilitiesService, model || providerName);
|
||||
newProfile.saveProfile = true;
|
||||
newProfile.generateNewId();
|
||||
|
||||
@@ -306,6 +306,11 @@ export class ConnectionManagementService extends Disposable implements IConnecti
|
||||
// Fill in the Azure account token if needed and open the connection dialog if it fails
|
||||
let tokenFillSuccess = await this.fillInOrClearToken(newConnection);
|
||||
|
||||
// If there is no authentication type set, set it using configuration
|
||||
if (!newConnection.authenticationType || newConnection.authenticationType === '') {
|
||||
newConnection.authenticationType = this.getDefaultAuthenticationTypeId();
|
||||
}
|
||||
|
||||
// If the password is required and still not loaded show the dialog
|
||||
if ((!foundPassword && this._connectionStore.isPasswordRequired(newConnection) && !newConnection.password) || !tokenFillSuccess) {
|
||||
return this.showConnectionDialogOnError(connection, owner, { connected: false, errorMessage: undefined, callStack: undefined, errorCode: undefined }, options);
|
||||
@@ -792,6 +797,11 @@ export class ConnectionManagementService extends Disposable implements IConnecti
|
||||
return defaultProvider && this._providers.has(defaultProvider) ? defaultProvider : undefined;
|
||||
}
|
||||
|
||||
public getDefaultAuthenticationTypeId(): string {
|
||||
let defaultAuthenticationType = WorkbenchUtils.getSqlConfigValue<string>(this._configurationService, Constants.defaultAuthenticationType);
|
||||
return defaultAuthenticationType;
|
||||
}
|
||||
|
||||
/**
|
||||
* Previously, the only resource available for AAD access tokens was for Azure SQL / SQL Server.
|
||||
* Use that as a default if the provider extension does not configure a different one. If one is
|
||||
|
||||
Reference in New Issue
Block a user