⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 credentialsmanager.java

📁 web版的SVN客户端
💻 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 + -