changeset 26:ce2e3f2814c0

new: check userGroup when login
author Zoe Hong <zhong@mpiwg-berlin.mpg.de>
date Tue, 30 Jun 2015 14:31:29 +0200
parents 86694755415d
children 3b3e2963c8f7 aa9b50ad64e6
files src/main/java/de/mpiwg/gazetteer/dataverse/DataverseUtils.java src/main/java/de/mpiwg/gazetteer/dataverse/bo/VDCUser.java src/main/java/de/mpiwg/gazetteer/db/DBSectionVersion.java src/main/java/de/mpiwg/gazetteer/utils/AbstractDataProvider.java src/main/java/de/mpiwg/gazetteer/utils/DBService.java src/main/java/de/mpiwg/gazetteer/utils/DataProvider.java src/main/java/de/mpiwg/web/jsp/SessionBean.java src/main/webapp/pages/books.jsp
diffstat 8 files changed, 78 insertions(+), 23 deletions(-) [+]
line wrap: on
line diff
--- a/src/main/java/de/mpiwg/gazetteer/dataverse/DataverseUtils.java	Fri Jun 26 11:32:33 2015 +0200
+++ b/src/main/java/de/mpiwg/gazetteer/dataverse/DataverseUtils.java	Tue Jun 30 14:31:29 2015 +0200
@@ -1,20 +1,13 @@
 package de.mpiwg.gazetteer.dataverse;
 
-import java.io.BufferedReader;
-import java.io.DataOutputStream;
-import java.io.File;
-import java.io.FileInputStream;
+
 import java.io.IOException;
-import java.io.InputStream;
-import java.io.InputStreamReader;
-import java.io.OutputStream;
-import java.net.HttpURLConnection;
-import java.net.URL;
 import java.util.ArrayList;
 import java.util.List;
 
 import org.apache.commons.lang.StringUtils;
 import org.json.JSONArray;
+import org.json.JSONException;
 import org.json.JSONObject;
 
 import de.mpiwg.gazetteer.bo.LGBranch;
@@ -22,7 +15,6 @@
 import de.mpiwg.gazetteer.dataverse.bo.Study;
 import de.mpiwg.gazetteer.dataverse.bo.VDCUser;
 import de.mpiwg.gazetteer.utils.DataProvider;
-import de.mpiwg.gazetteer.utils.FileManager;
 import de.mpiwg.gazetteer.utils.HTTPUtils;
 import de.mpiwg.gazetteer.utils.HTTPUtils.HttpStringResponse;
 import de.mpiwg.gazetteer.utils.PropertiesUtils;
@@ -143,6 +135,7 @@
 		return "user-no-found ("+ id +")";
 	}
 	
+	
 	public static List<VDCUser> getAllUsers() throws Exception{
 		List<VDCUser> list = new ArrayList<VDCUser>();
 		
@@ -209,6 +202,32 @@
 		return null;
 	}
 
+	public static boolean isUserInGroups(VDCUser user, List<String> userGroups) {
+		// find user who named userName belongs in what groups. check if the user is in any of the groups in userGroup list
+		try {
+			JSONArray groupArray = user.getUserGroups();
+
+			for(int i=0; i<groupArray.length(); i++){
+				JSONObject groupString = groupArray.getJSONObject(i); 
+				
+				String friendlyName = (String) groupString.get("friendlyName");
+				
+				for(String u : userGroups) {
+					if(StringUtils.equals(u, friendlyName)) {
+						return true;
+					}
+				}
+				
+			}
+							
+		} catch (JSONException e) {
+			
+			e.printStackTrace();
+		}
+		
+		return false;
+	}
+
 	
 	
 }
--- a/src/main/java/de/mpiwg/gazetteer/dataverse/bo/VDCUser.java	Fri Jun 26 11:32:33 2015 +0200
+++ b/src/main/java/de/mpiwg/gazetteer/dataverse/bo/VDCUser.java	Tue Jun 30 14:31:29 2015 +0200
@@ -1,5 +1,7 @@
 package de.mpiwg.gazetteer.dataverse.bo;
 
+import org.json.JSONArray;
+import org.json.JSONException;
 import org.json.JSONObject;
 
 import de.mpiwg.gazetteer.utils.JSONUtils;
@@ -21,12 +23,15 @@
     private Long position;
     
     private String password;
+	private JSONArray userGroups;
+	
     public VDCUser(Long id, String userName, String password){
     	this.id = id;
     	this.userName = userName;
     	this.password = password;
     }
     
+    
     public VDCUser(JSONObject json){
     	
     	this.email = JSONUtils.getString(json, "email");
@@ -38,12 +43,30 @@
     	this.id = JSONUtils.getLong(json, "id");
     	this.position = JSONUtils.getLong(json, "position");
     	this.version = JSONUtils.getLong(json, "version");
+    	
+    	try {
+			this.userGroups = json.getJSONArray("userGroups");
+		} catch (JSONException e) {
+			// TODO Auto-generated catch block
+			this.userGroups = null;
+			e.printStackTrace();
+		}
     }
 
 	public String getUserName() {
 		return userName;
 	}
 
