From 11c14e192b907acd3fdc2d6a9bcf4faafc593afe Mon Sep 17 00:00:00 2001 From: Rafael Cavazin <rafaelcavazin@gmail.com> Date: Sun, 27 Jan 2013 11:13:06 -0500 Subject: [PATCH] updating latest props, and some pt-br fixing --- src/com/gitblit/wicket/pages/BasePage.java | 108 +++++++++++++++++++++++++++++++++++++++++------------ 1 files changed, 83 insertions(+), 25 deletions(-) diff --git a/src/com/gitblit/wicket/pages/BasePage.java b/src/com/gitblit/wicket/pages/BasePage.java index f9f90b0..c733c99 100644 --- a/src/com/gitblit/wicket/pages/BasePage.java +++ b/src/com/gitblit/wicket/pages/BasePage.java @@ -15,10 +15,10 @@ */ package com.gitblit.wicket.pages; +import java.text.MessageFormat; import java.util.ArrayList; import java.util.Calendar; import java.util.Collections; -import java.util.Comparator; import java.util.Date; import java.util.HashSet; import java.util.LinkedHashMap; @@ -29,13 +29,13 @@ import java.util.TimeZone; import java.util.regex.Pattern; -import javax.servlet.http.Cookie; import javax.servlet.http.HttpServletRequest; import org.apache.wicket.Application; import org.apache.wicket.MarkupContainer; import org.apache.wicket.PageParameters; import org.apache.wicket.RedirectToUrlException; +import org.apache.wicket.RequestCycle; import org.apache.wicket.RestartResponseException; import org.apache.wicket.markup.html.CSSPackageResource; import org.apache.wicket.markup.html.WebPage; @@ -52,7 +52,9 @@ import org.slf4j.LoggerFactory; import com.gitblit.Constants; +import com.gitblit.Constants.AccessPermission; import com.gitblit.Constants.AccessRestrictionType; +import com.gitblit.Constants.AuthorizationControl; import com.gitblit.Constants.FederationStrategy; import com.gitblit.GitBlit; import com.gitblit.Keys; @@ -63,7 +65,6 @@ import com.gitblit.utils.StringUtils; import com.gitblit.utils.TimeUtils; import com.gitblit.wicket.GitBlitWebSession; -import com.gitblit.wicket.PageRegistration.DropDownMenuItem; import com.gitblit.wicket.WicketUtils; import com.gitblit.wicket.panels.LinkPanel; @@ -77,14 +78,14 @@ super(); logger = LoggerFactory.getLogger(getClass()); customizeHeader(); - loginByCookie(); + login(); } public BasePage(PageParameters params) { super(params); logger = LoggerFactory.getLogger(getClass()); customizeHeader(); - loginByCookie(); + login(); } private void customizeHeader() { @@ -95,6 +96,10 @@ protected String getLanguageCode() { return GitBlitWebSession.get().getLocale().getLanguage(); + } + + protected String getCountryCode() { + return GitBlitWebSession.get().getLocale().getCountry().toLowerCase(); } protected TimeUtils getTimeUtils() { @@ -128,22 +133,22 @@ super.onAfterRender(); } - private void loginByCookie() { - if (!GitBlit.getBoolean(Keys.web.allowCookieAuthentication, false)) { + private void login() { + GitBlitWebSession session = GitBlitWebSession.get(); + if (session.isLoggedIn() && !session.isSessionInvalidated()) { + // already have a session, refresh usermodel to pick up + // any changes to permissions or roles (issue-186) + UserModel user = GitBlit.self().getUserModel(session.getUser().username); + session.setUser(user); return; } - UserModel user = null; - - // Grab cookie from Browser Session - Cookie[] cookies = ((WebRequest) getRequestCycle().getRequest()).getCookies(); - if (cookies != null && cookies.length > 0) { - user = GitBlit.self().authenticate(cookies); - } + + // try to authenticate by servlet request + HttpServletRequest httpRequest = ((WebRequest) getRequestCycle().getRequest()).getHttpServletRequest(); + UserModel user = GitBlit.self().authenticate(httpRequest); // Login the user if (user != null) { - // Set the user into the session - GitBlitWebSession session = GitBlitWebSession.get(); // issue 62: fix session fixation vulnerability session.replaceSession(); session.setUser(user); @@ -206,6 +211,39 @@ return map; } + protected Map<AccessPermission, String> getAccessPermissions() { + Map<AccessPermission, String> map = new LinkedHashMap<AccessPermission, String>(); + for (AccessPermission type : AccessPermission.values()) { + switch (type) { + case NONE: + map.put(type, MessageFormat.format(getString("gb.noPermission"), type.code)); + break; + case EXCLUDE: + map.put(type, MessageFormat.format(getString("gb.excludePermission"), type.code)); + break; + case VIEW: + map.put(type, MessageFormat.format(getString("gb.viewPermission"), type.code)); + break; + case CLONE: + map.put(type, MessageFormat.format(getString("gb.clonePermission"), type.code)); + break; + case PUSH: + map.put(type, MessageFormat.format(getString("gb.pushPermission"), type.code)); + break; + case CREATE: + map.put(type, MessageFormat.format(getString("gb.createPermission"), type.code)); + break; + case DELETE: + map.put(type, MessageFormat.format(getString("gb.deletePermission"), type.code)); + break; + case REWIND: + map.put(type, MessageFormat.format(getString("gb.rewindPermission"), type.code)); + break; + } + } + return map; + } + protected Map<FederationStrategy, String> getFederationTypes() { Map<FederationStrategy, String> map = new LinkedHashMap<FederationStrategy, String>(); for (FederationStrategy type : FederationStrategy.values()) { @@ -223,6 +261,21 @@ } return map; } + + protected Map<AuthorizationControl, String> getAuthorizationControls() { + Map<AuthorizationControl, String> map = new LinkedHashMap<AuthorizationControl, String>(); + for (AuthorizationControl type : AuthorizationControl.values()) { + switch (type) { + case AUTHENTICATED: + map.put(type, getString("gb.allowAuthenticatedDescription")); + break; + case NAMED: + map.put(type, getString("gb.allowNamedDescription")); + break; + } + } + return map; + } protected TimeZone getTimeZone() { return GitBlit.getBoolean(Keys.web.useClientTimezone, false) ? GitBlitWebSession.get() @@ -235,9 +288,9 @@ return req.getServerName(); } - protected String getRepositoryUrl(RepositoryModel repository) { + public static String getRepositoryUrl(RepositoryModel repository) { StringBuilder sb = new StringBuilder(); - sb.append(WicketUtils.getGitblitURL(getRequestCycle().getRequest())); + sb.append(WicketUtils.getGitblitURL(RequestCycle.get().getRequest())); sb.append(Constants.GIT_PATH); sb.append(repository.name); @@ -252,7 +305,7 @@ protected List<ProjectModel> getProjectModels() { final UserModel user = GitBlitWebSession.get().getUser(); - List<ProjectModel> projects = GitBlit.self().getProjectModels(user); + List<ProjectModel> projects = GitBlit.self().getProjectModels(user, true); return projects; } @@ -298,7 +351,7 @@ for (ProjectModel projectModel : availableModels) { for (String repositoryName : projectModel.repositories) { for (TeamModel teamModel : teamModels) { - if (teamModel.hasRepository(repositoryName)) { + if (teamModel.hasRepositoryPermission(repositoryName)) { models.add(projectModel); } } @@ -380,14 +433,19 @@ public UserFragment(String id, String markupId, MarkupContainer markupProvider) { super(id, markupId, markupProvider); - if (GitBlitWebSession.get().isLoggedIn()) { + GitBlitWebSession session = GitBlitWebSession.get(); + if (session.isLoggedIn()) { + UserModel user = session.getUser(); + boolean editCredentials = GitBlit.self().supportsCredentialChanges(user); + boolean standardLogin = session.authenticationType.isStandard(); + // username, logout, and change password - add(new Label("username", GitBlitWebSession.get().getUser().getDisplayName() + ":")); + add(new Label("username", user.getDisplayName() + ":")); add(new LinkPanel("loginLink", null, markupProvider.getString("gb.logout"), - LogoutPage.class)); - boolean editCredentials = GitBlit.self().supportsCredentialChanges(); + LogoutPage.class).setVisible(standardLogin)); + // quick and dirty hack for showing a separator - add(new Label("separator", "|").setVisible(editCredentials)); + add(new Label("separator", "|").setVisible(standardLogin && editCredentials)); add(new BookmarkablePageLink<Void>("changePasswordLink", ChangePasswordPage.class).setVisible(editCredentials)); } else { -- Gitblit v1.9.1