Project

General

Profile

1
package eu.dnetlib.openaire.usermanagement;
2

    
3
import com.google.gson.Gson;
4
import eu.dnetlib.openaire.user.pojos.RegisteredService;
5
import eu.dnetlib.openaire.usermanagement.utils.RegisteredServicesUtils;
6
import eu.dnetlib.openaire.usermanagement.utils.TokenUtils;
7
import org.apache.log4j.Logger;
8
import org.mitre.openid.connect.model.OIDCAuthenticationToken;
9
import org.springframework.beans.factory.annotation.Autowired;
10
import org.springframework.security.core.context.SecurityContextHolder;
11
import org.springframework.web.context.support.SpringBeanAutowiringSupport;
12

    
13
import javax.servlet.ServletConfig;
14
import javax.servlet.ServletException;
15
import javax.servlet.http.HttpServlet;
16
import javax.servlet.http.HttpServletRequest;
17
import javax.servlet.http.HttpServletResponse;
18
import java.io.IOException;
19
import java.sql.SQLException;
20

    
21

    
22
public class RegisterServiceServlet extends HttpServlet {
23

    
24
    private Logger logger = Logger.getLogger(RegisterServiceServlet.class);
25

    
26
    public void init(ServletConfig config) throws ServletException {
27
        super.init(config);
28
        SpringBeanAutowiringSupport.processInjectionBasedOnServletContext(this,
29
                config.getServletContext());
30
    }
31

    
32
    @Autowired
33
    private RegisteredServicesUtils registeredServicesUtils;
34

    
35
    public void doGet(HttpServletRequest request, HttpServletResponse response)
36
            throws ServletException, IOException {
37
        response.setContentType("text/html");
38
        request.getRequestDispatcher("./registerService.jsp").include(request, response);
39
    }
40

    
41
    public void doPost(HttpServletRequest request, HttpServletResponse response)
42
            throws ServletException, IOException {
43
        response.setContentType("text/html");
44

    
45
        String name = request.getParameter("first_name").trim();
46
        String description = request.getParameter("description").trim();
47

    
48
        OIDCAuthenticationToken authentication = (OIDCAuthenticationToken) SecurityContextHolder.getContext().getAuthentication();
49
        String userid = authentication.getSub();
50
        String email = authentication.getUserInfo().getEmail();
51
        String accessToken = authentication.getAccessTokenValue();
52

    
53
        ServiceResponse serviceResponse = null;
54

    
55
        if ( name!= null && !name.isEmpty() && userid != null && !userid.isEmpty() &&
56
                    email != null && !email.isEmpty()) {
57
            String serverMessage = TokenUtils.registerService(userid, name, description, email, accessToken);
58
            System.out.println("Server message" + serverMessage);
59
            if (serverMessage == null) {
60
                request.getSession().setAttribute("message", "There was an error registering your service. Please try again later.");
61
                response.sendRedirect("./registeredServices");
62
            }
63

    
64
            serviceResponse = new Gson().fromJson(serverMessage, ServiceResponse.class);
65
            System.out.println("SERVICE RESPONSE " + serviceResponse);
66

    
67
        }
68

    
69
        String aai_id = serviceResponse.getId();
70
        String owner = userid;
71

    
72
        RegisteredService registeredService = new RegisteredService(aai_id, owner, name);
73

    
74
        try {
75
            registeredServicesUtils.addRegistedService(registeredService);
76

    
77
        } catch (SQLException sqle) {
78
            System.out.println("SQLE SKATA " +  sqle.getMessage());
79
            logger.error("SQLE SKATA", sqle);
80
            request.getSession().setAttribute("message", "There was an error registering your service. Please try again later.");
81
            response.sendRedirect("./registeredServices");
82
        }
83

    
84
        request.getSession().setAttribute("accessToken", authentication.getAccessTokenValue());
85
        request.getSession().setAttribute("refreshToken", authentication.getRefreshTokenValue());
86

    
87
        response.sendRedirect("./registeredServices");
88
    }
89
}
(7-7/17)