📄 credentialsmanager.java
字号:
/*
* Copyright (c) 2004, 2005 Polarion Software, All rights reserved.
* Email: community@polarion.org
*
* This program and the accompanying materials are made available under the
* terms of the Apache License, Version 2.0 (the "License"). You may not use
* this file except in compliance with the License. Copy of the License is
* located in the file LICENSE.txt in the project distribution. You may also
* obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0
*
*
* POLARION SOFTWARE MAKES NO REPRESENTATIONS OR WARRANTIES
* ABOUT THE SUITABILITY OF THE SOFTWARE, EITHER EXPRESSED OR IMPLIED,
* INCLUDING BUT NOT LIMITED TO THE IMPLIED WARRANTIES OF MERCHANTABILITY,
* FITNESS FOR A PARTICULAR PURPOSE, OR NON-INFRINGEMENT. POLARION SOFTWARE
* SHALL NOT BE LIABLE FOR ANY DAMAGES SUFFERED BY LICENSEE AS A RESULT
* OF USING, MODIFYING OR DISTRIBUTING THIS SOFTWARE OR ITS DERIVATIVES.
*
*/
package org.polarion.svnwebclient.authorization.impl;
import java.io.IOException;
import java.io.UnsupportedEncodingException;
import java.net.URLEncoder;
import javax.security.auth.Subject;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
import org.apache.log4j.Logger;
import org.polarion.svnwebclient.SVNWebClientException;
import org.polarion.svnwebclient.authorization.ICredentialsManager;
import org.polarion.svnwebclient.authorization.UserCredentials;
import com.polarion.portal.tomcat.SubjectExchange;
import com.polarion.vcs.svn.auth.SVNAuthManagerHelper;
import com.polarion.vcs.svn.auth.SvnCredentials;
/**
*
*
* @author <A HREF="mailto:svnbrowser@polarion.org">Polarion Software </A>
*/
public class CredentialsManager implements ICredentialsManager {
public static final String CREDENTIALS = "user_credentials";
public static final String SESSION_KEY = "sessionId";
private static Logger log = Logger.getLogger(CredentialsManager.class);
public UserCredentials getUserCredentials(HttpServletRequest request,
HttpServletResponse response) throws SVNWebClientException {
HttpSession session = request.getSession();
UserCredentials credentials = (UserCredentials) session.getAttribute(CREDENTIALS);
if(credentials == null) {
Subject sessionSubject = getSubject(request);
SvnCredentials creds = SVNAuthManagerHelper.getSubjectCredentials(sessionSubject);
if (creds == null) {
try {
response.sendRedirect(getLoginUrl(request));
response.flushBuffer();
} catch (IOException e) {
log.error(e);
}
return null;
}
credentials = new UserCredentials(creds.getName(), creds.getPasswd());
session.setAttribute(CREDENTIALS, credentials);
}
return credentials;
}
/**
* Returns the credentials from the request, if exist. Null otherwise.
* @param request
* @return
*/
public UserCredentials getCredentialsFromRequest(HttpServletRequest request) {
HttpSession session = request.getSession();
UserCredentials credentials = (UserCredentials) session.getAttribute(CREDENTIALS);
return credentials;
}
/**
* @param request
* @return
*/
protected static Subject getSubject(HttpServletRequest request) {
String sessionId = request.getParameter(SESSION_KEY);
Subject sessionSubject = SubjectExchange.getSessionSubject(sessionId);
return sessionSubject;
}
private String getLoginUrl(HttpServletRequest request) {
// Forward to the Polarion Embed page - this will result either in
// session fix or in further forward to Login page
try {
String originalURI = request.getRequestURL().toString();
String queryString = request.getQueryString();
if (queryString != null) {
originalURI += "?" + queryString;
}
// Encode the origunal URL
return "/polarion/portal/perspective/repository/page/svn_browser.psml?fullURL="+URLEncoder.encode(originalURI, "UTF-8")+"&layout=clear";
} catch (UnsupportedEncodingException e) {
// The go just to the repository root
return "/polarion/portal/perspective/repository/page/svn_browser.psml/project/null?layout=clear";
}
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -