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 2.1KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364
  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.GitBlit;
  7. import com.gitblit.Keys;
  8. import com.gitblit.wicket.pages.RepositoriesPage;
  9. public class AuthorizationStrategy extends AbstractPageAuthorizationStrategy implements IUnauthorizedComponentInstantiationListener {
  10. public AuthorizationStrategy() {
  11. }
  12. @SuppressWarnings({ "unchecked", "rawtypes" })
  13. @Override
  14. protected boolean isPageAuthorized(Class pageClass) {
  15. if (BasePage.class.isAssignableFrom(pageClass)) {
  16. boolean authenticateView = GitBlit.self().settings().getBoolean(Keys.web.authenticateViewPages, true);
  17. boolean authenticateAdmin = GitBlit.self().settings().getBoolean(Keys.web.authenticateAdminPages, true);
  18. boolean allowAdmin = GitBlit.self().settings().getBoolean(Keys.web.allowAdministration, true);
  19. GitBlitWebSession session = GitBlitWebSession.get();
  20. if (authenticateView && !session.isLoggedIn()) {
  21. // authentication required
  22. return false;
  23. }
  24. User user = session.getUser();
  25. if (pageClass.isAnnotationPresent(AdminPage.class)) {
  26. // admin page
  27. if (allowAdmin) {
  28. if (authenticateAdmin) {
  29. // authenticate admin
  30. if (user != null) {
  31. return user.canAdmin();
  32. }
  33. return false;
  34. } else {
  35. // no admin authentication required
  36. return true;
  37. }
  38. } else {
  39. //admin prohibited
  40. return false;
  41. }
  42. }
  43. }
  44. return true;
  45. }
  46. @Override
  47. public void onUnauthorizedInstantiation(Component component) {
  48. if (component instanceof BasePage) {
  49. GitBlitWebSession session = GitBlitWebSession.get();
  50. if (!session.isLoggedIn())
  51. throw new RestartResponseAtInterceptPageException(LoginPage.class);
  52. else
  53. throw new RestartResponseAtInterceptPageException(RepositoriesPage.class);
  54. }
  55. }
  56. }