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

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