static void withPermsForRead(RestdModel model, RouteBuilder route, String type) { MetaEntity entity = (MetaEntity)model.getAttribute(MetaEntity.class.getName()); if(null != entity) { route.setExtension(entity); route.setAllowAnonymous(entity.getAnonymous()); List<SimpleSecurity> secs = new ArrayList<>(); List<MApiSecurityReq> seqs = new ArrayList<>(); if(null != entity.getUserPerms()) { SimpleSecurity.Builder sec = new SimpleSecurity.Builder(); sec.setUserRequired(true); sec.setPermissions(getReadScope(entity.getUserPerms(), type)); secs.add(sec.build()); seqs.add(new MApiSecurityReq(SecurityConsts.USER, sec.getPermissions())); } if(null != entity.getClientPerms()) { SimpleSecurity.Builder sec = new SimpleSecurity.Builder(); sec.setClientRequired(true); sec.setPermissions(getReadScope(entity.getClientPerms(), type)); secs.add(sec.build()); seqs.add(new MApiSecurityReq(SecurityConsts.CLIENT, sec.getPermissions())); } if(!secs.isEmpty()) { route.setSecurities(secs.toArray(new SimpleSecurity[0])); } if(!seqs.isEmpty()) { route.setExtension(MApiSecurityReq[].class, seqs.toArray(new MApiSecurityReq[0])); } } }
static void withPermsForWrite(RestdModel model, RouteBuilder route, String type) { MetaEntity entity = (MetaEntity)model.getAttribute(MetaEntity.class.getName()); if(null != entity) { route.setExtension(entity); route.setAllowAnonymous(entity.getAnonymous()); List<SimpleSecurity> secs = new ArrayList<>(); List<MApiSecurityReq> seqs = new ArrayList<>(); if(null != entity.getUserPerms()) { SimpleSecurity.Builder sec = new SimpleSecurity.Builder(); sec.setUserRequired(true); sec.setPermissions(getWriteScope(entity.getUserPerms(), type)); secs.add(sec.build()); seqs.add(new MApiSecurityReq(SecurityConsts.USER, sec.getPermissions())); } if(null != entity.getClientPerms()) { SimpleSecurity.Builder sec = new SimpleSecurity.Builder(); sec.setClientRequired(true); sec.setPermissions(getWriteScope(entity.getClientPerms(), type)); secs.add(sec.build()); seqs.add(new MApiSecurityReq(SecurityConsts.CLIENT, sec.getPermissions())); } if(!secs.isEmpty()) { route.setSecurities(secs.toArray(new SimpleSecurity[0])); } if(!seqs.isEmpty()) { route.setExtension(MApiSecurityReq[].class, seqs.toArray(new MApiSecurityReq[0])); } } }
protected void postConfigure(RestdContext context, RestdModel model, RouteBuilder route, MApiOperationBuilder mo) { RestdConfig c = context.getConfig(); if(null != model) { if (c.isModelAnonymous(model.getName())) { route.setAllowAnonymous(true); } } route.addFailureHandler(context.getApiConfig().getFailureHandler()); JsonSettings settings = new JsonSettings.Builder().setDateTimeFormatter(SwaggerConstants.DATE_TIME_FORMAT, "GMT").build(); route.setExtension(settings); if(null != mo) { if(mo.isAllowAnonymous()) { route.setAllowAnonymous(true); } if(mo.isAllowClientOnly()) { route.setAllowClientOnly(true); } route.setPermissions(mo.getPermissions()); route.setSecurities(mo.getSecurities()); } }