You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

AuthorizationStrategy.java 1.5KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445
  1. package com.gitblit.wicket;
  2. import org.apache.wicket.Component;
  3. import org.apache.wicket.RestartResponseAtInterceptPageException;
  4. import org.apache.wicket.authorization.IUnauthorizedComponentInstantiationListener;
  5. import org.apache.wicket.authorization.strategies.page.AbstractPageAuthorizationStrategy;
  6. import com.gitblit.wicket.pages.RepositoriesPage;
  7. public class AuthorizationStrategy extends AbstractPageAuthorizationStrategy implements IUnauthorizedComponentInstantiationListener {
  8. public AuthorizationStrategy() {
  9. }
  10. @SuppressWarnings({ "unchecked", "rawtypes" })
  11. @Override
  12. protected boolean isPageAuthorized(Class pageClass) {
  13. if (BasePage.class.isAssignableFrom(pageClass))
  14. return isAuthorized(pageClass);
  15. // Return contruction by default
  16. return true;
  17. }
  18. @Override
  19. public void onUnauthorizedInstantiation(Component component) {
  20. if (component instanceof BasePage) {
  21. GitBlitWebSession session = GitBlitWebSession.get();
  22. if (!session.isLoggedIn())
  23. throw new RestartResponseAtInterceptPageException(LoginPage.class);
  24. else
  25. throw new RestartResponseAtInterceptPageException(RepositoriesPage.class);
  26. }
  27. }
  28. protected boolean isAuthorized(Class<? extends BasePage> pageClass) {
  29. GitBlitWebSession session = GitBlitWebSession.get();
  30. if (!session.isLoggedIn())
  31. return false;
  32. User user = session.getUser();
  33. if (pageClass.isAnnotationPresent(AdminPage.class)) {
  34. }
  35. return true;
  36. }
  37. }