Package it.unipd.netmus.server.servlet

Source Code of it.unipd.netmus.server.servlet.LoginGoogleCallbackServlet

package it.unipd.netmus.server.servlet;

import it.unipd.netmus.server.LoginHelper;
import it.unipd.netmus.server.persistent.UserAccount;
import it.unipd.netmus.shared.exception.NetmusException;

import java.io.IOException;
import java.security.Principal;

import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;

/**
* Nome: LoginGoogleCallbackServlet.java
* Autore: VT.G
* Licenza: GNU GPL v3
* Data Creazione: 17 Febbraio 2011
*/

@SuppressWarnings("serial")
public class LoginGoogleCallbackServlet extends HttpServlet {

    /**
     * Crea ed invia una richiesta al servizio di login Google per fargli
     * mostrare la pagina di login predefinita per i Google Account.
     */
    @Override
    public void doGet(HttpServletRequest request, HttpServletResponse response)
            throws IOException {

        Principal googleUser = request.getUserPrincipal();
        if (googleUser != null) {

            try {
                // REGISTRO IL GOOGLE USER (COME GOOGLE USER) E LO LOGGO
                // controllo se esiste gia` in DB
                UserAccount userAccount = UserAccount
                        .load(googleUser.getName());
                if (userAccount == null) {
                    // creo l'utente google nel db
                    userAccount = new UserAccount(googleUser.getName(), "");
                    userAccount.setGoogleUser(true);

                } else {
                    if (!userAccount.isGoogleUser()) {
                        // non e' lui non e' possibile registrarlo con Google
                        // con quel nome
                        throw new NetmusException(
                                "UTENTE NETMUS con STESSO USERNAME/MAIL");
                    }
                }
                // loggo , sessione (non uso i cookies per un utente non Netmus)

                HttpSession session = request.getSession();
                String session_id = session.getId();
                // set session parameter - userID
                LoginHelper.setSession(session, googleUser.getName());
                // set in DB userAccount the new SessionID
                userAccount.setLastSessionId(session_id);
            } catch (NetmusException ne) {
                System.out.println(ne.getMoreInfo());
            }
        }
        // TORNO AL ENTRY POINT E SE E' STATO LOGGATO PASSA IN AUTOMATICO AL
        // PROFILE
        response.sendRedirect(LoginHelper.getApplicationURL(request));
    }
}
TOP

Related Classes of it.unipd.netmus.server.servlet.LoginGoogleCallbackServlet

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.