diff --git a/src/app/constants.js b/src/app/constants.js index f1cdae3bb1..77dffe75ea 100644 --- a/src/app/constants.js +++ b/src/app/constants.js @@ -77,6 +77,7 @@ angular.module('bit') description: 'Verification codes will be emailed to you.', enabled: false, active: true, + free: true, image: 'gmail.png', displayOrder: 4, priority: 0 diff --git a/src/app/global/premiumRequiredController.js b/src/app/global/premiumRequiredController.js new file mode 100644 index 0000000000..6d64ee16fc --- /dev/null +++ b/src/app/global/premiumRequiredController.js @@ -0,0 +1,17 @@ +angular + .module('bit.global') + + .controller('premiumRequiredController', function ($scope, $state, $uibModalInstance, $analytics) { + $analytics.eventTrack('premiumRequiredController', { category: 'Modal' }); + + $scope.go = function () { + $analytics.eventTrack('Get Premium'); + $state.go('backend.user.settingsPremium').then(function () { + $scope.close(); + }); + }; + + $scope.close = function () { + $uibModalInstance.dismiss('close'); + }; + }); diff --git a/src/app/settings/settingsTwoStepController.js b/src/app/settings/settingsTwoStepController.js index 4ca68d108c..2cc753a5a0 100644 --- a/src/app/settings/settingsTwoStepController.js +++ b/src/app/settings/settingsTwoStepController.js @@ -2,23 +2,40 @@ .module('bit.settings') .controller('settingsTwoStepController', function ($scope, apiService, toastr, $analytics, constants, - $filter, $uibModal) { + $filter, $uibModal, authService) { $scope.providers = constants.twoFactorProviderInfo; + $scope.premium = true; - apiService.twoFactor.list({}, function (response) { - for (var i = 0; i < response.Data.length; i++) { - if (!response.Data[i].Enabled) { - continue; - } + authService.getUserProfile().then(function (profile) { + $scope.premium = profile.premium; + return apiService.twoFactor.list({}).$promise; + }).then(function (response) { + if (response.Data) { + for (var i = 0; i < response.Data.length; i++) { + if (!response.Data[i].Enabled) { + continue; + } - var provider = $filter('filter')($scope.providers, { type: response.Data[i].Type }); - if (provider.length) { - provider[0].enabled = true; + var provider = $filter('filter')($scope.providers, { type: response.Data[i].Type }); + if (provider.length) { + provider[0].enabled = true; + } } } + + return; }); $scope.edit = function (provider) { + if (!$scope.premium && !provider.free) { + $uibModal.open({ + animation: true, + templateUrl: 'app/views/premiumRequired.html', + controller: 'premiumRequiredController' + }); + return; + } + if (provider.type === constants.twoFactorProvider.authenticator) { typeName = 'Authenticator'; } diff --git a/src/app/settings/views/settingsPremium.html b/src/app/settings/views/settingsPremium.html index 2845ff1f63..633128f541 100644 --- a/src/app/settings/views/settingsPremium.html +++ b/src/app/settings/views/settingsPremium.html @@ -11,7 +11,7 @@