import java.io.IOException;
import java.net.URL;
+import java.util.Enumeration;
+import java.util.Locale;
import javax.servlet.ServletRequest;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
+import javax.servlet.http.HttpSession;
import org.cacert.gigi.PermissionCheckable;
-import org.cacert.gigi.User;
+import org.cacert.gigi.dbObjects.User;
import org.cacert.gigi.localisation.Language;
import org.cacert.gigi.output.template.Template;
+import org.cacert.gigi.util.AuthorizationContext;
/**
* This class encapsulates a sub page of Gigi. A template residing nearby this
* if output goes wrong.
*/
public boolean beforeTemplate(HttpServletRequest req, HttpServletResponse resp) throws IOException {
+ if (req.getMethod().equals("POST")) {
+ return beforePost(req, resp);
+ }
+ return false;
+ }
+
+ /**
+ * This method can be overridden to execute code and do stuff before the
+ * default template is applied when the request is a post request and the
+ * default implementation of
+ * {@link #beforeTemplate(HttpServletRequest, HttpServletResponse)} is
+ * called.
+ *
+ * @param req
+ * the request to handle.
+ * @param resp
+ * the response to write to
+ * @return true, if the request is consumed and the default template should
+ * not be applied.
+ * @throws IOException
+ * if output goes wrong.
+ */
+ public boolean beforePost(HttpServletRequest req, HttpServletResponse resp) throws IOException {
return false;
}
return title;
}
- public void setTitle(String title) {
- this.title = title;
- }
-
public static Language getLanguage(ServletRequest req) {
- return Language.getInstance("de");
+ HttpSession session = ((HttpServletRequest) req).getSession();
+ synchronized (session) {
+
+ Locale sessval = (Locale) session.getAttribute(Language.SESSION_ATTRIB_NAME);
+ if (sessval != null) {
+ Language l = Language.getInstance(sessval);
+ if (l != null) {
+ return l;
+ }
+ }
+ Enumeration<Locale> langs = req.getLocales();
+ while (langs.hasMoreElements()) {
+ Locale c = langs.nextElement();
+ Language l = Language.getInstance(c);
+ if (l != null) {
+ session.setAttribute(Language.SESSION_ATTRIB_NAME, l.getLocale());
+ return l;
+ }
+ }
+ session.setAttribute(Language.SESSION_ATTRIB_NAME, Locale.ENGLISH);
+ return Language.getInstance(Locale.ENGLISH);
+ }
}
public static String translate(ServletRequest req, String string) {
}
@Override
- public boolean isPermitted(User u) {
- return !needsLogin() || u != null;
+ public boolean isPermitted(AuthorizationContext ac) {
+ return !needsLogin() || ac != null;
}
}