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.Language;
-import org.cacert.gigi.User;
+import org.cacert.gigi.PermissionCheckable;
+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
* class with name <className>.templ will be loaded automatically.
*/
-public abstract class Page {
+public abstract class Page implements PermissionCheckable {
private String title;
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) {
return LoginPage.getUser(req);
}
+ @Override
+ public boolean isPermitted(AuthorizationContext ac) {
+ return !needsLogin() || ac != null;
+ }
+
}