+	public JSONArray getUserGroups() {
+		return userGroups;
+	}
+
+
+	public void setUserGroups(JSONArray userGroups) {
+		this.userGroups = userGroups;
+	}
+
+
 	public void setUserName(String userName) {
 		this.userName = userName;
 	}
@@ -110,7 +133,7 @@
 
 	public void setPassword(String password) {
 		this.password = password;
-	}    
+	}
 
 	
 }
--- a/src/main/java/de/mpiwg/gazetteer/db/DBSectionVersion.java	Fri Jun 26 11:32:33 2015 +0200
+++ b/src/main/java/de/mpiwg/gazetteer/db/DBSectionVersion.java	Tue Jun 30 14:31:29 2015 +0200
@@ -52,10 +52,9 @@
 	}
 
 	public String getDate() {
-		// TODO time zone convert
 		// TODO optional time zone
 		
-		
+		// time zone convert
 		SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
 		 
 		String dateInString = this.date;
--- a/src/main/java/de/mpiwg/gazetteer/utils/AbstractDataProvider.java	Fri Jun 26 11:32:33 2015 +0200
+++ b/src/main/java/de/mpiwg/gazetteer/utils/AbstractDataProvider.java	Tue Jun 30 14:31:29 2015 +0200
@@ -5,7 +5,6 @@
 import cl.maps.duplex.DuplexMap;
 import de.mpiwg.gazetteer.bo.LGBranch;
 import de.mpiwg.gazetteer.bo.LGFile;
-import de.mpiwg.gazetteer.bo.SearchRulesFile;
 
 public class AbstractDataProvider {
 
@@ -47,4 +46,6 @@
 			this.fileMap.put(file.getKey(), file);
 		}
 	}
+	
+	
 }
--- a/src/main/java/de/mpiwg/gazetteer/utils/DBService.java	Fri Jun 26 11:32:33 2015 +0200
+++ b/src/main/java/de/mpiwg/gazetteer/utils/DBService.java	Tue Jun 30 14:31:29 2015 +0200
@@ -613,7 +613,7 @@
 	
 	protected static  List<LGBranch> getAllLGBranchFromDB(){
 		List<LGBranch> list = null;
-
+		
 		Session session = HibernateUtil.getSessionFactory().getCurrentSession();
 		session.getTransaction().begin();
 		Query query = session.createQuery("from LGBranch");
--- a/src/main/java/de/mpiwg/gazetteer/utils/DataProvider.java	Fri Jun 26 11:32:33 2015 +0200
+++ b/src/main/java/de/mpiwg/gazetteer/utils/DataProvider.java	Tue Jun 30 14:31:29 2015 +0200
@@ -27,7 +27,6 @@
 	public DataProvider(){
 		logger.info("##### Starting DataProvider #####");
 	}
-	
 	public LGFile getFile(Long fileId){
 		return getFileMap().getValuesByOwnKey(fileId);
 	}
--- a/src/main/java/de/mpiwg/web/jsp/SessionBean.java	Fri Jun 26 11:32:33 2015 +0200
+++ b/src/main/java/de/mpiwg/web/jsp/SessionBean.java	Tue Jun 30 14:31:29 2015 +0200
@@ -8,10 +8,8 @@
 
 import org.apache.log4j.Logger;
 
-import de.mpiwg.gazetteer.bo.LGBranch;
 import de.mpiwg.gazetteer.dataverse.DataverseUtils;
 import de.mpiwg.gazetteer.dataverse.bo.VDCUser;
-import de.mpiwg.gazetteer.utils.DataProvider;
 
 public class SessionBean extends AbstractJSPPage {
 
@@ -77,11 +75,27 @@
 	public void login(){
 		try {
 			this.user = DataverseUtils.login(userName, password);
-			if(user != null){
-				this.user.setPassword(this.password);
-				this.homePage.loadParameters(request, response);
-				this.homePage.reloadBranches();	
+			
+			if(this.user != null){
+				
+				// check userGroups
+				List<String> theUserGroups = new ArrayList<String>();
+				theUserGroups.add("mpiwg");
+				theUserGroups.add("nuist");
 				
+				if (DataverseUtils.isUserInGroups(this.user, theUserGroups)){
+					logger.debug("user's groups: " + user.getUserGroups());
+
+					this.user.setPassword(this.password);
+					this.homePage.loadParameters(request, response);
+					this.homePage.reloadBranches();	
+
+				} else {					
+					this.user = null;
+					
+					addMsg("Please contact/email us to activate your account!");
+				}
+				// -----
 			}else{
 				addMsg("User account no found or userName and password do not match!");
 			}
--- a/src/main/webapp/pages/books.jsp	Fri Jun 26 11:32:33 2015 +0200
+++ b/src/main/webapp/pages/books.jsp	Tue Jun 30 14:31:29 2015 +0200
@@ -401,7 +401,7 @@
 								</tr>
 								<tr>
 									<td>
-										<input type="text" name="editTimeFilter" value="<%= sessionBean.getBooksPage().getEditTimeFilter()%>" size="7"/>
+										<input type="text" name="editTimeFilter" value="<%= sessionBean.getBooksPage().getEditTimeFilter()%>" size="9"/>
 									</td>									
 									<td>
 										<input type="image"