comparison src/main/java/de/mpiwg/itgroup/annotations/restlet/AnnotatorResourceImpl.java @ 105:7417f5915181 default tip

check admin permission before changing permissions. Enum for typesafe actions.
author casties
date Fri, 10 Feb 2017 15:45:35 +0100
parents 9140017e8962
children
comparison
equal deleted inserted replaced
104:e953327d66bb 105:7417f5915181
54 import com.google.gson.JsonElement; 54 import com.google.gson.JsonElement;
55 import com.google.gson.JsonObject; 55 import com.google.gson.JsonObject;
56 56
57 import de.mpiwg.itgroup.annotations.Actor; 57 import de.mpiwg.itgroup.annotations.Actor;
58 import de.mpiwg.itgroup.annotations.Annotation; 58 import de.mpiwg.itgroup.annotations.Annotation;
59 import de.mpiwg.itgroup.annotations.Annotation.Action;
59 import de.mpiwg.itgroup.annotations.Annotation.FragmentTypes; 60 import de.mpiwg.itgroup.annotations.Annotation.FragmentTypes;
60 import de.mpiwg.itgroup.annotations.Group; 61 import de.mpiwg.itgroup.annotations.Group;
61 import de.mpiwg.itgroup.annotations.Person; 62 import de.mpiwg.itgroup.annotations.Person;
62 import de.mpiwg.itgroup.annotations.Resource; 63 import de.mpiwg.itgroup.annotations.Resource;
63 import de.mpiwg.itgroup.annotations.Target; 64 import de.mpiwg.itgroup.annotations.Target;
677 } 678 }
678 679
679 /* 680 /*
680 * permissions 681 * permissions
681 */ 682 */
682 if (jo.has("permissions")) { 683 if (jo.has("permissions")) {
683 JSONObject permissions = jo.getJSONObject("permissions"); 684 // change permissions only if user has admin permission
684 if (permissions.has("admin")) { 685 if (annot.isActionAllowed(Action.admin, authUser, getAnnotationStore())) {
685 JSONArray perms = permissions.getJSONArray("admin"); 686 JSONObject permissions = jo.getJSONObject("permissions");
686 Actor actor = getActorFromPermissions(perms); 687 if (permissions.has("admin")) {
687 annot.setAdminPermission(actor); 688 JSONArray perms = permissions.getJSONArray("admin");
688 } 689 Actor actor = getActorFromPermissions(perms);
689 if (permissions.has("delete")) { 690 annot.setAdminPermission(actor);
690 JSONArray perms = permissions.getJSONArray("delete"); 691 }
691 Actor actor = getActorFromPermissions(perms); 692 if (permissions.has("delete")) {
692 annot.setDeletePermission(actor); 693 JSONArray perms = permissions.getJSONArray("delete");
693 } 694 Actor actor = getActorFromPermissions(perms);
694 if (permissions.has("update")) { 695 annot.setDeletePermission(actor);
695 JSONArray perms = permissions.getJSONArray("update"); 696 }
696 Actor actor = getActorFromPermissions(perms); 697 if (permissions.has("update")) {
697 annot.setUpdatePermission(actor); 698 JSONArray perms = permissions.getJSONArray("update");
698 } 699 Actor actor = getActorFromPermissions(perms);
699 if (permissions.has("read")) { 700 annot.setUpdatePermission(actor);
700 JSONArray perms = permissions.getJSONArray("read"); 701 }
701 Actor actor = getActorFromPermissions(perms); 702 if (permissions.has("read")) {
702 annot.setReadPermission(actor); 703 JSONArray perms = permissions.getJSONArray("read");
703 } 704 Actor actor = getActorFromPermissions(perms);
704 } 705 annot.setReadPermission(actor);
706 }
707 }
708 }
705 709
706 /* 710 /*
707 * tags 711 * tags
708 */ 712 */
709 if (jo.has("tags")) { 713 if (jo.has("tags")) {