Skip to content

Commit

Permalink
RVD security code cleanup. Also added user information the menu and u…
Browse files Browse the repository at this point in the history
…pdated logout operation.
  • Loading branch information
otsakir committed Apr 30, 2015
1 parent 244d5ea commit 1c224b7
Show file tree
Hide file tree
Showing 6 changed files with 50 additions and 147 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -124,11 +124,9 @@ public Response listApps(@Context HttpServletRequest request) {

KeycloakSecurityContext session = (KeycloakSecurityContext) request.getAttribute(KeycloakSecurityContext.class.getName());
IDToken idToken = session.getIdToken();
logger.info("EMAIL: " + idToken.getEmail() );
logger.info("NAME: " + idToken.getName() );
logger.info("Username: " + idToken.getPreferredUsername() );


//logger.info("EMAIL: " + idToken.getEmail() );
//logger.info("NAME: " + idToken.getName() );
//logger.info("Username: " + idToken.getPreferredUsername() );

RvdContext rvdContext = new RvdContext(request, servletContext);
ProjectService projectService = new ProjectService(rvdContext, workspaceStorage);
Expand Down
22 changes: 3 additions & 19 deletions restcomm/restcomm.rvd/src/main/webapp/app.js
Original file line number Diff line number Diff line change
Expand Up @@ -5,23 +5,16 @@ App.config([ '$routeProvider', '$translateProvider', function($routeProvider, $t

$routeProvider.when('/project-manager/:projectKind', {
templateUrl : 'templates/projectManager.html',
controller : 'projectManagerCtrl',
resolve: {
authInfo: function (authentication) {return authentication.authResolver();}
}
controller : 'projectManagerCtrl'
})
.when('/home', {
templateUrl : 'templates/home.html',
controller : 'homeCtrl',
resolve: {
authInfo: function (authentication) {return authentication.authResolver();}
}
controller : 'homeCtrl'
})
.when('/designer/:projectName', {
templateUrl : 'templates/designer.html',
controller : 'designerCtrl',
resolve: {
authInfo: function (authentication) {return authentication.authResolver();},
projectSettings: function (projectSettingsService, $route) {return projectSettingsService.retrieve($route.current.params.projectName);},
project: function(designerService, $route) { return designerService.openProject($route.current.params.projectName); },
bundledWavs: function(designerService) { return designerService.getBundledWavs()}
Expand All @@ -32,7 +25,6 @@ App.config([ '$routeProvider', '$translateProvider', function($routeProvider, $t
controller : 'packagingCtrl',
resolve: {
rappWrap: function(RappService) {return RappService.getRapp();},
authInfo: function (authentication) {return authentication.authResolver();},
rvdSettingsResolver: function (rvdSettings) {return rvdSettings.refresh();} // not meant to return anything back. Just trigger the fetching of the settings
}
})
Expand All @@ -41,20 +33,12 @@ App.config([ '$routeProvider', '$translateProvider', function($routeProvider, $t
controller : 'packagingDownloadCtrl',
resolve: {
binaryInfo: packagingDownloadCtrl.getBinaryInfo,
authInfo: function (authentication) {return authentication.authResolver();}
}
})
.when('/upgrade/:projectName', {
templateUrl : 'templates/upgrade.html',
controller : 'upgradeCtrl',
resolve: {
authInfo: function (authentication) {return authentication.authResolver();}
}
controller : 'upgradeCtrl'
})
//.when('/login', {
// templateUrl : 'templates/login.html',
// controller : 'loginCtrl'
//})
.when('/designer/:projectName/log', {
templateUrl : 'templates/projectLog.html',
controller : 'projectLogCtrl'
Expand Down
40 changes: 9 additions & 31 deletions restcomm/restcomm.rvd/src/main/webapp/controllers.js
Original file line number Diff line number Diff line change
@@ -1,12 +1,12 @@
App.controller('AppCtrl', function ($rootScope, $location) {
$rootScope.$on("$routeChangeError", function(event, current, previous, rejection) {
//console.log('on $routeChangeError');
if ( rejection == "AUTHENTICATION_ERROR" ) {
console.log("AUTHENTICATION_ERROR");
$location.path("/login");
} else {
//if ( rejection == "AUTHENTICATION_ERROR" ) {
// console.log("AUTHENTICATION_ERROR");
// $location.path("/login");
//} else {
$rootScope.rvdError = rejection;
}
//}
});

$rootScope.$on("resourceNotFound", function(p1, p2) {
Expand All @@ -19,24 +19,7 @@ App.controller('AppCtrl', function ($rootScope, $location) {
});
});

/*
var loginCtrl = angular.module('Rvd')
.controller('loginCtrl', ['authentication', '$scope', '$http', 'notifications', '$location', function (authentication, $scope, $http, notifications, $location) {
// console.log("run loginCtrl ");
authentication.clearTicket();
$scope.doLogin = function (username, password) {
authentication.doLogin(username,password).then(function () {
$location.path("/home");
}, function () {
notifications.put({message:"Login failed", type:"danger"});
})
}
}]);
*/


App.controller('homeCtrl', function ($scope, authInfo) {
App.controller('homeCtrl', function ($scope) {
});

angular.module('Rvd').controller('projectLogCtrl', ['$scope', '$routeParams', 'projectLogService', function ($scope, $routeParams, projectLogService) {
Expand All @@ -57,18 +40,13 @@ angular.module('Rvd').controller('projectLogCtrl', ['$scope', '$routeParams', 'p
retrieveLog($scope.projectName);
}]);

App.controller('mainMenuCtrl', ['$scope', 'authentication', '$location', '$modal','$q', '$http', function ($scope, authentication, $location, $modal, $q, $http) {
$scope.authInfo = authentication.getAuthInfo();
App.controller('mainMenuCtrl', ['$scope', '$location', '$modal','$q', '$http', 'auth', function ($scope, $location, $modal, $q, $http, auth ) {
//$scope.authInfo = authentication.getAuthInfo();
//$scope.username = authentication.getTicket(); //"Testuser@test.com";
$scope.auth = auth;

function logout() {
console.log("logging out - NOT IMPLEMENTED");
/*
authentication.doLogout().then(function () {
$location.path("/login");
}, function () {
$location.path("/login");
});*/
}
$scope.logout = logout;

Expand Down
12 changes: 8 additions & 4 deletions restcomm/restcomm.rvd/src/main/webapp/index.html
Original file line number Diff line number Diff line change
Expand Up @@ -33,24 +33,28 @@
</div>
<nav class="collabse navbar-collapse" role="navigation">
<ul class="nav navbar-nav navbar-right">
<li ng-if="authInfo.rvdticket" class="dropdown">
<a href="#" class="dropdown-toggle" data-toggle="dropdown"><i class="fa fa-user"></i> {{authInfo.username}} <b class="caret"></b></a>

<li class="dropdown">
<a href="#" class="dropdown-toggle" data-toggle="dropdown"><i class="fa fa-user"></i> {{auth.getLoggedUsername()}} <b class="caret"></b></a>
<ul id="rightMenu" class="dropdown-menu pull-right">
<li>
<a class="rvd-clickable-text" ng-click="logout()"><i class="fa fa-sign-out"></i>{{'indexUserStatusControllerLabel' | translate}}</a>
<li ng-show="auth.isLogged()">
<a class="rvd-clickable-text" ng-click="auth.logout()"><i class="fa fa-sign-out"></i>{{'indexUserStatusControllerLabel' | translate}}</a>
</li>
</ul>
</li>

<li class="dropdown" ng-controller="translateController">
<a href="#" class="dropdown-toggle" data-toggle="dropdown" title="{{'indexSwitchLanguageTitle' | translate}}"><i class="fa fa-language"></i></a>
<ul class="dropdown-menu">
<li><a class="rvd-clickable-text" ng-click="changeLanguage('en-US')"><i ng-show="getCurrentLanguage()=='en-US'" class="fa fa-check"></i> en-US</a></li>
<li><a class="rvd-clickable-text" ng-click="changeLanguage('pt-BR')"><i ng-show="getCurrentLanguage()=='pt-BR'" class="fa fa-check"></i> pt-BR</a></li>
</ul>
</li>
<!--
<li ng-if="authInfo.rvdticket">
<a class="rvd-clickable-text" ng-click="showSettingsModal()" title="{{'indexSettingsTitle' | translate}}"><i class="fa fa-gear"></i></a>
</li>
-->
</ul>
</nav>
</div>
Expand Down
102 changes: 19 additions & 83 deletions restcomm/restcomm.rvd/src/main/webapp/js/app/services.js
Original file line number Diff line number Diff line change
Expand Up @@ -46,91 +46,27 @@ angular.module('Rvd').service('projectModules', [function () {
}]);
*/

angular.module('Rvd').service('authentication', ['$http', '$browser', '$q', function ($http, $browser, $q) {
//console.log("Creating authentication service");
var serviceInstance = {};
var authInfo = {};

/*
function refresh() {
authInfo.rvdticket = undefined;
authInfo.username = undefined;
var matches = RegExp( "^([^:]+)\:(.*)$" ).exec( $browser.cookies().rvdticket );
if (matches != null) {
authInfo.rvdticket = matches[2];
authInfo.username = matches[1];
// RVD authc/authz wrapper. Try to use this instead of keycloakAuth service directly.
angular.module('Rvd').service('auth', ['keycloakAuth', function(keycloakAuth) {
var service = {};
service.getLoggedUsername = function() {
//return keycloakAuth.getUsername();
if (keycloakAuth.authz.profile) {
var profile = keycloakAuth.authz.profile;
return profile.username;
} else
return "Unknown";
}
}
function doLogin(username, password) {
var deferred = $q.defer();
$http({ url:'services/auth/login', method:'POST', data:{ username: username, password: password}})
.success ( function () {
console.log("login successful");
deferred.resolve();
})
.error( function (data, status) {
console.log("error logging in");
deferred.reject(data);
});
return deferred.promise;
}
serviceInstance.doLogin = doLogin;
function doLogout() {
var deferred = $q.defer();
$http({ url:'services/auth/logout', method:'GET'})
.success ( function () {
console.log("logged out");
deferred.resolve();
})
.error( function (data, status) {
console.log("error logging out");
deferred.reject(data);
});
return deferred.promise;
}
serviceInstance.doLogout = doLogout;
*/
serviceInstance.getAuthInfo = function () {
return authInfo;
}

/*
serviceInstance.clearTicket = function () {
$browser.cookies().rvdticket = undefined;
authInfo.rvdticket = undefined;
authInfo.username = undefined;
}
serviceInstance.looksAuthenticated = function () {
refresh();
if ( !authInfo.rvdticket )
return false;
return true;
}
serviceInstance.authResolver = function() {
var deferred = $q.defer();
if ( !this.looksAuthenticated() ) {
deferred.reject("AUTHENTICATION_ERROR");
} else {
deferred.resolve({status:"authenticated"});
service.isLogged = function() {
return keycloakAuth.loggedIn;
}
return deferred.promise;
}
*/

serviceInstance.authResolver = function() {
return authInfo;
}

return serviceInstance;


service.getLogoutUrl = function() {
return keycloakAuth.logoutUrl;
}
service.logout = function() {
keycloakAuth.authz.logout();
}
return service;
}]);

angular.module('Rvd').service('projectSettingsService', ['$http','$q','$modal', function ($http,$q,$modal) {
Expand Down
13 changes: 8 additions & 5 deletions restcomm/restcomm.rvd/src/main/webapp/keycloakApp.js
Original file line number Diff line number Diff line change
Expand Up @@ -17,9 +17,12 @@ angular.element(document).ready(function ($http) {
auth.loggedIn = true;
auth.authz = keycloakAuth;
auth.logoutUrl = keycloakAuth.authServerUrl + "/realms/demo/tokens/logout?redirect_uri=/restcomm-rvd/index.html";
angular.module('Rvd').factory('Auth', function() {
angular.module('Rvd').factory('keycloakAuth', function() {
return auth;
});
keycloakAuth.loadUserProfile().success(function () {
console.log("User profile retrieved")
});
angular.bootstrap(document, ["Rvd"]);
}).error(function (a, b) {
window.location.reload();
Expand All @@ -42,14 +45,14 @@ module.controller('GlobalCtrl', function($scope, $http) {
*/


angular.module('Rvd').factory('authInterceptor', function($q, Auth) {
angular.module('Rvd').factory('authInterceptor', function($q, keycloakAuth) {
return {
request: function (config) {
var deferred = $q.defer();
if (Auth.authz.token) {
Auth.authz.updateToken(5).success(function() {
if (keycloakAuth.authz.token) {
keycloakAuth.authz.updateToken(5).success(function() {
config.headers = config.headers || {};
config.headers.Authorization = 'Bearer ' + Auth.authz.token;
config.headers.Authorization = 'Bearer ' + keycloakAuth.authz.token;

deferred.resolve(config);
}).error(function() {
Expand Down

0 comments on commit 1c224b7

Please sign in to comment.