@GetMapping({"/home", "/"})
	public String home(User user, @RequestParam(value = "exception", defaultValue = "") String exception,
					   @RequestParam(value = "region", defaultValue = "") String region, ModelMap model,
					   HttpServletResponse response, HttpServletRequest request) {
		try {
			Role role;
			try {
				recordReferrer(region);
				// set local language
				setLanguage(userContext.getCurrentUser().getUserLanguage(), response, request);
				role = user.getRole();
			} catch (AuthenticationCredentialsNotFoundException e) {
				return "app";
			}
			model.addAttribute("handlers", scriptHandlerFactory.getVisibleHandlers());

			if (StringUtils.isNotBlank(exception)) {
				model.addAttribute("exception", exception);
			}
			if (role == Role.ADMIN || role == Role.SUPER_USER || role == Role.USER) {
				return "app";
			} else {
				log.info("Invalid user role:{}", role.getFullName());
				return "app";
			}
		} catch (Exception e) {
			// Make the home reliable...
			model.addAttribute("exception", e.getMessage());
			return "app";
		}
	}
Return nGrinder index page.

@param user      user
@param exception exception if it's redirected from exception handler
@param region    region. where this access comes from. it's optional
@param model     model
@param response  response
@param request   request
@return "index" if already logged in. Otherwise "login".
ngrinder-controller/src/main/java/org/ngrinder/home/controller/HomeController.java