@@ -41,27 +41,39 @@ func (c *ApiController) GetGlobalResources() {
4141 sortField := c .Input ().Get ("sortField" )
4242 sortOrder := c .Input ().Get ("sortOrder" )
4343
44+ userName , ok := c .RequireSignedIn ()
45+ if ! ok {
46+ return
47+ }
48+
49+ filterUser := ""
50+ if ! c .IsAdmin () {
51+ filterUser = userName
52+ }
53+
4454 if limit == "" || page == "" {
45- resources , err := object .GetGlobalResources (owner )
55+ var resources []* object.Resource
56+ var err error
57+ if filterUser == "" {
58+ resources , err = object .GetGlobalResources (owner )
59+ } else {
60+ resources , err = object .GetResources (owner , filterUser )
61+ }
4662 if err != nil {
4763 c .ResponseError (err .Error ())
4864 return
4965 }
5066 c .ResponseOk (resources )
5167 } else {
52- if ! c .RequireAdmin () {
53- return
54- }
55-
5668 limitInt := util .ParseInt (limit )
57- count , err := object .GetResourceCount (owner , field , value )
69+ count , err := object .GetResourceCount (owner , filterUser , field , value )
5870 if err != nil {
5971 c .ResponseError (err .Error ())
6072 return
6173 }
6274
6375 paginator := pagination .SetPaginator (c .Ctx , limitInt , count )
64- resources , err := object .GetPaginationResources (owner , paginator .Offset (), limitInt , field , value , sortField , sortOrder )
76+ resources , err := object .GetPaginationResources (owner , filterUser , paginator .Offset (), limitInt , field , value , sortField , sortOrder )
6577 if err != nil {
6678 c .ResponseError (err .Error ())
6779 return
@@ -81,12 +93,22 @@ func (c *ApiController) GetGlobalResources() {
8193func (c * ApiController ) GetResource () {
8294 id := c .Input ().Get ("id" )
8395
96+ userName , ok := c .RequireSignedIn ()
97+ if ! ok {
98+ return
99+ }
100+
84101 resource , err := object .GetResource (id )
85102 if err != nil {
86103 c .ResponseError (err .Error ())
87104 return
88105 }
89106
107+ if resource != nil && ! c .IsAdmin () && resource .User != userName {
108+ c .ResponseError (c .T ("auth:Unauthorized operation" ))
109+ return
110+ }
111+
90112 c .ResponseOk (resource )
91113}
92114
@@ -149,13 +171,23 @@ func (c *ApiController) AddResource() {
149171// @Success 200 {object} controllers.Response The Response object
150172// @router /delete-resource [post]
151173func (c * ApiController ) DeleteResource () {
174+ userName , ok := c .RequireSignedIn ()
175+ if ! ok {
176+ return
177+ }
178+
152179 var resource object.Resource
153180 err := json .NewDecoder (c .Ctx .Request .Body ).Decode (& resource )
154181 if err != nil {
155182 c .ResponseError (err .Error ())
156183 return
157184 }
158185
186+ if ! c .IsAdmin () && resource .User != userName {
187+ c .ResponseError (c .T ("auth:Unauthorized operation" ))
188+ return
189+ }
190+
159191 err = object .DeleteResourceFile (& resource , c .GetAcceptLanguage ())
160192 if err != nil {
161193 c .ResponseError (err .Error ())
0 commit comments