diff --git a/controllers/ng/dashboard.go b/controllers/ng/dashboard.go index 9fa0a6448..c0398a8c9 100644 --- a/controllers/ng/dashboard.go +++ b/controllers/ng/dashboard.go @@ -1,5 +1,13 @@ package ng +import ( + "net/http" + + "github.com/vmware/harbor/dao" + "github.com/vmware/harbor/models" + "github.com/vmware/harbor/utils/log" +) + // DashboardController handles requests to /ng/dashboard type DashboardController struct { BaseController @@ -7,5 +15,24 @@ type DashboardController struct { // Get renders the dashboard page func (dc *DashboardController) Get() { + sessionUserID := dc.GetSession("userId") + var isAdmin int + + if sessionUserID != nil { + userID := sessionUserID.(int) + u, err := dao.GetUser(models.User{UserID: userID}) + if err != nil { + log.Errorf("Error occurred in GetUser, error: %v", err) + dc.CustomAbort(http.StatusInternalServerError, "Internal error.") + } + if u == nil { + log.Warningf("User was deleted already, user id: %d, canceling request.", userID) + dc.CustomAbort(http.StatusUnauthorized, "") + } + isAdmin = u.HasAdminRole + } + + dc.Data["IsAdmin"] = isAdmin + dc.Forward("Dashboard", "dashboard.htm") } diff --git a/static/ng/resources/js/layout/dashboard/dashboard.controller.js b/static/ng/resources/js/layout/dashboard/dashboard.controller.js index 140e220eb..5b463dda4 100644 --- a/static/ng/resources/js/layout/dashboard/dashboard.controller.js +++ b/static/ng/resources/js/layout/dashboard/dashboard.controller.js @@ -20,12 +20,12 @@ ListIntegratedLogService() .then(listIntegratedLogSuccess, listIntegratedLogFailed); - function statProjectSuccess(data) { - vm.statProjects = data; + function statProjectSuccess(response) { + vm.statProjects = response.data; } - function statProjectFailed(data) { - console.log('Failed stat project:' + data); + function statProjectFailed(response) { + console.log('Failed stat project:' + response.data); } function listTop10RepositorySuccess(data) { diff --git a/static/ng/resources/js/services/project/services.stat-project.js b/static/ng/resources/js/services/project/services.stat-project.js index 52fac9876..fd398bc21 100644 --- a/static/ng/resources/js/services/project/services.stat-project.js +++ b/static/ng/resources/js/services/project/services.stat-project.js @@ -6,35 +6,18 @@ .module('harbor.services.project') .factory('StatProjectService', StatProjectService); - StatProjectService.$inject = ['$http', '$q', '$timeout']; + StatProjectService.$inject = ['$http', '$log']; - function StatProjectService($http, $q, $timeout) { + function StatProjectService($http, $log) { + + return StatProject; - var mockData = { - 'projects': 30, - 'public_projects': 50, - 'total_projects': 120, - 'repositories': 50, - 'public_repositories': 40, - 'total_repositories': 110 - }; - - function async() { - var deferred = $q.defer(); - - $timeout(function() { - deferred.resolve(mockData); - }, 500); - - return deferred.promise; + function StatProject() { + $log.info('statistics projects and repositories'); + return $http + .get('/api/statistics'); } - - return statProject; - - function statProject() { - return async(); - } - + } })(); \ No newline at end of file diff --git a/views/ng/dashboard.htm b/views/ng/dashboard.htm index 9b1a8727e..58f61e2eb 100644 --- a/views/ng/dashboard.htm +++ b/views/ng/dashboard.htm @@ -6,12 +6,19 @@
-
// 'projects' | tr //:
//vm.statProjects['projects']//
-
// 'public_projects' | tr //:
//vm.statProjects['public_projects']//
-
// 'total_projects' | tr //:
//vm.statProjects['total_projects']//
-
// 'repositories' | tr //:
//vm.statProjects['repositories']//
-
// 'public_repositories' | tr //:
//vm.statProjects['public_repositories']//
-
// 'total_repositories' | tr //:
//vm.statProjects['total_repositories']//
+ {{ if eq .IsAdmin 1 }} +
// 'projects' | tr //:
//vm.statProjects['my_project_count']//
+
// 'public_projects' | tr //:
//vm.statProjects['public_project_count']//
+
// 'total_projects' | tr //:
//vm.statProjects['total_project_count']//
+
// 'repositories' | tr //:
//vm.statProjects['my_repo_count']//
+
// 'public_repositories' | tr //:
//vm.statProjects['public_repo_count']//
+
// 'total_repositories' | tr //:
//vm.statProjects['total_repo_count']//
+ {{ else }} +
// 'projects' | tr //:
//vm.statProjects['my_project_count']//
+
// 'public_projects' | tr //:
//vm.statProjects['public_project_count']//
+
// 'repositories' | tr //:
//vm.statProjects['my_repo_count']//
+
// 'public_repositories' | tr //:
//vm.statProjects['public_repo_count']//
+ {{ end }}