From f40169fcd73b86eca4bd2c1e284231e6d9d5d7e4 Mon Sep 17 00:00:00 2001 From: allo Date: Fri, 19 Jan 2007 19:42:50 +0000 Subject: [PATCH] preparing multiuser bookmarks git-svn-id: https://svn.berlios.de/svnroot/repos/yacy/trunk@3256 6c8d7289-2bf4-0310-a012-ef5d649a1542 --- htroot/Bookmarks.java | 1 + htroot/User_p.html | 1 + htroot/User_p.java | 56 ++++++++++++++------------ source/de/anomic/data/bookmarksDB.java | 11 +++++ source/de/anomic/data/userDB.java | 31 +++++++++----- 5 files changed, 65 insertions(+), 35 deletions(-) diff --git a/htroot/Bookmarks.java b/htroot/Bookmarks.java index c010a0add..f71a7831a 100644 --- a/htroot/Bookmarks.java +++ b/htroot/Bookmarks.java @@ -53,6 +53,7 @@ import java.util.Iterator; import de.anomic.data.bookmarksDB; import de.anomic.data.listManager; +import de.anomic.data.userDB; import de.anomic.data.bookmarksDB.Tag; import de.anomic.http.httpHeader; import de.anomic.index.indexURLEntry; diff --git a/htroot/User_p.html b/htroot/User_p.html index b5f6022c0..61f6661a4 100644 --- a/htroot/User_p.html +++ b/htroot/User_p.html @@ -61,6 +61,7 @@

