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);
}