@Bean @Description("Thymeleaf template engine with Spring integration") public SpringTemplateEngine templateEngine(final TemplateResolver templateResolver) throws Exception { SpringTemplateEngine engine = new SpringTemplateEngine(); engine.setTemplateResolver(templateResolver); engine.addDialect(new SpringSecurityDialect()); engine.addDialect(new LayoutDialect(new GroupingStrategy())); engine.afterPropertiesSet(); return engine; }
@Bean @Description("Thymeleaf view resolver") public ViewResolver viewResolver(final SpringTemplateEngine templateEngine) { ThymeleafViewResolver resolver = new ThymeleafViewResolver(); resolver.setTemplateEngine(templateEngine); resolver.setCharacterEncoding("UTF-8"); resolver.setCache(false); resolver.setOrder(1); return resolver; }
@Description("Get events for a currently Pricipal CalendarUser") @GetMapping("/my") public ModelAndView myEvents() { CalendarUser currentUser = userContext.getCurrentUser(); Integer currentUserId = currentUser.getId(); ModelAndView result = new ModelAndView("events/my", "events", calendarService.findForUser(currentUserId)); result.addObject("currentUser", currentUser); return result; }
@Bean @Description("Thymeleaf view resolver") public ThymeleafViewResolver thymeleafViewResolver(final SpringTemplateEngine templateEngine) { ThymeleafViewResolver resolver = new ThymeleafViewResolver(); resolver.setTemplateEngine(templateEngine); resolver.setCharacterEncoding("UTF-8"); resolver.setCache(false); resolver.setOrder(1); return resolver; }
@Description("DefaultMethodSecurityExpressionHandler") @Bean public DefaultMethodSecurityExpressionHandler defaultExpressionHandler(EventDao eventDao){ DefaultMethodSecurityExpressionHandler deh = new DefaultMethodSecurityExpressionHandler(); deh.setPermissionEvaluator( new CalendarPermissionEvaluator(eventDao)); return deh; }
@Description("ConsensusBased AccessDecisionManager for Authorization voting") @Bean public AccessDecisionManager accessDecisionManager( CustomWebSecurityExpressionHandler customWebSecurityExpressionHandler) { List<AccessDecisionVoter<? extends Object>> decisionVoters = Arrays.asList( // new AuthenticatedVoter(), // new RoleVoter(), new WebExpressionVoter(){{ setExpressionHandler(customWebSecurityExpressionHandler); }} ); return new ConsensusBased(decisionVoters); }