1
0
mirror of https://github.com/bitwarden/browser.git synced 2024-09-18 02:41:15 +02:00

Moved domain rules page out from modal into it's own page

This commit is contained in:
Kyle Spearrin 2017-02-11 16:46:24 -05:00
parent 3f6637eb8f
commit 55a5fd49dc
7 changed files with 117 additions and 109 deletions

View File

@ -87,6 +87,12 @@ angular
controller: 'settingsController', controller: 'settingsController',
data: { pageTitle: 'Settings' } data: { pageTitle: 'Settings' }
}) })
.state('backend.settingsDomains', {
url: '^/settings/domains',
templateUrl: 'app/settings/views/settingsDomains.html',
controller: 'settingsDomainsController',
data: { pageTitle: 'Domain Settings' }
})
.state('backend.tools', { .state('backend.tools', {
url: '^/tools', url: '^/tools',
templateUrl: 'app/tools/views/tools.html', templateUrl: 'app/tools/views/tools.html',

View File

@ -48,10 +48,6 @@ angular
$scope.$broadcast('vaultAddFolder'); $scope.$broadcast('vaultAddFolder');
}; };
$scope.domains = function () {
$scope.$broadcast('settingsDomains');
};
$scope.import = function () { $scope.import = function () {
$scope.$broadcast('toolsImport'); $scope.$broadcast('toolsImport');
}; };

View File

@ -67,14 +67,6 @@
}); });
}; };
$scope.domains = function () {
$uibModal.open({
animation: true,
templateUrl: 'app/settings/views/settingsDomains.html',
controller: 'settingsDomainsController'
});
};
$scope.delete = function () { $scope.delete = function () {
$uibModal.open({ $uibModal.open({
animation: true, animation: true,

View File

@ -1,9 +1,7 @@
angular angular
.module('bit.settings') .module('bit.settings')
.controller('settingsDomainsController', function ($scope, $state, apiService, $uibModalInstance, toastr, $analytics, $uibModal) { .controller('settingsDomainsController', function ($scope, $state, apiService, toastr, $analytics, $uibModal) {
$analytics.eventTrack('settingsDomainsController', { category: 'Modal' });
$scope.globalEquivalentDomains = []; $scope.globalEquivalentDomains = [];
$scope.equivalentDomains = []; $scope.equivalentDomains = [];
@ -44,7 +42,6 @@
animation: true, animation: true,
templateUrl: 'app/settings/views/settingsAddEditEquivalentDomain.html', templateUrl: 'app/settings/views/settingsAddEditEquivalentDomain.html',
controller: 'settingsAddEditEquivalentDomainController', controller: 'settingsAddEditEquivalentDomainController',
size: 'sm',
resolve: { resolve: {
domainIndex: function () { return i; }, domainIndex: function () { return i; },
domains: function () { return i !== null ? $scope.equivalentDomains[i] : null; } domains: function () { return i !== null ? $scope.equivalentDomains[i] : null; }
@ -65,7 +62,15 @@
}); });
}; };
$scope.save = function () { $scope.saveGlobal = function () {
$scope.globalPromise = save();
};
$scope.saveCustom = function () {
$scope.customPromise = save();
};
var save = function () {
var request = { var request = {
ExcludedGlobalEquivalentDomains: [], ExcludedGlobalEquivalentDomains: [],
EquivalentDomains: [] EquivalentDomains: []
@ -89,13 +94,8 @@
request.ExcludedGlobalEquivalentDomains = null; request.ExcludedGlobalEquivalentDomains = null;
} }
$scope.submitPromise = apiService.settings.putDomains(request, function (domains) { return apiService.settings.putDomains(request, function (domains) {
$scope.close();
toastr.success('Domains have been updated.', 'Success!'); toastr.success('Domains have been updated.', 'Success!');
}).$promise; }).$promise;
}; };
$scope.close = function () {
$uibModalInstance.dismiss('cancel');
};
}); });

View File

@ -17,10 +17,12 @@
<label for="name">Domains</label> <span>*</span> <label for="name">Domains</label> <span>*</span>
<textarea id="domains" name="Domains" ng-model="domains" class="form-control" placeholder="ex. google.com, gmail.com" <textarea id="domains" name="Domains" ng-model="domains" class="form-control" placeholder="ex. google.com, gmail.com"
style="height: 100px;" required></textarea> style="height: 100px;" required></textarea>
<p class="help-block"> <p class="help-block">
Only "base" domains are allowed. Do not enter subdomains. Only "base" domains are allowed. Do not enter subdomains. For example, enter "google.com" instead of
For example, enter "google.com" instead of "www.google.com". "www.google.com".
</p>
<p class="help-block">
You can also enter "androidapp://package.name" to associate an android app with other website domains.
</p> </p>
</div> </div>
</div> </div>

View File

@ -1,83 +1,94 @@
<div class="modal-header"> <section class="content-header">
<button type="button" class="close" ng-click="close()" aria-label="Close"><span aria-hidden="true">&times;</span></button> <h1>Domain Rules</h1>
<h4 class="modal-title"><i class="fa fa-globe"></i> Domain Rules</h4> </section>
</div> <section class="content">
<form name="domainsForm" ng-submit="domainsForm.$valid && save()" api-form="submitPromise"> <p>
<div class="modal-body"> If you have the same login across multiple different website domains, you can mark the website as "equivalent".
<p> "Global" domains are ones already created for you by bitwarden.
If you have the same login across multiple different website domains, you can mark the website as "equivalent". </p>
"Global" domains are ones created for you by bitwarden. <form name="customForm" ng-submit="customForm.$valid && saveCustom()" api-form="customPromise">
</p> <div class="box box-default">
<div class="table-responsive"> <div class="box-header with-border">
<table class="table table-striped table-hover"> <h3 class="box-title">Custom Equivalent Domains</h3>
<thead> <div class="box-tools pull-right">
<tr> <button type="button" class="btn btn-box-tool" ng-click="addEdit(null)">
<th colspan="2">Global Equivalent Domains</th> <i class="fa fa-plus"></i> Add New
</tr> </button>
</thead> </div>
<tbody ng-if="globalEquivalentDomains.length"> </div>
<tr ng-repeat="globalDomain in globalEquivalentDomains"> <div class="box-body no-padding">
<td style="width: 80px; min-width: 80px;"> <div class="table-responsive">
<button type="button" class="btn btn-link btn-table" uib-tooltip="Exclude" <table class="table table-striped table-hover">
ng-if="!globalDomain.excluded" ng-click="toggleExclude(globalDomain)"> <tbody ng-if="equivalentDomains.length">
<i class="fa fa-lg fa-ban"></i> <tr ng-repeat="customDomain in equivalentDomains track by $index">
</button> <td style="width: 80px; min-width: 80px;">
<button type="button" class="btn btn-link btn-table" uib-tooltip="Include" <button type="button" class="btn btn-link btn-table" uib-tooltip="Edit" ng-click="addEdit($index)">
ng-if="globalDomain.excluded" ng-click="toggleExclude(globalDomain)"> <i class="fa fa-lg fa-pencil"></i>
<i class="fa fa-lg fa-plus"></i> </button>
</button> <button type="button" class="btn btn-link btn-table" uib-tooltip="Delete" ng-click="delete($index)">
<button type="button" class="btn btn-link btn-table" uib-tooltip="Customize" <i class="fa fa-lg fa-trash"></i>
ng-click="customize(globalDomain)"> </button>
<i class="fa fa-lg fa-cut"></i> </td>
</button> <td>{{customDomain}}</td>
</td> </tr>
<td ng-class="{strike: globalDomain.excluded}">{{globalDomain.domains}}</td> </tbody>
</tr> <tbody ng-if="!equivalentDomains.length">
</tbody> <tr>
<tbody ng-if="!globalEquivalentDomains.length"> <td>No domains to list.</td>
<tr> </tr>
<td>No domains to list.</td> </tbody>
</tr> </table>
</tbody> </div>
</table> </div>
<div class="box-footer">
<button type="submit" class="btn btn-primary btn-flat" ng-disabled="customForm.$loading">
<i class="fa fa-refresh fa-spin loading-icon" ng-show="customForm.$loading"></i>Save
</button>
</div>
</div> </div>
<div class="table-responsive"> </form>
<table class="table table-striped table-hover">
<thead> <form name="globalForm" ng-submit="globalForm.$valid && saveGlobal()" api-form="globalPromise">
<tr> <div class="box box-default">
<th colspan="2"> <div class="box-header with-border">
Custom Equivalent Domains <h3 class="box-title">Global Equivalent Domains</h3>
<a href="javascript:void(0)" ng-click="addEdit(null)"> </div>
<i class="fa fa-plus"></i> Add New <div class="box-body no-padding">
</a> <div class="table-responsive">
</th> <table class="table table-striped table-hover">
</tr> <tbody ng-if="globalEquivalentDomains.length">
</thead> <tr ng-repeat="globalDomain in globalEquivalentDomains">
<tbody ng-if="equivalentDomains.length"> <td style="width: 80px; min-width: 80px;">
<tr ng-repeat="customDomain in equivalentDomains track by $index"> <button type="button" class="btn btn-link btn-table" uib-tooltip="Exclude"
<td style="width: 80px; min-width: 80px;"> ng-if="!globalDomain.excluded" ng-click="toggleExclude(globalDomain)">
<button type="button" class="btn btn-link btn-table" uib-tooltip="Edit" ng-click="addEdit($index)"> <i class="fa fa-lg fa-ban"></i>
<i class="fa fa-lg fa-pencil"></i> </button>
</button> <button type="button" class="btn btn-link btn-table" uib-tooltip="Include"
<button type="button" class="btn btn-link btn-table" uib-tooltip="Delete" ng-click="delete($index)"> ng-if="globalDomain.excluded" ng-click="toggleExclude(globalDomain)">
<i class="fa fa-lg fa-trash"></i> <i class="fa fa-lg fa-plus"></i>
</button> </button>
</td> <button type="button" class="btn btn-link btn-table" uib-tooltip="Customize"
<td>{{customDomain}}</td> ng-click="customize(globalDomain)">
</tr> <i class="fa fa-lg fa-cut"></i>
</tbody> </button>
<tbody ng-if="!equivalentDomains.length"> </td>
<tr> <td ng-class="{strike: globalDomain.excluded}">{{globalDomain.domains}}</td>
<td>No domains to list.</td> </tr>
</tr> </tbody>
</tbody> <tbody ng-if="!globalEquivalentDomains.length">
</table> <tr>
<td>No domains to list.</td>
</tr>
</tbody>
</table>
</div>
</div>
<div class="box-footer">
<button type="submit" class="btn btn-primary btn-flat" ng-disabled="globalForm.$loading">
<i class="fa fa-refresh fa-spin loading-icon" ng-show="globalForm.$loading"></i>Save
</button>
</div>
</div> </div>
</div> </form>
<div class="modal-footer"> </section>
<button type="submit" class="btn btn-primary btn-flat" ng-disabled="domainsForm.$loading">
<i class="fa fa-refresh fa-spin loading-icon" ng-show="domainsForm.$loading"></i>Save
</button>
<button type="button" class="btn btn-default btn-flat" ng-click="close()">Close</button>
</div>
</form>

View File

@ -56,11 +56,12 @@
</li> </li>
</ul> </ul>
</li> </li>
<li class="treeview" ng-class="{active: $state.includes('backend.settings')}"> <li class="treeview"
ng-class="{active: $state.includes('backend.settings') || $state.includes('backend.settingsDomains')}">
<a ui-sref="backend.settings"><i class="fa fa-cogs"></i> <span>Settings</span></a> <a ui-sref="backend.settings"><i class="fa fa-cogs"></i> <span>Settings</span></a>
<ul class="treeview-menu"> <ul class="treeview-menu">
<li> <li>
<a href="javascript:void(0)" ng-click="domains()"> <a ui-sref="backend.settingsDomains">
<i class="fa fa-circle-o"></i> Domain Rules <i class="fa fa-circle-o"></i> Domain Rules
</a> </a>
</li> </li>