Changeset 88:b406507a953d in AnnotationManagerN4J for src/main/java/de/mpiwg/itgroup/annotations/restlet/AnnotatorResourceImpl.java
Legend:
- Unmodified
- Added
- Removed
-
src/main/java/de/mpiwg/itgroup/annotations/restlet/AnnotatorResourceImpl.java
r86 r88 1 /**2 * Base class for Annotator resource classes.3 */4 1 package de.mpiwg.itgroup.annotations.restlet; 5 2 … … 27 24 28 25 import java.io.UnsupportedEncodingException; 29 import java.security.InvalidKeyException;30 import java.security.SignatureException;31 26 import java.text.SimpleDateFormat; 32 27 import java.util.ArrayList; … … 57 52 import org.restlet.util.Series; 58 53 54 import com.google.gson.JsonArray; 55 import com.google.gson.JsonElement; 56 import com.google.gson.JsonObject; 57 59 58 import de.mpiwg.itgroup.annotations.Actor; 60 59 import de.mpiwg.itgroup.annotations.Annotation; … … 155 154 */ 156 155 public boolean isAuthenticated(Representation entity) { 157 return ( checkAuthToken(entity) != null);156 return (getUserFromAuthToken(entity) != null); 158 157 } 159 158 … … 166 165 * @return user-id 167 166 */ 168 public String checkAuthToken(Representation entity) {167 public Person getUserFromAuthToken(Representation entity) { 169 168 @SuppressWarnings("unchecked") 170 169 Series<Header> requestHeaders = (Series<Header>) getRequest().getAttributes().get("org.restlet.http.headers"); … … 172 171 if (authToken == null) { 173 172 if (!((BaseRestlet) getApplication()).isAuthorizationMode()) { 174 return "anonymous";173 return Person.getAnonymous(); 175 174 } 176 175 return null; 177 176 } 178 // decode token first to get consumer key 179 JsonToken token = new JsonTokenParser(null, null).deserialize(authToken); 180 String userId = token.getParamAsPrimitive("userId").getAsString(); 181 String consumerKey = token.getParamAsPrimitive("consumerKey").getAsString(); 182 // get stored consumer secret for key 183 BaseRestlet restServer = (BaseRestlet) getApplication(); 184 String consumerSecret = restServer.getConsumerSecret(consumerKey); 185 logger.fine("requested consumer key=" + consumerKey + " secret=" + consumerSecret); 186 if (consumerSecret == null) { 187 return null; 188 } 189 // logger.fine(String.format("token=%s tokenString=%s signatureAlgorithm=%s",token,token.getTokenString(),token.getSignatureAlgorithm())); 190 try { 177 Person user = null; 178 try { 179 // decode token first to get consumer key 180 JsonToken token = new JsonTokenParser(null, null).deserialize(authToken); 181 String consumerKey = token.getParamAsPrimitive("consumerKey").getAsString(); 182 // get stored consumer secret for key 183 BaseRestlet restServer = (BaseRestlet) getApplication(); 184 String consumerSecret = restServer.getConsumerSecret(consumerKey); 185 logger.fine("requested consumer key=" + consumerKey + " secret=" + consumerSecret); 186 if (consumerSecret == null) { 187 logger.warning("Error: unknown consumer key: "+consumerKey); 188 return null; 189 } 190 // logger.fine(String.format("token=%s tokenString=%s signatureAlgorithm=%s",token,token.getTokenString(),token.getSignatureAlgorithm())); 191 191 List<Verifier> verifiers = new ArrayList<Verifier>(); 192 192 // we only do HS256 yet … … 194 194 // verify token signature(should really be static...) 195 195 new JsonTokenParser(new SystemClock(), null, (Checker[]) null).verify(token, verifiers); 196 } catch (SignatureException e) { 197 // TODO Auto-generated catch block 198 e.printStackTrace(); 199 } catch (InvalidKeyException e) { 200 // TODO Auto-generated catch block 201 e.printStackTrace(); 202 } catch (UnsupportedEncodingException e) { 203 // TODO Auto-generated catch block 204 e.printStackTrace(); 196 // create Person 197 JsonObject payload = token.getPayloadAsJsonObject(); 198 // userId is mandatory 199 String userId = payload.get("userId").getAsString(); 200 user = new Person(userId); 201 // displayName is optional 202 if (payload.has("displayName")) { 203 user.name = payload.get("displayName").getAsString(); 204 } 205 // memberOf groups is optional 206 if (payload.has("memberOf")) { 207 Set<String> groups = new HashSet<String>(); 208 JsonArray jgroups = payload.get("memberOf").getAsJsonArray(); 209 for (JsonElement jgroup : jgroups) { 210 groups.add(jgroup.getAsString()); 211 } 212 user.groups = groups; 213 } 214 } catch (Exception e) { 215 logger.warning("Error checking auth token: "+e.toString()); 216 return null; 205 217 } 206 218 // must be ok then 207 logger.fine("auth OK! user=" + user Id);208 return user Id;219 logger.fine("auth OK! user=" + user); 220 return user; 209 221 } 210 222 … … 212 224 * creates Annotator-JSON from an Annotation object. 213 225 * 214 * @param annot 226 * @param annot annotation object 215 227 * @param forAnonymous 216 * TODO 217 * @return 228 * @return Annotator-JSON 218 229 */ 219 230 public JSONObject createAnnotatorJson(Annotation annot, boolean forAnonymous) { … … 577 588 * check authentication 578 589 */ 579 String authUser = checkAuthToken(entity);590 Person authUser = getUserFromAuthToken(entity); 580 591 if (authUser == null) { 581 592 /* … … 620 631 } 621 632 if (username == null) { 622 username = authUser ;633 username = authUser.getName(); 623 634 } 624 635 // try to get full name
Note: See TracChangeset
for help on using the changeset viewer.