+ diff --git a/htroot/User_p.java b/htroot/User_p.java index 0aa52c1f5..86a188541 100644 --- a/htroot/User_p.java +++ b/htroot/User_p.java @@ -79,6 +79,8 @@ public class User_p { prop.put("page_downloadRight", 0); prop.put("page_uploadRight", 0); prop.put("page_adminRight", 0); + prop.put("page_wikiAdminRight", 0); + prop.put("page_bookmarkRight", 0); prop.put("page_users", 0); @@ -99,19 +101,20 @@ public class User_p { // link: "If you want to manage more Users, return to the user page." (parameter "user" is empty) if (entry != null) { //TODO: set username read-only in html - prop.put("page_current_user", post.get("user")); - prop.put("page_username", post.get("user")); - prop.put("page_firstname", entry.getFirstName()); - prop.put("page_lastname", entry.getLastName()); - prop.put("page_address", entry.getAddress()); - prop.put("page_timelimit", entry.getTimeLimit()); - prop.put("page_timeused", entry.getTimeUsed()); + prop.put("page_current_user", post.get("user")); + prop.put("page_username", post.get("user")); + prop.put("page_firstname", entry.getFirstName()); + prop.put("page_lastname", entry.getLastName()); + prop.put("page_address", entry.getAddress()); + prop.put("page_timelimit", entry.getTimeLimit()); + prop.put("page_timeused", entry.getTimeUsed()); prop.put("page_proxyRight", (entry.hasProxyRight()?1:0)); prop.put("page_uploadRight", (entry.hasUploadRight()?1:0)); prop.put("page_downloadRight", (entry.hasDownloadRight()?1:0)); prop.put("page_adminRight", (entry.hasAdminRight()?1:0)); prop.put("page_blogRight", (entry.hasBlogRight()?1:0)); prop.put("page_wikiAdminRight", (entry.hasWikiAdminRight()?1:0)); + prop.put("page_bookmarkRight", (entry.hasBookmarkRight()?1:0)); } }else if( post.containsKey("delete_user") && !((String)post.get("user")).equals("newuser") ){ sb.userDB.removeEntry((String)post.get("user")); @@ -140,22 +143,24 @@ public class User_p { String adminRight=( post.containsKey("adminRight")&&((String)post.get("adminRight")).equals("on") ? "true" : "false"); String blogRight=( post.containsKey("blogRight")&&((String)post.get("blogRight")).equals("on") ? "true" : "false"); String wikiAdminRight=( post.containsKey("wikiAdminRight")&&((String)post.get("wikiAdminRight")).equals("on") ? "true" : "false"); + String bookmarkRight=( post.containsKey("bookmarkRight")&&((String)post.get("bookmarkRight")).equals("on") ? "true" : "false"); HashMap mem=new HashMap(); if( post.get("current_user").equals("newuser")){ //new user if(!pw.equals("")){ //change only if set mem.put(userDB.Entry.MD5ENCODED_USERPWD_STRING, serverCodings.encodeMD5Hex(username+":"+pw)); } - mem.put(userDB.Entry.USER_FIRSTNAME, firstName); - mem.put(userDB.Entry.USER_LASTNAME, lastName); + mem.put(userDB.Entry.USER_FIRSTNAME, firstName); + mem.put(userDB.Entry.USER_LASTNAME, lastName); mem.put(userDB.Entry.USER_ADDRESS, address); mem.put(userDB.Entry.TIME_LIMIT, timeLimit); - mem.put(userDB.Entry.TIME_USED, timeUsed); - mem.put(userDB.Entry.PROXY_RIGHT, proxyRight); - mem.put(userDB.Entry.UPLOAD_RIGHT, uploadRight); - mem.put(userDB.Entry.DOWNLOAD_RIGHT, downloadRight); - mem.put(userDB.Entry.BLOG_RIGHT, blogRight); - mem.put(userDB.Entry.WIKIADMIN_RIGHT, wikiAdminRight); + mem.put(userDB.Entry.TIME_USED, timeUsed); + mem.put(userDB.Entry.PROXY_RIGHT, proxyRight); + mem.put(userDB.Entry.UPLOAD_RIGHT, uploadRight); + mem.put(userDB.Entry.DOWNLOAD_RIGHT, downloadRight); + mem.put(userDB.Entry.BLOG_RIGHT, blogRight); + mem.put(userDB.Entry.WIKIADMIN_RIGHT, wikiAdminRight); + mem.put(userDB.Entry.BOOKMARK_RIGHT, bookmarkRight); try{ entry=sb.userDB.createEntry(username, mem); @@ -175,17 +180,18 @@ public class User_p { if(! pw.equals("")){ entry.setProperty(userDB.Entry.MD5ENCODED_USERPWD_STRING, serverCodings.encodeMD5Hex(username+":"+pw)); } - entry.setProperty(userDB.Entry.USER_FIRSTNAME, firstName); - entry.setProperty(userDB.Entry.USER_LASTNAME, lastName); - entry.setProperty(userDB.Entry.USER_ADDRESS, address); + entry.setProperty(userDB.Entry.USER_FIRSTNAME, firstName); + entry.setProperty(userDB.Entry.USER_LASTNAME, lastName); + entry.setProperty(userDB.Entry.USER_ADDRESS, address); entry.setProperty(userDB.Entry.TIME_LIMIT, timeLimit); - entry.setProperty(userDB.Entry.TIME_USED, timeUsed); - entry.setProperty(userDB.Entry.PROXY_RIGHT, proxyRight); - entry.setProperty(userDB.Entry.UPLOAD_RIGHT, uploadRight); - entry.setProperty(userDB.Entry.DOWNLOAD_RIGHT, downloadRight); - entry.setProperty(userDB.Entry.ADMIN_RIGHT, adminRight); - entry.setProperty(userDB.Entry.BLOG_RIGHT, blogRight); - entry.setProperty(userDB.Entry.WIKIADMIN_RIGHT, wikiAdminRight); + entry.setProperty(userDB.Entry.TIME_USED, timeUsed); + entry.setProperty(userDB.Entry.PROXY_RIGHT, proxyRight); + entry.setProperty(userDB.Entry.UPLOAD_RIGHT, uploadRight); + entry.setProperty(userDB.Entry.DOWNLOAD_RIGHT, downloadRight); + entry.setProperty(userDB.Entry.ADMIN_RIGHT, adminRight); + entry.setProperty(userDB.Entry.BLOG_RIGHT, blogRight); + entry.setProperty(userDB.Entry.WIKIADMIN_RIGHT, wikiAdminRight); + entry.setProperty(userDB.Entry.BOOKMARK_RIGHT, bookmarkRight); }catch (IOException e){ } }else{ diff --git a/source/de/anomic/data/bookmarksDB.java b/source/de/anomic/data/bookmarksDB.java index aab928f71..455114ca7 100644 --- a/source/de/anomic/data/bookmarksDB.java +++ b/source/de/anomic/data/bookmarksDB.java @@ -737,6 +737,7 @@ public class bookmarksDB { public static final String BOOKMARK_TAGS="bookmarkTags"; public static final String BOOKMARK_PUBLIC="bookmarkPublic"; public static final String BOOKMARK_TIMESTAMP="bookmarkTimestamp"; + public static final String BOOKMARK_OWNER="bookmarkOwner"; private String urlHash; private Map mem; private HashSet tags; @@ -816,6 +817,16 @@ public class bookmarksDB { } return (String) this.mem.get(BOOKMARK_URL); } + public String getOwner(){ + if(this.mem.containsKey(BOOKMARK_OWNER)){ + return (String) this.mem.get(BOOKMARK_OWNER); + }else{ + return null; //null means admin + } + } + public void setOwner(String owner){ + this.mem.put(BOOKMARK_OWNER, owner); + } public boolean getPublic(){ if(this.mem.containsKey(BOOKMARK_PUBLIC)){ return ((String) this.mem.get(BOOKMARK_PUBLIC)).equals("public"); diff --git a/source/de/anomic/data/userDB.java b/source/de/anomic/data/userDB.java index 9fe0cd4c5..39f41087b 100644 --- a/source/de/anomic/data/userDB.java +++ b/source/de/anomic/data/userDB.java @@ -140,7 +140,8 @@ public final class userDB { return null; } } - /* + + /* * use a ProxyAuth String to authenticate a user * @param auth a base64 Encoded String, which contains "username:pw". */ @@ -168,23 +169,29 @@ public final class userDB { } return null; } + public Entry getUser(String auth, String ip, String cookies){ + Entry entry=null; + if(auth != null) + entry=proxyAuth(auth); + if(entry == null) + entry=cookieAuth(cookies); + if(entry == null) + entry=cookieAuth(cookies); + return entry; + } /* * determinate, if a user has Adminrights from a authorisation http-headerfield * it tests both userDB and oldstyle adminpw. * @param auth the http-headerline for authorisation */ public boolean hasAdminRight(String auth, String ip, String cookies){ - Entry entry=null; - if(auth != null) - entry=proxyAuth(auth); - if(entry != null && entry.hasAdminRight()) + Entry entry=getUser(auth, ip, cookies); + if(entry != null) return true; - entry=cookieAuth(cookies); - if(entry != null && entry.hasAdminRight()) + else if(cookieAdminAuth(cookies)) return true; - if(cookieAdminAuth(cookies)) - return true; - return false; + else + return false; } /* @@ -319,6 +326,7 @@ public final class userDB { public static final String PROXY_RIGHT = "proxyRight"; public static final String BLOG_RIGHT = "blogRight"; public static final String WIKIADMIN_RIGHT = "wikiAdminRight"; + public static final String BOOKMARK_RIGHT = "bookmarkRight"; public static final int PROXY_ALLOK = 0; //can Surf public static final int PROXY_ERROR = 1; //unknown error @@ -518,6 +526,9 @@ public final class userDB { public boolean hasWikiAdminRight() { return (this.mem.containsKey(WIKIADMIN_RIGHT)?((String)this.mem.get(WIKIADMIN_RIGHT)).equals("true"):false); } + public boolean hasBookmarkRight() { + return (this.mem.containsKey(BOOKMARK_RIGHT)?((String)this.mem.get(BOOKMARK_RIGHT)).equals("true"):false); + } public boolean isLoggedOut(){ return (this.mem.containsKey(LOGGED_OUT)?((String)this.mem.get(LOGGED_OUT)).equals("true"):false); }