| /* |
| * Copyright 2011 Google Inc. |
| * |
| * Licensed under the Apache License, Version 2.0 (the "License"); you may not |
| * use this file except in compliance with the License. You may obtain a copy of |
| * the License at |
| * |
| * http://www.apache.org/licenses/LICENSE-2.0 |
| * |
| * Unless required by applicable law or agreed to in writing, software |
| * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT |
| * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the |
| * License for the specific language governing permissions and limitations under |
| * the License. |
| */ |
| package com.google.gwt.sample.gaerequest.server; |
| |
| import com.google.appengine.api.users.UserService; |
| import com.google.appengine.api.users.UserServiceFactory; |
| import com.google.gwt.sample.gaerequest.shared.GaeHelper; |
| |
| import java.io.IOException; |
| |
| import javax.servlet.Filter; |
| import javax.servlet.FilterChain; |
| import javax.servlet.FilterConfig; |
| import javax.servlet.ServletException; |
| import javax.servlet.ServletRequest; |
| import javax.servlet.ServletResponse; |
| import javax.servlet.http.HttpServletRequest; |
| import javax.servlet.http.HttpServletResponse; |
| |
| /** |
| * A servlet filter that handles basic GAE user authentication. |
| */ |
| public class GaeAuthFilter implements Filter { |
| |
| @Override |
| public void destroy() { |
| } |
| |
| @Override |
| public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, |
| FilterChain filterChain) throws IOException, ServletException { |
| UserService userService = UserServiceFactory.getUserService(); |
| HttpServletRequest request = (HttpServletRequest) servletRequest; |
| HttpServletResponse response = (HttpServletResponse) servletResponse; |
| |
| if (!userService.isUserLoggedIn()) { |
| String redirectUrl = request.getHeader(GaeHelper.REDIRECT_URL_HTTP_HEADER_NAME); |
| if (redirectUrl == null || redirectUrl.length() == 0) { |
| // Default to the root page if the redirecturl isn't specified in the request. |
| redirectUrl = "/"; |
| } |
| response.setHeader("login", userService.createLoginURL(redirectUrl)); |
| response.sendError(HttpServletResponse.SC_UNAUTHORIZED); |
| return; |
| } |
| |
| filterChain.doFilter(request, response); |
| } |
| |
| @Override |
| public void init(FilterConfig config) { |
| } |
| } |