[Notice] Announcing the End of Demo Server [Read me]
Keesun Baik 2013-04-18
only manager and site manager can see the project settings menu
@88469590eb60eba4ef38270a9b3a2b4e99014ef6
app/models/ProjectUser.java
--- app/models/ProjectUser.java
+++ app/models/ProjectUser.java
@@ -174,4 +174,41 @@
         }
         return false;
     }
+
+    public static String roleOf(String loginId, Project project) {
+        String roleName = "guest";
+        if(loginId == null) {
+            return roleName;
+        }
+
+        User user = User.findByLoginId(loginId);
+        if(user == null) {
+            return roleName;
+        }
+
+        if(user.isSiteManager()) {
+            return "siteManager";
+        } else if(!user.isAnonymous()) {
+            Role role = Role.findRoleByIds(user.id, project.id);
+            if(role != null) {
+                return role.name.toLowerCase();
+            }
+        }
+        return roleName;
+    }
+
+    public static boolean isAllowedToSettings(String loginId, Project project) {
+        if(loginId == null) {
+            return false;
+        }
+
+        User user = User.findByLoginId(loginId);
+        if(user == null || user.isAnonymous()) {
+            return false;
+        }
+        if(user.isSiteManager() || ProjectUser.isManager(user.id, project.id)) {
+            return true;
+        }
+        return false;
+    }
 }
app/views/prjmenu.scala.html
--- app/views/prjmenu.scala.html
+++ app/views/prjmenu.scala.html
@@ -22,24 +22,9 @@
     menuState
 }
 
-<div class="label user-role">
-	<i class="icon-eye-open icon-white"></i>
-     @{
-         var role = "guest"; // anonymous
-         val loginId = session.contains("loginId")
-         if(loginId) {
-             var currentUser = User.findByLoginId(session.get("loginId"))
-             if(currentUser.isSiteManager) {
-                 role = "siteManager"
-             } else if(!currentUser.isAnonymous) {
-                 val roleOfProject = Role.findRoleByIds(currentUser.id, project.id)
-                 if(roleOfProject != null) {
-                     role = roleOfProject.name;
-                 }
-             }
-        }
-		Messages("role." + role)
-     }
+<div class="label inline-block" style="border-radius:3px 3px 0px 0px; padding:5px 10px;">
+	<i class="icon-eye-open icon-white" style="vertical-align:bottom;"></i>
+     @Messages("role." + ProjectUser.roleOf(session.get("loginId"), project))
 </div>
 
 <div class="project-menu @menuCSS">
@@ -77,7 +62,7 @@
 $(document).ready(function(){
 	try {
 		var welLink;
-		
+
 		$(".project-menu-wrap a").each(function(n, el){
 			welLink = $(el);
 			if(welLink.attr("href") == document.location.pathname){
app/views/sidemenu.scala.html
--- app/views/sidemenu.scala.html
+++ app/views/sidemenu.scala.html
@@ -1,10 +1,12 @@
 @(project:Project)
 
+@if(ProjectUser.isAllowedToSettings(session.get("loginId"), project)) {
 <div class="side-menu-wrap">
     <ul class="side-menus unstyled bg">
-    	<!-- 
+	<!--
         <li class="side-menu"><a href="@routes.StatisticsApp.statistics(project.owner, project.name)"><i class="ico ico-statistics"></i></a></li>
         -->
         <li class="side-menu"><a href="@routes.ProjectApp.settingForm(project.owner, project.name)"><i class="ico ico-setting"></i></a></li>
     </ul>
-</div>
(No newline at end of file)
+</div>
+}
(No newline at end of file)
test/models/ProjectUserTest.java
--- test/models/ProjectUserTest.java
+++ test/models/ProjectUserTest.java
@@ -28,7 +28,7 @@
         assertThat(ProjectUser.findByIds(2l, 3l).role.id)
                 .isEqualTo(2l);
     }
-    
+
     @Test
     public void assignRole() throws Exception {
         // Given
@@ -40,7 +40,7 @@
         assertThat(ProjectUser.findByIds(2l, 1l).role.id).isEqualTo(2l);
         assertThat(ProjectUser.findByIds(2l, 3l).role.id).isEqualTo(2l);
     }
-    
+
     @Test
     public void isManager() throws Exception {
         // Given
@@ -51,7 +51,7 @@
         assertThat(ProjectUser.checkOneMangerPerOneProject(1l)).isEqualTo(true);
         assertThat(ProjectUser.checkOneMangerPerOneProject(3l)).isEqualTo(true);
     }
-    
+
     @Test
     public void isMember() throws Exception {
         // Given
@@ -60,7 +60,7 @@
         assertThat(ProjectUser.isMember(2l, 2l)).isEqualTo(true);
         assertThat(ProjectUser.isMember(2l, 3l)).isEqualTo(false);
     }
-    
+
     @Test
     public void options() throws Exception {
         // Given
@@ -68,7 +68,7 @@
         // Then
         assertThat(ProjectUser.options(1l).containsValue("k16wire")).isEqualTo(true);
     }
-    
+
     @Test
     public void findMemberListByProject() throws Exception {
         // Given
@@ -80,4 +80,46 @@
         assertThat(projectUsers.get(0).user.loginId).isEqualTo("hobi");
         assertThat(projectUsers.get(0).role.name).isEqualTo("manager");
     }
+
+    @Test
+    public void roleOf() {
+        // GIVEN
+        String loginId = "hobi";
+        Project project = Project.findByNameAndOwner(loginId, "nForge4java");
+        // WHEN
+        String roleName = ProjectUser.roleOf(loginId, project);
+        // THEN
+        assertThat(roleName).isEqualTo("manager");
+
+        // WHEN
+        roleName = ProjectUser.roleOf("admin", project);
+        // THEN
+        assertThat(roleName).isEqualTo("siteManager");
+
+        // WHEN
+        roleName = ProjectUser.roleOf(null, project);
+        // THEN
+        assertThat(roleName).isEqualTo("guest");
+
+        // WHEN
+        roleName = ProjectUser.roleOf("keesun", project);
+        // THEN
+        assertThat(roleName).isEqualTo("guest");
+    }
+
+    @Test
+    public void isAllowedToSettings() {
+        // GIVEN
+        String loginId = "hobi";
+        Project project = Project.findByNameAndOwner(loginId, "nForge4java");
+        // WHEN // THEN
+        assertThat(ProjectUser.isAllowedToSettings(loginId, project)).isTrue();
+        // WHEN // THEN
+        assertThat(ProjectUser.isAllowedToSettings("admin", project)).isTrue();
+        // WHEN // THEN
+        assertThat(ProjectUser.isAllowedToSettings(null, project)).isFalse();
+        // WHEN // THEN
+        assertThat(ProjectUser.isAllowedToSettings("keesun", project)).isFalse();
+
+    }
 }
Add a comment
List