bitwarden-estensione-browser/src/popup/app/config.js

111 lines
4.0 KiB
JavaScript

angular
.module('bit')
.config(function ($stateProvider, $urlRouterProvider, $httpProvider, jwtInterceptorProvider) {
jwtInterceptorProvider.urlParam = 'access_token';
jwtInterceptorProvider.tokenGetter = /*@ngInject*/ function (config, appSettings, tokenService) {
if (config.url.indexOf(appSettings.apiUri) === 0) {
tokenService.getToken(function (token) {
return token;
});
}
};
if ($httpProvider.defaults.headers.post) {
$httpProvider.defaults.headers.post = {};
}
$httpProvider.defaults.headers.post['Content-Type'] = 'text/plain; charset=utf-8';
//$httpProvider.interceptors.push('apiInterceptor');
$httpProvider.interceptors.push('jwtInterceptor');
$urlRouterProvider.otherwise(function ($injector, $location) {
var $state = $injector.get("$state");
$state.go("login");
});
$stateProvider
.state('login', {
url: "/login",
controller: 'accountsLoginController',
templateUrl: "app/accounts/views/accountsLogin.html",
data: {
authorize: false
}
})
.state('login.twoFactor', {
url: "/two-factor",
controller: 'accountsLoginController',
templateUrl: "app/accounts/views/accountsLoginTwoFactor.html"
})
.state('tabs', {
url: "/tab",
abstract: true,
templateUrl: "app/global/tabs.html",
data: {
authorize: true
}
})
.state('tabs.current', {
url: "/current",
views: {
'current-tab': {
templateUrl: "app/current/views/current.html",
controller: 'currentController'
}
}
})
.state('tabs.vault', {
url: "/vault",
views: {
'vault-tab': {
templateUrl: "app/vault/views/vault.html",
controller: 'vaultController'
}
}
})
.state('tabs.settings', {
url: "/settings",
views: {
'settings-tab': {
templateUrl: "app/settings/views/settings.html",
controller: 'settingsController'
}
}
})
.state('tabs.tools', {
url: "/tools",
views: {
'tools-tab': {
templateUrl: "app/tools/views/tools.html",
controller: 'toolsController'
}
}
});
})
.run(function ($rootScope, userService, loginService, jwtHelper, tokenService, $state) {
$rootScope.$on('$stateChangeStart', function (event, toState, toParams) {
tokenService.getToken(function (token) {
userService.isAuthenticated(function (isAuthenticated) {
if (!toState.data || !toState.data.authorize) {
if (isAuthenticated && !jwtHelper.isTokenExpired(token)) {
event.preventDefault();
$state.go('tabs.current');
}
return;
}
if (!isAuthenticated || jwtHelper.isTokenExpired(token)) {
event.preventDefault();
loginService.logOut(function () {
$state.go('login');
});
}
});
});
});
});