From 61240f9144f7b0261d12b6bc643afa3f6976cba3 Mon Sep 17 00:00:00 2001 From: wknet123 Date: Mon, 7 Mar 2016 17:59:47 +0800 Subject: [PATCH 1/3] fixed visiting project details for a admin user. --- controllers/itemdetail.go | 14 ++++++++++++-- static/resources/js/item-detail.js | 2 +- 2 files changed, 13 insertions(+), 3 deletions(-) diff --git a/controllers/itemdetail.go b/controllers/itemdetail.go index 09774f3ff..a36df36dd 100644 --- a/controllers/itemdetail.go +++ b/controllers/itemdetail.go @@ -64,6 +64,8 @@ func (idc *ItemDetailController) Get() { if sessionUserID != nil { + userId := sessionUserID.(int) + idc.Data["Username"] = idc.GetSession("username") idc.Data["UserId"] = sessionUserID.(int) @@ -73,12 +75,20 @@ func (idc *ItemDetailController) Get() { idc.CustomAbort(http.StatusInternalServerError, "Internal error.") } - if project.Public == 0 && len(roleList) == 0 { + isAdmin, err := dao.IsAdminRole(userId) + if err != nil { + beego.Error("Error occurred in IsAdminRole:", err) + idc.CustomAbort(http.StatusInternalServerError, "Internal error.") + } + + if !isAdmin && (project.Public == 0 && len(roleList) == 0) { idc.Redirect("/registry/project", http.StatusFound) return } - if len(roleList) > 0 { + if isAdmin { + idc.Data["RoleId"] = models.SYSADMIN + } else if len(roleList) > 0 { idc.Data["RoleId"] = roleList[0].RoleID } } diff --git a/static/resources/js/item-detail.js b/static/resources/js/item-detail.js index 55173002d..4b4477cd7 100644 --- a/static/resources/js/item-detail.js +++ b/static/resources/js/item-detail.js @@ -152,7 +152,7 @@ jQuery(function(){ url: "/api/projects/" + $("#projectId").val() + "/members/current", type: "get", success: function(data, status, xhr){ - if(xhr && xhr.status == 200 && data.roles.length > 0){ + if(xhr && xhr.status == 200 && data.roles != null && data.roles.length > 0){ hasAuthorization = true; } } From 242f5f0972bd5f2e0f68c1f3904f5cafe99e2277 Mon Sep 17 00:00:00 2001 From: wknet123 Date: Mon, 7 Mar 2016 18:40:26 +0800 Subject: [PATCH 2/3] updates for golint check --- controllers/itemdetail.go | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/controllers/itemdetail.go b/controllers/itemdetail.go index a36df36dd..5d3768c81 100644 --- a/controllers/itemdetail.go +++ b/controllers/itemdetail.go @@ -64,7 +64,7 @@ func (idc *ItemDetailController) Get() { if sessionUserID != nil { - userId := sessionUserID.(int) + userID := sessionUserID.(int) idc.Data["Username"] = idc.GetSession("username") idc.Data["UserId"] = sessionUserID.(int) @@ -75,7 +75,7 @@ func (idc *ItemDetailController) Get() { idc.CustomAbort(http.StatusInternalServerError, "Internal error.") } - isAdmin, err := dao.IsAdminRole(userId) + isAdmin, err := dao.IsAdminRole(userID) if err != nil { beego.Error("Error occurred in IsAdminRole:", err) idc.CustomAbort(http.StatusInternalServerError, "Internal error.") From 46c8ef142f02ada3ce12c19fc46bfdc99a59acfe Mon Sep 17 00:00:00 2001 From: wknet123 Date: Tue, 8 Mar 2016 11:17:09 +0800 Subject: [PATCH 3/3] fixed variable usage for userID. --- controllers/itemdetail.go | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/controllers/itemdetail.go b/controllers/itemdetail.go index 5d3768c81..95d393fb9 100644 --- a/controllers/itemdetail.go +++ b/controllers/itemdetail.go @@ -67,9 +67,9 @@ func (idc *ItemDetailController) Get() { userID := sessionUserID.(int) idc.Data["Username"] = idc.GetSession("username") - idc.Data["UserId"] = sessionUserID.(int) + idc.Data["UserId"] = userID - roleList, err := dao.GetUserProjectRoles(models.User{UserID: sessionUserID.(int)}, projectID) + roleList, err := dao.GetUserProjectRoles(models.User{UserID: userID}, projectID) if err != nil { beego.Error("Error occurred in GetUserProjectRoles:", err) idc.CustomAbort(http.StatusInternalServerError, "Internal error.")