Project

General

Profile

1
package eu.dnetlib.openaire.usermanagement;
2

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

    
15
import javax.servlet.ServletConfig;
16
import javax.servlet.ServletException;
17
import javax.servlet.http.HttpServlet;
18
import javax.servlet.http.HttpServletRequest;
19
import javax.servlet.http.HttpServletResponse;
20
import java.io.IOException;
21
import java.net.URL;
22
import java.sql.SQLException;
23

    
24

    
25
public class RegisterServiceServlet extends HttpServlet {
26

    
27
    private Logger logger = Logger.getLogger(RegisterServiceServlet.class);
28

    
29
    public void init(ServletConfig config) throws ServletException {
30
        super.init(config);
31
        SpringBeanAutowiringSupport.processInjectionBasedOnServletContext(this,
32
                config.getServletContext());
33
    }
34

    
35
    @Autowired
36
    private RegisteredServicesUtils registeredServicesUtils;
37

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

    
44
    public void doPost(HttpServletRequest request, HttpServletResponse response)
45
            throws ServletException, IOException {
46

    
47
        //TODO check user's limit
48

    
49
        response.setContentType("text/html");
50

    
51
        String name = request.getParameter("first_name").trim();
52
        String description = request.getParameter("description").trim();
53

    
54
        String keyType = request.getParameter("key_radio").trim();
55
        System.out.println("key type " + keyType);
56

    
57
/*
58
        if (keyType.equals("uri")) {
59
            String jwksUri = request.getParameter("uri");
60
            System.out.println("JWKS URI " + jwksUri);
61
            UrlValidator urlValidator = new UrlValidator();
62
            if (!urlValidator.isValid(jwksUri)){
63
                request.getSession().setAttribute("msg_key_uri_error_display", "display:block");
64
            }
65
        } else {
66
            String jwksString = request.getParameter("value");
67
            System.out.println("JWKS String " + jwksString);
68
            Gson gson = new GsonBuilder().registerTypeAdapter(Jwks.class, new ServiceResponseDeserializer()).create();
69
            Jwks jwks = gson.fromJson(jwksString, Jwks.class);
70
            System.out.println(jwks.keys);
71
            System.out.println(jwks.keys.length);
72
        }
73
*/
74

    
75
        OIDCAuthenticationToken authentication = (OIDCAuthenticationToken) SecurityContextHolder.getContext().getAuthentication();
76
        String userid = authentication.getSub();
77
        String email = authentication.getUserInfo().getEmail();
78
        String accessToken = authentication.getAccessTokenValue();
79

    
80
        ServiceResponse serviceResponse = null;
81

    
82
        if ( name!= null && !name.isEmpty() && userid != null && !userid.isEmpty() &&
83
                    email != null && !email.isEmpty()) {
84
            String serverMessage = TokenUtils.registerService(userid, name, description, email, accessToken);
85
            System.out.println("Server message" + serverMessage);
86
            if (serverMessage == null) {
87
                request.getSession().setAttribute("message", "There was an error registering your service. Please try again later.");
88
                response.sendRedirect("./registeredServices");
89
            }
90

    
91
            serviceResponse = new Gson().fromJson(serverMessage, ServiceResponse.class);
92
            System.out.println("SERVICE RESPONSE " + serviceResponse);
93

    
94
        }
95

    
96
        String aai_id = serviceResponse.getId();
97
        String owner = userid;
98

    
99
        RegisteredService registeredService = new RegisteredService(aai_id, owner, name);
100

    
101
        try {
102
            registeredServicesUtils.addRegistedService(registeredService);
103

    
104
        } catch (SQLException sqle) {
105
            System.out.println("SQLE SKATA " +  sqle.getMessage());
106
            logger.error("SQLE SKATA", sqle);
107
            request.getSession().setAttribute("message", "There was an error registering your service. Please try again later.");
108
            response.sendRedirect("./registeredServices");
109
        }
110

    
111
        request.getSession().setAttribute("accessToken", authentication.getAccessTokenValue());
112
        request.getSession().setAttribute("refreshToken", authentication.getRefreshTokenValue());
113

    
114
        response.sendRedirect("./registeredServices");
115
    }
116
}
(7-7/17)