diff --git a/app/portainer/oauth/components/oauth-settings/oauth-settings.controller.js b/app/portainer/oauth/components/oauth-settings/oauth-settings.controller.js index 096512792..52d2e4867 100644 --- a/app/portainer/oauth/components/oauth-settings/oauth-settings.controller.js +++ b/app/portainer/oauth/components/oauth-settings/oauth-settings.controller.js @@ -1,14 +1,18 @@ import { baseHref } from '@/portainer/helpers/pathHelper'; -import { isLimitedToBE } from '@/react/portainer/feature-flags/feature-flags.service'; import { FeatureId } from '@/react/portainer/feature-flags/enums'; +import { isLimitedToBE } from '@/react/portainer/feature-flags/feature-flags.service'; +import { ModalType } from '@@/modals'; +import { confirm } from '@@/modals/confirm'; +import { buildConfirmButton } from '@@/modals/utils'; + import providers, { getProviderByUrl } from './providers'; const MS_TENANT_ID_PLACEHOLDER = 'TENANT_ID'; export default class OAuthSettingsController { /* @ngInject */ - constructor($scope) { - Object.assign(this, { $scope }); + constructor($scope, $async) { + Object.assign(this, { $scope, $async }); this.limitedFeature = FeatureId.HIDE_INTERNAL_AUTH; this.limitedFeatureClass = 'limited-be'; @@ -69,15 +73,30 @@ export default class OAuthSettingsController { updateSSO(checked) { this.$scope.$evalAsync(() => { this.settings.SSO = checked; - this.onChangeHideInternalAuth(checked); + this.settings.HideInternalAuth = false; }); } - onChangeHideInternalAuth(checked) { - this.$scope.$evalAsync(() => { - if (!this.isLimitedToBE) { - this.settings.HideInternalAuth = checked; + async onChangeHideInternalAuth(checked) { + this.$async(async () => { + if (this.isLimitedToBE) { + return; } + + if (checked) { + const confirmed = await confirm({ + title: 'Hide internal authentication prompt', + message: 'By hiding internal authentication prompt, you will only be able to login via SSO. Are you sure?', + confirmButton: buildConfirmButton('Confirm', 'btn-warning'), + modalType: ModalType.Warn, + }); + + if (!confirmed) { + return; + } + } + + this.settings.HideInternalAuth = checked; }); }