security: Apply 'application.hide.project.listing' option to org
@a43bdbb5b5e26ac59c00f94b7d4de93861aba283
--- app/controllers/SearchApp.java
+++ app/controllers/SearchApp.java
... | ... | @@ -123,6 +123,13 @@ |
123 | 123 |
|
124 | 124 |
Organization organization = Organization.findByName(organizationName); |
125 | 125 |
User user = UserApp.currentUser(); |
126 |
+ |
|
127 |
+ if (Application.HIDE_PROJECT_LISTING) { |
|
128 |
+ if (!user.isMemberOf(organization) || !user.isAdminOf(organization)) { |
|
129 |
+ return badRequest(); |
|
130 |
+ } |
|
131 |
+ } |
|
132 |
+ |
|
126 | 133 |
SearchType searchType = SearchType.getValue(searchTypeValue); |
127 | 134 |
|
128 | 135 |
if(searchType == SearchType.NA || organization == null) { |
--- app/models/Organization.java
+++ app/models/Organization.java
... | ... | @@ -20,6 +20,7 @@ |
20 | 20 |
*/ |
21 | 21 |
package models; |
22 | 22 |
|
23 |
+import controllers.Application; |
|
23 | 24 |
import models.enumeration.RequestState; |
24 | 25 |
import models.enumeration.ResourceType; |
25 | 26 |
import models.resource.GlobalResource; |
... | ... | @@ -112,9 +113,11 @@ |
112 | 113 |
} |
113 | 114 |
} |
114 | 115 |
} else { |
115 |
- for(Project project : this.projects) { |
|
116 |
- if(project.isPublic() || user.isMemberOf(project)) { |
|
117 |
- result.add(project); |
|
116 |
+ if(!Application.HIDE_PROJECT_LISTING){ |
|
117 |
+ for(Project project : this.projects) { |
|
118 |
+ if(project.isPublic() || user.isMemberOf(project)) { |
|
119 |
+ result.add(project); |
|
120 |
+ } |
|
118 | 121 |
} |
119 | 122 |
} |
120 | 123 |
} |
--- app/models/Search.java
+++ app/models/Search.java
... | ... | @@ -24,6 +24,7 @@ |
24 | 24 |
import com.avaje.ebean.ExpressionList; |
25 | 25 |
import com.avaje.ebean.Junction; |
26 | 26 |
import com.avaje.ebean.Page; |
27 |
+import controllers.Application; |
|
27 | 28 |
import models.enumeration.Operation; |
28 | 29 |
import models.enumeration.ProjectScope; |
29 | 30 |
import models.enumeration.UserState; |
... | ... | @@ -496,7 +497,7 @@ |
496 | 497 |
|
497 | 498 |
private static ExpressionList<Project> projectsEL(String keyword, User user) { |
498 | 499 |
ExpressionList<Project> el = Project.find.where(); |
499 |
- if(user.isAnonymous()) { |
|
500 |
+ if(user.isAnonymous() && !Application.HIDE_PROJECT_LISTING) { |
|
500 | 501 |
el.eq("projectScope", ProjectScope.PUBLIC); |
501 | 502 |
el.disjunction() |
502 | 503 |
.icontains("overview", keyword) |
... | ... | @@ -505,17 +506,19 @@ |
505 | 506 |
} else { |
506 | 507 |
Junction<Project> junction = el.conjunction(); |
507 | 508 |
Junction<Project> pj = junction.disjunction(); |
508 |
- pj.add(Expr.eq("projectScope", ProjectScope.PUBLIC)); // public |
|
509 |
+ if (!Application.HIDE_PROJECT_LISTING) { |
|
510 |
+ pj.add(Expr.eq("projectScope", ProjectScope.PUBLIC)); // public |
|
511 |
+ } |
|
509 | 512 |
List<Organization> orgs = Organization.findOrganizationsByUserLoginId(user.loginId); // protected |
510 |
- if(!orgs.isEmpty()) { |
|
513 |
+ if (!orgs.isEmpty()) { |
|
511 | 514 |
pj.and(Expr.in("organization", orgs), Expr.eq("projectScope", ProjectScope.PROTECTED)); |
512 | 515 |
} |
513 | 516 |
pj.add(Expr.eq("projectUser.user.id", user.id)); // private |
514 | 517 |
pj.endJunction(); |
515 | 518 |
junction.disjunction() |
516 |
- .icontains("overview", keyword) |
|
517 |
- .icontains("name", keyword) |
|
518 |
- .endJunction(); |
|
519 |
+ .icontains("overview", keyword) |
|
520 |
+ .icontains("name", keyword) |
|
521 |
+ .endJunction(); |
|
519 | 522 |
junction.endJunction(); |
520 | 523 |
} |
521 | 524 |
el.orderBy().asc("name"); |
--- app/views/organization/view.scala.html
+++ app/views/organization/view.scala.html
... | ... | @@ -137,6 +137,7 @@ |
137 | 137 |
</ul> |
138 | 138 |
</div> |
139 | 139 |
<div class="span3 span-hard-wrap"> |
140 |
+ @if(UserApp.currentUser().isMemberOf(org)) { |
|
140 | 141 |
<div class="bubble-wrap gray project-home"> |
141 | 142 |
<div class="inner member-info"> |
142 | 143 |
<header> |
... | ... | @@ -168,6 +169,7 @@ |
168 | 169 |
</div> |
169 | 170 |
</div> |
170 | 171 |
</div> |
172 |
+ } |
|
171 | 173 |
</div> |
172 | 174 |
</div> |
173 | 175 |
</div> |
Add a comment
Delete comment
Once you delete this comment, you won't be able to recover it. Are you sure you want to delete this comment?