Repository: eagle Updated Branches: refs/heads/master 8d79f0888 -> 287a1c109
[EAGLE-923] Integrate role-based Authentication in UI Support user role of web app control Author: zombieJ <[email protected]> Closes #853 from zombieJ/EAGLE-923. Project: http://git-wip-us.apache.org/repos/asf/eagle/repo Commit: http://git-wip-us.apache.org/repos/asf/eagle/commit/287a1c10 Tree: http://git-wip-us.apache.org/repos/asf/eagle/tree/287a1c10 Diff: http://git-wip-us.apache.org/repos/asf/eagle/diff/287a1c10 Branch: refs/heads/master Commit: 287a1c109c003140959781870222b608778524e2 Parents: 8d79f08 Author: zombieJ <[email protected]> Authored: Fri Mar 3 10:26:41 2017 +0800 Committer: Hao Chen <[email protected]> Committed: Fri Mar 3 10:26:41 2017 +0800 ---------------------------------------------------------------------- eagle-server/src/main/webapp/app/dev/index.html | 53 ++++++-- .../app/dev/partials/alert/policyDetail.html | 2 +- .../app/dev/partials/alert/policyList.html | 10 +- .../app/dev/partials/alert/streamList.html | 4 +- .../src/main/webapp/app/dev/partials/login.html | 45 +++++++ .../src/main/webapp/app/dev/public/css/main.css | 15 +++ .../src/main/webapp/app/dev/public/js/app.js | 16 ++- .../webapp/app/dev/public/js/ctrls/alertCtrl.js | 4 +- .../webapp/app/dev/public/js/ctrls/authCtrl.js | 49 ++++++++ .../webapp/app/dev/public/js/ctrls/mainCtrl.js | 2 +- .../app/dev/public/js/services/authSrv.js | 120 +++++++++++++++++++ .../public/js/services/compatibleEntitySrv.js | 4 +- .../app/dev/public/js/services/entitySrv.js | 10 +- .../app/dev/public/js/services/pageSrv.js | 50 +++----- 14 files changed, 319 insertions(+), 65 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/eagle/blob/287a1c10/eagle-server/src/main/webapp/app/dev/index.html ---------------------------------------------------------------------- diff --git a/eagle-server/src/main/webapp/app/dev/index.html b/eagle-server/src/main/webapp/app/dev/index.html index 3408842..e2547bf 100644 --- a/eagle-server/src/main/webapp/app/dev/index.html +++ b/eagle-server/src/main/webapp/app/dev/index.html @@ -109,6 +109,22 @@ </ul> </li> + <!-- FAQ --> + <li> + <a data-toggle="dropdown" aria-expanded="false"> + <i class="glyphicon glyphicon-question-sign"></i> + </a> + + <ul class="dropdown-menu"> + <li><a>How to start using eagle</a></li> + <li><a>How to register new site</a></li> + <li><a>How to install application</a></li> + <li><a>How to manage application</a></li> + <li><a>How to develop application</a></li> + <li><a ui-sref="metricPreview()">Preview eagle metric</a></li> + </ul> + </li> + <!-- Notification --> <li class="hover-dropdown"> <a> @@ -130,19 +146,32 @@ </ul> </li> - <!-- FAQ --> - <li> - <a data-toggle="dropdown" aria-expanded="false"> - <i class="glyphicon glyphicon-question-sign"></i> + <!-- Auth --> + <li ng-if="!Auth.isLogin"> + <a ui-sref="login">Login</a> + </li> + <li ng-if="Auth.isLogin" class="dropdown user user-menu"> + <a class="dropdown-toggle" data-toggle="dropdown"> + <i class="fa fa-user"></i> + {{Auth.user.name}} </a> - <ul class="dropdown-menu"> - <li><a>How to start using eagle</a></li> - <li><a>How to register new site</a></li> - <li><a>How to install application</a></li> - <li><a>How to manage application</a></li> - <li><a>How to develop application</a></li> - <li><a ui-sref="metricPreview()">Preview eagle metric</a></li> + <li class="user-header"> + <div class="portrait fa fa-user"> + </div> + <p> + {{Auth.user.name}} + <small>{{Auth.user.roles.join(', ')}}</small> + </p> + </li> + <li class="user-footer"> + <div class="pull-left" ng-if="Auth.isAdmin"> + <a ui-sref="integration.siteList()" class="btn btn-default btn-flat">Integration</a> + </div> + <div class="pull-right"> + <a class="btn btn-default btn-flat" ng-click="Auth.logout()">Sign out</a> + </div> + </li> </ul> </li> </ul> @@ -305,6 +334,7 @@ <script src="public/js/services/policySrv.js" type="text/javascript" charset="utf-8"></script> <script src="public/js/services/notificationSrv.js" type="text/javascript" charset="utf-8"></script> <script src="public/js/services/alertSrv.js" type="text/javascript" charset="utf-8"></script> + <script src="public/js/services/authSrv.js" type="text/javascript" charset="utf-8"></script> <!-- Components --> <script src="public/js/components/main.js" type="text/javascript" charset="utf-8"></script> @@ -323,6 +353,7 @@ <script src="public/js/ctrls/integrationCtrl.js" type="text/javascript" charset="utf-8"></script> <script src="public/js/ctrls/siteCtrl.js" type="text/javascript" charset="utf-8"></script> <script src="public/js/ctrls/metricCtrl.js" type="text/javascript" charset="utf-8"></script> + <script src="public/js/ctrls/authCtrl.js" type="text/javascript" charset="utf-8"></script> <!-- endref --> </body> </html> http://git-wip-us.apache.org/repos/asf/eagle/blob/287a1c10/eagle-server/src/main/webapp/app/dev/partials/alert/policyDetail.html ---------------------------------------------------------------------- diff --git a/eagle-server/src/main/webapp/app/dev/partials/alert/policyDetail.html b/eagle-server/src/main/webapp/app/dev/partials/alert/policyDetail.html index 031f71d..d5b3352 100644 --- a/eagle-server/src/main/webapp/app/dev/partials/alert/policyDetail.html +++ b/eagle-server/src/main/webapp/app/dev/partials/alert/policyDetail.html @@ -23,7 +23,7 @@ {{policy.name}} </h3> <div class="box-tools pull-right"> - <div class="btn-group"> + <div class="btn-group" ng-if="Auth.isAdmin"> <button class="btn btn-default fa fa-play" ng-click="startPolicy()" ng-if="policy.policyStatus !== 'ENABLED'"></button> <button class="btn btn-default fa fa-square" ng-click="stopPolicy()" ng-if="policy.policyStatus === 'ENABLED'"></button> <a class="btn btn-default fa fa-pencil" ui-sref="policyEdit({siteId: site, name: policy.name})"></a> http://git-wip-us.apache.org/repos/asf/eagle/blob/287a1c10/eagle-server/src/main/webapp/app/dev/partials/alert/policyList.html ---------------------------------------------------------------------- diff --git a/eagle-server/src/main/webapp/app/dev/partials/alert/policyList.html b/eagle-server/src/main/webapp/app/dev/partials/alert/policyList.html index cb0936f..7cfee58 100644 --- a/eagle-server/src/main/webapp/app/dev/partials/alert/policyList.html +++ b/eagle-server/src/main/webapp/app/dev/partials/alert/policyList.html @@ -31,7 +31,7 @@ <th sortpath="policyStatus" width="10"></th> <th sortpath="name" width="10%">Name</th> <th>Description</th> - <th width="85">Action</th> + <th width="85" ng-if="Auth.isAdmin">Action</th> </tr> </thead> <tbody> @@ -43,7 +43,7 @@ <a ui-sref="policyDetail({siteId: site, name: item.name})">{{item.name}}</a> </td> <td>{{item.description}}</td> - <td class="text-center"> + <td class="text-center" ng-if="Auth.isAdmin"> <div class="btn-group btn-group-xs"> <button class="btn btn-default opt" ng-if="item.policyStatus !== 'ENABLED'" ng-click="startPolicy(item)"> <span class="fa fa-play"></span> @@ -62,7 +62,9 @@ <div class="callout callout-warning no-margin" ng-show="!loading && policyList.length === 0"> <h4>No Policy yet</h4> - <p>You have not create policy yet. Click <a ui-sref="policyCreate({ siteId: site })">here</a> to create a new policy.</p> + <p>You have not create policy yet. + <span ng-if="Auth.isAdmin">Click <a ui-sref="policyCreate({ siteId: site })">here</a> to create a new policy.</span> + </p> </div> </div> @@ -70,7 +72,7 @@ <i class="fa fa-refresh fa-spin"></i> </div> - <div class="box-footer text-right"> + <div class="box-footer text-right" ng-if="Auth.isAdmin"> <a ui-sref="policyCreate({ siteId: site })" class="btn btn-primary">New Policy</a> </div> </div> http://git-wip-us.apache.org/repos/asf/eagle/blob/287a1c10/eagle-server/src/main/webapp/app/dev/partials/alert/streamList.html ---------------------------------------------------------------------- diff --git a/eagle-server/src/main/webapp/app/dev/partials/alert/streamList.html b/eagle-server/src/main/webapp/app/dev/partials/alert/streamList.html index 0824188..3338160 100644 --- a/eagle-server/src/main/webapp/app/dev/partials/alert/streamList.html +++ b/eagle-server/src/main/webapp/app/dev/partials/alert/streamList.html @@ -29,7 +29,7 @@ <thead> <tr> <th>Stream</th> - <th>Provider (App)</th> + <th>Provider (Source)</th> <th>Site</th> <th>Schema</th> </tr> @@ -38,7 +38,7 @@ <tr> <td><span class="label label-primary">{{item.streamId}}</span></td> <td class="text-no-break"> - {{item.application.type}} + {{item.streamSource}} <a class="fa fa-plug" uib-tooltip="Click to view data source" ng-click="showDataSource(item)"></a> </td> <td>{{item.siteId}}</td> http://git-wip-us.apache.org/repos/asf/eagle/blob/287a1c10/eagle-server/src/main/webapp/app/dev/partials/login.html ---------------------------------------------------------------------- diff --git a/eagle-server/src/main/webapp/app/dev/partials/login.html b/eagle-server/src/main/webapp/app/dev/partials/login.html new file mode 100644 index 0000000..8546f72 --- /dev/null +++ b/eagle-server/src/main/webapp/app/dev/partials/login.html @@ -0,0 +1,45 @@ +<!-- + Licensed to the Apache Software Foundation (ASF) under one + or more contributor license agreements. See the NOTICE file + distributed with this work for additional information + regarding copyright ownership. The ASF licenses this file + to you under the Apache License, Version 2.0 (the + "License"); you may not use this file except in compliance + with the License. You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. + --> + +<div class="row"> + <div class=" + col-sm-12 + col-md-8 col-md-offset-2 + col-lg-6 col-lg-offset-3 + "> + <div class="box box-primary"> + <div class="box-header with-border"> + <i class="fa fa-user"></i> + <h3 class="box-title">Authentication</h3> + </div> + <div class="box-body"> + <div class="form-group"> + <label>User Name</label> + <input type="text" class="form-control" ng-model="username" name="username"> + </div> + <div class="form-group"> + <label>Password</label> + <input type="password" class="form-control" ng-model="password" ng-keypress="onKeyPress($event)"> + </div> + </div> + <div class="box-footer text-right"> + <button class="btn btn-primary" ng-click="login()">Login</button> + </div> + </div> + </div> +</div> http://git-wip-us.apache.org/repos/asf/eagle/blob/287a1c10/eagle-server/src/main/webapp/app/dev/public/css/main.css ---------------------------------------------------------------------- diff --git a/eagle-server/src/main/webapp/app/dev/public/css/main.css b/eagle-server/src/main/webapp/app/dev/public/css/main.css index 594e248..30e10d7 100644 --- a/eagle-server/src/main/webapp/app/dev/public/css/main.css +++ b/eagle-server/src/main/webapp/app/dev/public/css/main.css @@ -28,6 +28,21 @@ a { } /* ======================================================================== + * = Navigation = + * ======================================================================== */ +.navbar-nav > .user-menu > .dropdown-menu > li.user-header > .portrait { + display: inline-block; + width: 90px; + height: 90px; + border: 3px solid rgba(255, 255, 255, 0.5); + border-radius: 100%; + font-size: 60px; + padding-top: 10px; + background-color: rgba(0,0,0,0.1); + color: rgba(255,255,255,0.8); +} + +/* ======================================================================== * = Side Bar = * ======================================================================== */ .sidebar-mini.sidebar-collapse .main-header .logo > .logo-mini > img { http://git-wip-us.apache.org/repos/asf/eagle/blob/287a1c10/eagle-server/src/main/webapp/app/dev/public/js/app.js ---------------------------------------------------------------------- diff --git a/eagle-server/src/main/webapp/app/dev/public/js/app.js b/eagle-server/src/main/webapp/app/dev/public/js/app.js index e5b87e8..baa4d3e 100644 --- a/eagle-server/src/main/webapp/app/dev/public/js/app.js +++ b/eagle-server/src/main/webapp/app/dev/public/js/app.js @@ -109,7 +109,7 @@ var app = {}; eagleApp.config(function ($stateProvider, $urlRouterProvider, $httpProvider, $animateProvider) { $urlRouterProvider.otherwise("/"); $stateProvider - // ================================== Home ================================== + // ================================== Home ================================== .state('home', { url: "/", templateUrl: "partials/home.html?_=" + window._TRS(), @@ -123,6 +123,14 @@ var app = {}; resolve: routeResolve({ site: false, application: false }) }) + // ================================== Auth ================================== + .state('login', { + url: "/login", + templateUrl: "partials/login.html?_=" + window._TRS(), + controller: "loginCtrl", + resolve: routeResolve() + }) + // =============================== Integration ============================== .state('integration', { abstract: true, @@ -274,9 +282,9 @@ var app = {}; // = Main Controller = // ====================================================================================== eagleApp.controller('MainCtrl', function ( - $scope, $wrapState, $urlRouter, $notification, + $scope, $wrapState, $urlRouter, $notification, $authHttp, Server, PageConfig, Portal, Widget, Entity, CompatibleEntity, - Site, Application, UI, Time, Policy, Alert) { + Site, Application, UI, Time, Policy, Alert, Auth) { window._WrapState = $scope.$wrapState = $wrapState; window._Server = $scope.Server = Server; window._PageConfig = $scope.PageConfig = PageConfig; @@ -291,6 +299,8 @@ var app = {}; window._Policy = $scope.Policy = Policy; window._Notification = $scope.$notification = $notification; window._Alert = $scope.Alert = Alert; + window._Auth = $scope.Auth = Auth; + window._AuthHttp = $scope.$authHttp = $authHttp; $scope.common = common; $scope._TRS = window._TRS(); http://git-wip-us.apache.org/repos/asf/eagle/blob/287a1c10/eagle-server/src/main/webapp/app/dev/public/js/ctrls/alertCtrl.js ---------------------------------------------------------------------- diff --git a/eagle-server/src/main/webapp/app/dev/public/js/ctrls/alertCtrl.js b/eagle-server/src/main/webapp/app/dev/public/js/ctrls/alertCtrl.js index be0a97c..9871ab7 100644 --- a/eagle-server/src/main/webapp/app/dev/public/js/ctrls/alertCtrl.js +++ b/eagle-server/src/main/webapp/app/dev/public/js/ctrls/alertCtrl.js @@ -153,7 +153,7 @@ PageConfig.title = "Policy"; PageConfig.subTitle = "Detail"; PageConfig.navPath = [ - {title: "Policy List", path: "/policies"}, + {title: "Policy List", path: "/site/" + $wrapState.param.siteId + "/policies"}, {title: "Detail"} ]; @@ -191,7 +191,7 @@ Entity.queryMetadata("schedulestates")._then(function (res) { var schedule = res.data || {}; - $scope.assignment = common.array.find(policyName, schedule.assignments, ["policyName"]) || {}; + $scope.assignment = common.array.find(policyName, schedule.assignments || [], ["policyName"]) || {}; var queueList = $.map(schedule.monitoredStreams, function (stream) { return stream.queues; http://git-wip-us.apache.org/repos/asf/eagle/blob/287a1c10/eagle-server/src/main/webapp/app/dev/public/js/ctrls/authCtrl.js ---------------------------------------------------------------------- diff --git a/eagle-server/src/main/webapp/app/dev/public/js/ctrls/authCtrl.js b/eagle-server/src/main/webapp/app/dev/public/js/ctrls/authCtrl.js new file mode 100644 index 0000000..e4b3329 --- /dev/null +++ b/eagle-server/src/main/webapp/app/dev/public/js/ctrls/authCtrl.js @@ -0,0 +1,49 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +(function() { + 'use strict'; + + var eagleControllers = angular.module('eagleControllers'); + + eagleControllers.controller('loginCtrl', function ($scope, $wrapState, Auth) { + $scope.username = ''; + $scope.password = ''; + + $scope.login = function () { + Auth.login($scope.username, $scope.password).then(function (result) { + if (result) { + $wrapState.go('home'); + } else { + $.dialog({ + title: 'OPS', + content: 'Username or password not correct.' + }); + } + }); + }; + + $scope.onKeyPress = function (event) { + if (event.which === 13) { + $scope.login(); + } + }; + + $('[name="username"]').focus(); + }); +})(); http://git-wip-us.apache.org/repos/asf/eagle/blob/287a1c10/eagle-server/src/main/webapp/app/dev/public/js/ctrls/mainCtrl.js ---------------------------------------------------------------------- diff --git a/eagle-server/src/main/webapp/app/dev/public/js/ctrls/mainCtrl.js b/eagle-server/src/main/webapp/app/dev/public/js/ctrls/mainCtrl.js index 015bd4f..97b4704 100644 --- a/eagle-server/src/main/webapp/app/dev/public/js/ctrls/mainCtrl.js +++ b/eagle-server/src/main/webapp/app/dev/public/js/ctrls/mainCtrl.js @@ -25,7 +25,7 @@ // = Home = // ====================================================================================== eagleControllers.controller('homeCtrl', function ($scope, $wrapState, PageConfig) { - PageConfig.title = "Home"; + PageConfig.title = "Overveiw"; $scope.colorList = [ "bg-aqua", http://git-wip-us.apache.org/repos/asf/eagle/blob/287a1c10/eagle-server/src/main/webapp/app/dev/public/js/services/authSrv.js ---------------------------------------------------------------------- diff --git a/eagle-server/src/main/webapp/app/dev/public/js/services/authSrv.js b/eagle-server/src/main/webapp/app/dev/public/js/services/authSrv.js new file mode 100644 index 0000000..0fa2d4a --- /dev/null +++ b/eagle-server/src/main/webapp/app/dev/public/js/services/authSrv.js @@ -0,0 +1,120 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +(function() { + 'use strict'; + + var serviceModule = angular.module('eagle.service'); + + serviceModule.service('Auth', function ($http) { + //$http.defaults.withCredentials = true; + var Auth = { + isLogin: false, + user: {}, + }; + + var _host = ""; + if(localStorage) { + _host = localStorage.getItem("host") || ""; + } + + Auth.login = function (username, password) { + var _hash = btoa(username + ':' + password); + + return Auth.sync(_hash); + }; + + Auth.logout = function () { + Auth.isLogin = false; + Auth.user = {}; + if (localStorage) { + localStorage.removeItem('auth'); + } + }; + + Auth.sync = function (hash) { + return $http.get(_host + "/rest/auth/principal", { + headers: { + 'Authorization': "Basic " + hash + } + }).then(function (result) { + if (result.data.success) { + Auth.user = result.data.data; + Auth.isLogin = true; + if (localStorage) { + localStorage.setItem('auth', hash); + } + } + return result.data.success; + }, function () { + return false; + }); + }; + + if (localStorage && localStorage.getItem('auth')) { + Auth.sync(localStorage.getItem('auth')); + } + + Object.defineProperties(Auth, { + isAdmin: { + get: function () { + return (Auth.user.roles || []).indexOf('ADMINISTRATOR') !== -1; + } + }, + hash: { + get: function () { + if (localStorage && localStorage.getItem('auth')) { + return localStorage.getItem('auth'); + } + return null; + } + }, + }); + + return Auth; + }); + + serviceModule.service('$authHttp', function ($http, Auth) { + function mergeConfig(config) { + config = config || {}; + if (Auth.hash) { + config.headers = config.headers || {}; + config.headers.Authorization = "Basic " + Auth.hash; + } + return config; + } + + var $authHttp = function (config) { + return $http(mergeConfig(config)); + }; + + $authHttp.get = function (url, config) { + return $http.get(url, mergeConfig(config)); + }; + + $authHttp.post = function (url, data, config) { + return $http.post(url, data, mergeConfig(config)); + }; + + $authHttp.delete = function (url, config) { + return $http.delete(url, mergeConfig(config)); + }; + + return $authHttp; + }); +})(); http://git-wip-us.apache.org/repos/asf/eagle/blob/287a1c10/eagle-server/src/main/webapp/app/dev/public/js/services/compatibleEntitySrv.js ---------------------------------------------------------------------- diff --git a/eagle-server/src/main/webapp/app/dev/public/js/services/compatibleEntitySrv.js b/eagle-server/src/main/webapp/app/dev/public/js/services/compatibleEntitySrv.js index 8296451..405af81 100644 --- a/eagle-server/src/main/webapp/app/dev/public/js/services/compatibleEntitySrv.js +++ b/eagle-server/src/main/webapp/app/dev/public/js/services/compatibleEntitySrv.js @@ -26,7 +26,7 @@ _host = localStorage.getItem("host") || ""; } - serviceModule.service('CompatibleEntity', function($http, Time) { + serviceModule.service('CompatibleEntity', function($authHttp, Time) { function CompatibleEntity() {} function wrapList(list, promise) { @@ -131,7 +131,7 @@ } var url = common.template(url_tpl, myParam); - return wrapList(list, $http.get(_host + url)); + return wrapList(list, $authHttp.get(_host + url)); }; return list._refresh(); http://git-wip-us.apache.org/repos/asf/eagle/blob/287a1c10/eagle-server/src/main/webapp/app/dev/public/js/services/entitySrv.js ---------------------------------------------------------------------- diff --git a/eagle-server/src/main/webapp/app/dev/public/js/services/entitySrv.js b/eagle-server/src/main/webapp/app/dev/public/js/services/entitySrv.js index 986e0d1..54b3694 100644 --- a/eagle-server/src/main/webapp/app/dev/public/js/services/entitySrv.js +++ b/eagle-server/src/main/webapp/app/dev/public/js/services/entitySrv.js @@ -26,7 +26,7 @@ _host = localStorage.getItem("host") || ""; } - serviceModule.service('Entity', function($http, $q) { + serviceModule.service('Entity', function($authHttp, $q) { function Entity() {} function wrapList(list, promise) { @@ -64,7 +64,7 @@ list._refresh = function () { var config = {}; if(param) config.params = param; - return wrapList(list, $http.get(_host + "/rest/" + url, config)); + return wrapList(list, $authHttp.get(_host + "/rest/" + url, config)); }; return list._refresh(); @@ -72,7 +72,7 @@ Entity.create = Entity.post = function (url, entity) { var list = []; - return wrapList(list, $http({ + return wrapList(list, $authHttp({ method: 'POST', url: _host + "/rest/" + url, headers: { @@ -84,7 +84,7 @@ Entity.delete = function (url, uuid) { var list = []; - return wrapList(list, $http({ + return wrapList(list, $authHttp({ method: 'DELETE', url: _host + "/rest/" + url, headers: { @@ -148,7 +148,7 @@ Entity.deleteMetadata = function (url) { return { - _promise: $http.delete(_host + "/rest/metadata/" + url).then(function (res) { + _promise: $authHttp.delete(_host + "/rest/metadata/" + url).then(function (res) { console.log(res); }) }; http://git-wip-us.apache.org/repos/asf/eagle/blob/287a1c10/eagle-server/src/main/webapp/app/dev/public/js/services/pageSrv.js ---------------------------------------------------------------------- diff --git a/eagle-server/src/main/webapp/app/dev/public/js/services/pageSrv.js b/eagle-server/src/main/webapp/app/dev/public/js/services/pageSrv.js index 7b699be..2faa059 100644 --- a/eagle-server/src/main/webapp/app/dev/public/js/services/pageSrv.js +++ b/eagle-server/src/main/webapp/app/dev/public/js/services/pageSrv.js @@ -80,29 +80,13 @@ // ============================================================ // = Portal = // ============================================================ - serviceModule.service('Portal', function($wrapState, Site, Application) { + serviceModule.service('Portal', function($wrapState, Site, Application, Auth) { function checkSite() { return Site.list.length !== 0; } - function checkApplication() { - return checkSite() && Application.list.length !== 0; - } - var defaultPortalList = [ - {name: "Home", icon: "home", path: "#/"}, - /* {name: "Alert", icon: "bell", showFunc: checkApplication, list: [ - {name: "Alerts", path: "#/alerts"}, - {name: "Policies", path: "#/policies"}, - {name: "Streams", path: "#/streams"}, - {name: "Define Policy", path: "#/policy/create"} - ]} */ - ]; - var adminPortalList = [ - {name: "Integration", icon: "puzzle-piece", showFunc: checkSite, list: [ - {name: "Sites", path: "#/integration/siteList"}, - {name: "Applications", path: "#/integration/applicationList"} - ]} + {name: "Overview", icon: "home", path: "#/"}, ]; var Portal = {}; @@ -117,15 +101,22 @@ }; function getDefaultSitePortal(site) { + var alertPortal = [ + {name: "Alerts", path: "#/site/" + site.siteId + "/alerts"}, + {name: "Policies", path: "#/site/" + site.siteId + "/policies"}, + {name: "Streams", path: "#/site/" + site.siteId + "/streams"}, + ]; + + if (Auth.isAdmin) { + alertPortal.push( + {name: "Define Policy", path: "#/site/" + site.siteId + "/policy/create"} + ); + } + return[ {name: "Back", icon: "arrow-left", path: "#/"}, {name: site.siteName || site.siteId + " Home", icon: "home", path: "#/site/" + site.siteId}, - {name: "Alert", icon: "bell", list: [ - {name: "Alerts", path: "#/site/" + site.siteId + "/alerts"}, - {name: "Policies", path: "#/site/" + site.siteId + "/policies"}, - {name: "Streams", path: "#/site/" + site.siteId + "/streams"}, - {name: "Define Policy", path: "#/site/" + site.siteId + "/policy/create"} - ]}, + {name: "Alert", icon: "bell", list: alertPortal}, ]; } @@ -160,17 +151,8 @@ } Portal.refresh = function () { - // TODO: check admin - // Main level - connectedMainPortalList = defaultPortalList.concat(adminPortalList); - var siteList = $.map(Site.list, function (site) { - return { - name: site.siteName || site.siteId, - path: "#/site/" + site.siteId - }; - }); - connectedMainPortalList.push({name: "Sites", icon: "server", showFunc: checkApplication, list: siteList}); + connectedMainPortalList = defaultPortalList.concat(); connectedMainPortalList = mergePortalList(connectedMainPortalList); // Site level
