mirror of
https://github.com/nextcloud/passman.git
synced 2024-09-20 14:56:21 +08:00
Add logout of vault
This commit is contained in:
parent
ba62b5b85a
commit
fc28988da4
21
css/app.css
21
css/app.css
|
@ -17,6 +17,7 @@
|
||||||
.popovermenu {
|
.popovermenu {
|
||||||
margin-top: 7px;
|
margin-top: 7px;
|
||||||
height: 100px;
|
height: 100px;
|
||||||
|
width: 100px;
|
||||||
right: -2px !important; }
|
right: -2px !important; }
|
||||||
.popovermenu ul {
|
.popovermenu ul {
|
||||||
display: block;
|
display: block;
|
||||||
|
@ -103,4 +104,24 @@
|
||||||
.credential-table tr td .icon-more:hover {
|
.credential-table tr td .icon-more:hover {
|
||||||
opacity: 1; }
|
opacity: 1; }
|
||||||
|
|
||||||
|
.settings-container div {
|
||||||
|
padding-left: 15px; }
|
||||||
|
.settings-container div .link {
|
||||||
|
color: #0066ff !important;
|
||||||
|
cursor: pointer; }
|
||||||
|
.settings-container div .link:hover {
|
||||||
|
text-decoration: underline; }
|
||||||
|
|
||||||
|
#app-settings-content:not(.ng-hide) {
|
||||||
|
height: 60px;
|
||||||
|
display: inherit !important;
|
||||||
|
padding: 0;
|
||||||
|
transition: height 0.15s ease-out; }
|
||||||
|
|
||||||
|
#app-settings-content.ng-hide {
|
||||||
|
display: inherit !important;
|
||||||
|
height: 0;
|
||||||
|
padding: 0;
|
||||||
|
transition: height 0.15s ease-in; }
|
||||||
|
|
||||||
/*# sourceMappingURL=app.css.map */
|
/*# sourceMappingURL=app.css.map */
|
||||||
|
|
|
@ -1,7 +1,7 @@
|
||||||
{
|
{
|
||||||
"version": 3,
|
"version": 3,
|
||||||
"mappings": "AAAA,YAAY;EACV,UAAU,EAAE,OAAO;EACnB,KAAK,EAAE,IAAI;;AAEb,kBAAkB;EAChB,UAAU,EAAE,OAAoB;EAChC,KAAK,EAAE,IAAI;;AAGb,WAAW;EACT,UAAU,EAAE,OAAO;EACnB,KAAK,EAAE,IAAI;;AAEb,iBAAiB;EACf,UAAU,EAAE,OAAoB;EAChC,KAAK,EAAE,IAAI;;ACfb,YAAa;EACX,UAAU,EAAE,GAAG;EACf,MAAM,EAAE,KAAK;EACb,KAAK,EAAE,eAAe;EACtB,eAAG;IACD,OAAO,EAAE,KAAK;IACd,KAAK,EAAE,KAAK;IACZ,MAAM,EAAE,IAAI;IACZ,kBAAE;MACA,OAAO,EAAE,GAAG;IAEd,yBAAS;MACL,SAAS,EAAE,IAAI;MACf,OAAO,EAAE,MAAM;EAGrB,oBAAQ;IACN,OAAO,EAAE,IAAI;IACb,MAAM,EAAE,KAAK;;ACjBjB,cAAc;EACZ,MAAM,EAAE,MAAM;EACd,UAAU,EAAE,IAAI;EAChB,KAAK,EAAE,IAAI;EACX,SAAS,EAAE,KAAK;ECMhB,qBAAqB,EDLE,GAAG;ECM1B,aAAa,EDNU,GAAG;ECO1B,eAAe,EAAE,WAAW;EAAG,qDAAqD;EDNpF,UAAU,EAAE,cAAc;EAC1B,UAAU,EAAE,IAAI;EAChB,OAAO,EAAE,KAAK;EACd,yBAAU;IAER,OAAO,EAAE,GAAG;IACZ,4HAAiB;MACf,MAAM,EAAE,OAAO;IAEjB,+BAAK;MACH,KAAK,EAAE,OAAO;IAEhB,qCAAW;MACT,gBAAgB,EAAE,kBAAkB;MACpC,KAAK,EAAE,IAAI;IAEb,4BAAE;MACA,aAAa,EAAE,iBAAiB;MAChC,OAAO,EAAE,IAAI;IAEf,kCAAQ;MACN,gBAAgB,EAAE,OAAO;EAG7B,0BAAW;IACT,OAAO,EAAE,IAAI;IACb,iCAAM;MACJ,KAAK,EAAE,OAAO;IAEhB,gGAA0C;MACxC,KAAK,EAAE,IAAI;MC1Bf,qBAAqB,ED2BM,GAAG;MC1B9B,aAAa,ED0Bc,GAAG;MCzB9B,eAAe,EAAE,WAAW;MAAG,qDAAqD;ID4BhF,kDAAO;MACL,KAAK,EAAE,GAAG;MACV,OAAO,EAAE,YAAY;IAGzB,kCAAO;MACL,UAAU,EAAE,IAAI;;AAKtB,oCAAoC;EAClC,cAAc;IACZ,KAAK,EAAE,GAAG;AEtDd,iBAAiB;EACf,KAAK,EAAE,IAAI;EACX,UAAU,EAAE,IAAI;EAChB,0BAAQ;IACN,gBAAgB,EAAE,UAAgB;EAGlC,uBAAE;IACA,MAAM,EAAE,OAAO;IACf,OAAO,EAAE,GAAG;IACZ,aAAa,EAAE,iBAAiB;IAChC,6BAAK;MACH,KAAK,EAAE,KAAK;MACZ,kCAAI;QACF,gBAAgB,EAAE,wBAAoB;QACtC,OAAO,EAAE,GAAG;QACZ,SAAS,EAAE,IAAI;IAGnB,kCAAU;MACR,OAAO,EAAE,YAAY;MACrB,KAAK,EAAE,KAAK;MACZ,WAAW,EAAE,GAAG;MAChB,UAAU,EAAE,GAAG;MACf,OAAO,EAAE,GAAG;MACZ,MAAM,EAAE,IAAI;MACZ,KAAK,EAAE,IAAI;MACX,MAAM,EAAE,OAAO;IAEjB,wCAAgB;MACd,OAAO,EAAE,CAAC",
|
"mappings": "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",
|
||||||
"sources": ["../sass/partials/button.scss","../sass/partials/popovermenu.scss","../sass/vaults.scss","../sass/mixins.scss","../sass/credentials.scss"],
|
"sources": ["../sass/partials/button.scss","../sass/partials/popovermenu.scss","../sass/vaults.scss","../sass/mixins.scss","../sass/credentials.scss","../sass/menu.scss","../sass/app.scss"],
|
||||||
"names": [],
|
"names": [],
|
||||||
"file": "app.css"
|
"file": "app.css"
|
||||||
}
|
}
|
||||||
|
|
|
@ -8,7 +8,7 @@
|
||||||
* Controller of the passmanApp
|
* Controller of the passmanApp
|
||||||
*/
|
*/
|
||||||
angular.module('passmanApp')
|
angular.module('passmanApp')
|
||||||
.controller('CredentialCtrl', ['$scope', 'VaultService', 'SettingsService', '$location', 'CredentialService', function ($scope, VaultService, SettingsService, $location, CredentialService) {
|
.controller('CredentialCtrl', ['$scope', 'VaultService', 'SettingsService', '$location', 'CredentialService', '$rootScope', function ($scope, VaultService, SettingsService, $location, CredentialService, $rootScope) {
|
||||||
$scope.active_vault = VaultService.getActiveVault();
|
$scope.active_vault = VaultService.getActiveVault();
|
||||||
if(! SettingsService.getSetting('defaultVault') || ! SettingsService.getSetting('defaultVaultPass')){
|
if(! SettingsService.getSetting('defaultVault') || ! SettingsService.getSetting('defaultVaultPass')){
|
||||||
if(!$scope.active_vault){
|
if(!$scope.active_vault){
|
||||||
|
@ -24,6 +24,13 @@ angular.module('passmanApp')
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
$rootScope.$on('logout', function(){
|
||||||
|
console.log('Logout received, clean up');
|
||||||
|
$scope.credentials = [];
|
||||||
|
$scope.$parent.selectedVault = false;
|
||||||
|
$scope.active_vault = null;
|
||||||
|
});
|
||||||
|
|
||||||
var fetchCredentials = function(){
|
var fetchCredentials = function(){
|
||||||
VaultService.getVault($scope.active_vault).then(function(credentials) {
|
VaultService.getVault($scope.active_vault).then(function(credentials) {
|
||||||
var _credentials = [];
|
var _credentials = [];
|
||||||
|
|
|
@ -8,10 +8,10 @@
|
||||||
* Controller of the passmanApp
|
* Controller of the passmanApp
|
||||||
*/
|
*/
|
||||||
angular.module('passmanApp')
|
angular.module('passmanApp')
|
||||||
.controller('MenuCtrl', function () {
|
.controller('MenuCtrl', ['$scope', 'VaultService', 'SettingsService', '$location', '$rootScope', function ($scope, VaultService, SettingsService, $location, $rootScope) {
|
||||||
this.awesomeThings = [
|
$scope.logout = function () {
|
||||||
'HTML5 Boilerplate',
|
SettingsService.setSetting('defaultVaultPass', false);
|
||||||
'AngularJS',
|
$rootScope.$broadcast('logout');
|
||||||
'Karma'
|
$location.path('/');
|
||||||
];
|
}
|
||||||
});
|
}]);
|
||||||
|
|
|
@ -23,6 +23,9 @@ angular.module('passmanApp')
|
||||||
if(vault.guid == default_vault.guid){
|
if(vault.guid == default_vault.guid){
|
||||||
$scope.default_vault = true;
|
$scope.default_vault = true;
|
||||||
$scope.list_selected_vault = SettingsService.getSetting('defaultVault');
|
$scope.list_selected_vault = SettingsService.getSetting('defaultVault');
|
||||||
|
if(SettingsService.getSetting('defaultVaultPass') != ''){
|
||||||
|
$location.path('/vault/'+ vault.vault_id);
|
||||||
|
}
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -6,4 +6,17 @@
|
||||||
@import 'partials/popovermenu';
|
@import 'partials/popovermenu';
|
||||||
@import 'vaults';
|
@import 'vaults';
|
||||||
@import 'credentials';
|
@import 'credentials';
|
||||||
@import 'menu';
|
@import 'menu';
|
||||||
|
|
||||||
|
#app-settings-content:not(.ng-hide) {
|
||||||
|
height: 60px;
|
||||||
|
display: inherit !important;
|
||||||
|
padding: 0;
|
||||||
|
transition: height 0.15s ease-out;
|
||||||
|
}
|
||||||
|
#app-settings-content.ng-hide{
|
||||||
|
display: inherit !important;
|
||||||
|
height: 0;
|
||||||
|
padding: 0;
|
||||||
|
transition: height 0.15s ease-in;
|
||||||
|
}
|
|
@ -0,0 +1,12 @@
|
||||||
|
.settings-container{
|
||||||
|
div{
|
||||||
|
padding-left: 15px;
|
||||||
|
.link{
|
||||||
|
color: rgb(0, 102, 255) !important;
|
||||||
|
cursor: pointer;
|
||||||
|
}
|
||||||
|
.link:hover{
|
||||||
|
text-decoration: underline;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
|
@ -1,6 +1,7 @@
|
||||||
.popovermenu {
|
.popovermenu {
|
||||||
margin-top: 7px;
|
margin-top: 7px;
|
||||||
height: 100px;
|
height: 100px;
|
||||||
|
width: 100px;
|
||||||
right: -2px !important;
|
right: -2px !important;
|
||||||
ul {
|
ul {
|
||||||
display: block;
|
display: block;
|
||||||
|
|
|
@ -17,6 +17,7 @@ script('passman', 'vendor/sjcl/sjcl');
|
||||||
script('passman', 'app/app');
|
script('passman', 'app/app');
|
||||||
script('passman', 'templates');
|
script('passman', 'templates');
|
||||||
script('passman', 'app/controllers/main');
|
script('passman', 'app/controllers/main');
|
||||||
|
script('passman', 'app/controllers/menu');
|
||||||
script('passman', 'app/controllers/vault');
|
script('passman', 'app/controllers/vault');
|
||||||
script('passman', 'app/controllers/credential');
|
script('passman', 'app/controllers/credential');
|
||||||
script('passman', 'app/filters/propsfilter');
|
script('passman', 'app/filters/propsfilter');
|
||||||
|
@ -34,7 +35,7 @@ style('passman', 'app');
|
||||||
?>
|
?>
|
||||||
|
|
||||||
<div id="app" ng-app="passmanApp" ng-controller="MainCtrl">
|
<div id="app" ng-app="passmanApp" ng-controller="MainCtrl">
|
||||||
<div id="app-navigation" ng-if="selectedVault">
|
<div id="app-navigation" ng-if="selectedVault" ng-controller="MenuCtrl">
|
||||||
<ul>
|
<ul>
|
||||||
<li><a href="#">First level entry</a></li>
|
<li><a href="#">First level entry</a></li>
|
||||||
<li>
|
<li>
|
||||||
|
@ -45,14 +46,18 @@ style('passman', 'app');
|
||||||
</ul>
|
</ul>
|
||||||
</li>
|
</li>
|
||||||
</ul>
|
</ul>
|
||||||
<div id="app-settings">
|
<div id="app-settings" ng-init="settingsShown = false;">
|
||||||
<div id="app-settings-header">
|
<div id="app-settings-header">
|
||||||
<button class="settings-button"
|
<button class="settings-button"
|
||||||
data-apps-slide-toggle="#app-settings-content"
|
ng-click="settingsShown = !settingsShown"
|
||||||
></button>
|
>Settings</button>
|
||||||
</div>
|
</div>
|
||||||
<div id="app-settings-content">
|
<div id="app-settings-content" ng-show="settingsShown">
|
||||||
<!-- Your settings in here -->
|
<!-- Your settings in here -->
|
||||||
|
<div class="settings-container">
|
||||||
|
<div><span class="link">Settings</span></div>
|
||||||
|
<div><span class="link" ng-click="logout()">Logout</span></div>
|
||||||
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
Loading…
Reference in a new issue