service token pages added
This commit is contained in:
parent
50de8755e6
commit
91c90cc1bb
|
@ -0,0 +1,49 @@
|
|||
package eu.dnetlib.openaire.usermanagement;
|
||||
|
||||
import eu.dnetlib.openaire.usermanagement.utils.TokenUtils;
|
||||
import org.apache.http.HttpResponse;
|
||||
import org.mitre.openid.connect.model.OIDCAuthenticationToken;
|
||||
import org.springframework.security.core.context.SecurityContextHolder;
|
||||
|
||||
import javax.servlet.ServletException;
|
||||
import javax.servlet.http.HttpServlet;
|
||||
import javax.servlet.http.HttpServletRequest;
|
||||
import javax.servlet.http.HttpServletResponse;
|
||||
import java.io.IOException;
|
||||
|
||||
public class EditRegisteredService extends HttpServlet {
|
||||
|
||||
@Override
|
||||
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
|
||||
String serviceId = request.getParameter("id");
|
||||
OIDCAuthenticationToken authentication = (OIDCAuthenticationToken) SecurityContextHolder.getContext().getAuthentication();
|
||||
String accessToken = authentication.getAccessTokenValue();
|
||||
ServiceResponse serviceResponse = TokenUtils.getRegisteredService(serviceId, accessToken);
|
||||
request.getSession().setAttribute("serviceId", serviceResponse.getId());
|
||||
request.getSession().setAttribute("first_name", serviceResponse.getClientName());
|
||||
request.getSession().setAttribute("description", serviceResponse.getClientDescription());
|
||||
|
||||
response.setContentType("text/html");
|
||||
request.getRequestDispatcher("./editRegisteredService.jsp").include(request, response);
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
|
||||
|
||||
OIDCAuthenticationToken authentication = (OIDCAuthenticationToken) SecurityContextHolder.getContext().getAuthentication();
|
||||
String accessToken = authentication.getAccessTokenValue();
|
||||
|
||||
String serviceId = request.getParameter("serviceId");
|
||||
String name = request.getParameter("first_name");
|
||||
String description = request.getParameter("description");
|
||||
|
||||
HttpResponse resp = TokenUtils.updateService(serviceId, authentication.getSub(), name, description, authentication.getUserInfo().getEmail(), accessToken);
|
||||
|
||||
if (resp.getStatusLine().getStatusCode()==200) {
|
||||
request.getSession().setAttribute("message", "Your service with name '" + name + "' was successfully updated");
|
||||
}
|
||||
|
||||
response.sendRedirect("/registeredServices");
|
||||
|
||||
}
|
||||
}
|
|
@ -2,6 +2,7 @@ package eu.dnetlib.openaire.usermanagement;
|
|||
|
||||
import com.google.gson.Gson;
|
||||
import com.google.gson.GsonBuilder;
|
||||
import eu.dnetlib.openaire.usermanagement.utils.TokenUtils;
|
||||
import org.apache.commons.io.IOUtils;
|
||||
import org.apache.http.HttpHeaders;
|
||||
import org.apache.http.HttpResponse;
|
||||
|
@ -38,39 +39,19 @@ public class RegisterServiceServlet extends HttpServlet {
|
|||
String name = request.getParameter("first_name").trim();
|
||||
String description = request.getParameter("description").trim();
|
||||
|
||||
if ( name!= null && !name.isEmpty()){
|
||||
ServiceRequest serviceJSON = new ServiceRequest();
|
||||
serviceJSON.setClientName(name);
|
||||
serviceJSON.setClientDescription(description);
|
||||
|
||||
GsonBuilder builder = new GsonBuilder();
|
||||
builder.serializeNulls();
|
||||
Gson gson = builder.create();
|
||||
String json = gson.toJson(serviceJSON);
|
||||
|
||||
System.out.println(json);
|
||||
|
||||
OIDCAuthenticationToken authentication = (OIDCAuthenticationToken) SecurityContextHolder.getContext().getAuthentication();
|
||||
|
||||
CloseableHttpClient httpclient = HttpClients.createDefault();
|
||||
//TODO fix this
|
||||
HttpPost httppost = new HttpPost("https://openaire-dev.aai-dev.grnet.gr/oidc/api/clients");
|
||||
|
||||
httppost.setHeader(HttpHeaders.CONTENT_TYPE, "application/json");
|
||||
httppost.setHeader(HttpHeaders.AUTHORIZATION, "Bearer " + authentication.getAccessTokenValue());
|
||||
StringEntity params = new StringEntity(json.toString());
|
||||
httppost.setEntity(params);
|
||||
HttpResponse httpResponse = null;
|
||||
httpResponse = httpclient.execute(httppost);
|
||||
|
||||
String serverMessage = IOUtils.toString(httpResponse.getEntity().getContent(), StandardCharsets.UTF_8.name());
|
||||
OIDCAuthenticationToken authentication = (OIDCAuthenticationToken) SecurityContextHolder.getContext().getAuthentication();
|
||||
String userid = authentication.getSub();
|
||||
String email = authentication.getUserInfo().getEmail();
|
||||
String accessToken = authentication.getAccessTokenValue();
|
||||
|
||||
if ( name!= null && !name.isEmpty() && userid != null && !userid.isEmpty() &&
|
||||
email != null && email.isEmpty()) {
|
||||
String serverMessage = TokenUtils.registerService(userid, name, description, email, accessToken);
|
||||
ServiceResponse serviceResponse = new Gson().fromJson(serverMessage, ServiceResponse.class);
|
||||
|
||||
System.out.println("The created id is " + serviceResponse.getId());
|
||||
}
|
||||
|
||||
OIDCAuthenticationToken authentication = (OIDCAuthenticationToken) SecurityContextHolder.getContext().getAuthentication();
|
||||
|
||||
request.getSession().setAttribute("accessToken", authentication.getAccessTokenValue());
|
||||
request.getSession().setAttribute("refreshToken", authentication.getRefreshTokenValue());
|
||||
|
||||
|
|
|
@ -0,0 +1,16 @@
|
|||
package eu.dnetlib.openaire.usermanagement;
|
||||
|
||||
import javax.servlet.ServletException;
|
||||
import javax.servlet.http.HttpServlet;
|
||||
import javax.servlet.http.HttpServletRequest;
|
||||
import javax.servlet.http.HttpServletResponse;
|
||||
import java.io.IOException;
|
||||
|
||||
public class RegisteredServicesServlet extends HttpServlet {
|
||||
|
||||
public void doGet(HttpServletRequest request, HttpServletResponse response)
|
||||
throws ServletException, IOException {
|
||||
response.setContentType("text/html");
|
||||
request.getRequestDispatcher("./registeredServices.jsp").include(request, response);
|
||||
}
|
||||
}
|
|
@ -38,7 +38,7 @@ public class ServiceResponse {
|
|||
int accessTokenValiditySeconds;
|
||||
int refreshTokenValiditySeconds;
|
||||
String[] resourceIds;
|
||||
String[] clientDescription;
|
||||
String clientDescription;
|
||||
boolean reuseRefreshToken;
|
||||
boolean dynamicallyRegistered;
|
||||
boolean allowIntrospection;
|
||||
|
@ -198,7 +198,7 @@ public class ServiceResponse {
|
|||
return resourceIds;
|
||||
}
|
||||
|
||||
public String[] getClientDescription() {
|
||||
public String getClientDescription() {
|
||||
return clientDescription;
|
||||
}
|
||||
|
||||
|
|
|
@ -0,0 +1,104 @@
|
|||
package eu.dnetlib.openaire.usermanagement.utils;
|
||||
|
||||
import com.google.gson.Gson;
|
||||
import com.google.gson.GsonBuilder;
|
||||
import com.google.gson.reflect.TypeToken;
|
||||
import eu.dnetlib.openaire.usermanagement.ServiceRequest;
|
||||
import eu.dnetlib.openaire.usermanagement.ServiceResponse;
|
||||
import org.apache.commons.io.IOUtils;
|
||||
import org.apache.http.HttpHeaders;
|
||||
import org.apache.http.HttpResponse;
|
||||
import org.apache.http.client.methods.HttpDelete;
|
||||
import org.apache.http.client.methods.HttpGet;
|
||||
import org.apache.http.client.methods.HttpPost;
|
||||
import org.apache.http.client.methods.HttpPut;
|
||||
import org.apache.http.entity.StringEntity;
|
||||
import org.apache.http.impl.client.CloseableHttpClient;
|
||||
import org.apache.http.impl.client.HttpClients;
|
||||
import org.springframework.http.HttpStatus;
|
||||
|
||||
import javax.xml.ws.Service;
|
||||
import java.io.IOException;
|
||||
import java.io.UnsupportedEncodingException;
|
||||
import java.lang.reflect.Type;
|
||||
import java.nio.charset.StandardCharsets;
|
||||
import java.util.List;
|
||||
|
||||
public class TokenUtils {
|
||||
|
||||
public static String registerService(String userId, String name, String description, String email, String accessToken)
|
||||
throws IOException {
|
||||
|
||||
String json = createServiceJson(name, description);
|
||||
|
||||
//TODO fix this
|
||||
HttpPost httppost = new HttpPost("https://openaire-dev.aai-dev.grnet.gr/oidc/api/clients");
|
||||
httppost.setHeader(HttpHeaders.CONTENT_TYPE, "application/json");
|
||||
httppost.setHeader(HttpHeaders.AUTHORIZATION, "Bearer " + accessToken);
|
||||
StringEntity params = new StringEntity(json.toString());
|
||||
httppost.setEntity(params);
|
||||
|
||||
CloseableHttpClient httpclient = HttpClients.createDefault();
|
||||
HttpResponse httpResponse = httpclient.execute(httppost);
|
||||
|
||||
return IOUtils.toString(httpResponse.getEntity().getContent(), StandardCharsets.UTF_8.name());
|
||||
}
|
||||
|
||||
public static HttpResponse updateService(String serviceId, String userId, String name, String description, String email, String accessToken) throws IOException {
|
||||
System.out.println("Updated name " + name);
|
||||
System.out.println("Updated description " + description);
|
||||
String json = createServiceJson(name, description);
|
||||
|
||||
HttpPut httpPut = new HttpPut("https://openaire-dev.aai-dev.grnet.gr/oidc/api/clients/"+serviceId);
|
||||
httpPut.setHeader(HttpHeaders.CONTENT_TYPE, "application/json");
|
||||
httpPut.setHeader(HttpHeaders.AUTHORIZATION, "Bearer " + accessToken);
|
||||
StringEntity params = new StringEntity(json.toString());
|
||||
httpPut.setEntity(params);
|
||||
|
||||
CloseableHttpClient httpclient = HttpClients.createDefault();
|
||||
return httpclient.execute(httpPut);
|
||||
}
|
||||
|
||||
public static ServiceResponse getRegisteredService(String serviceId, String accessToken) throws IOException {
|
||||
HttpGet httpGet = new HttpGet("https://openaire-dev.aai-dev.grnet.gr/oidc/api/clients/22");
|
||||
httpGet.setHeader(HttpHeaders.AUTHORIZATION, "Bearer " + accessToken);
|
||||
|
||||
CloseableHttpClient httpclient = HttpClients.createDefault();
|
||||
HttpResponse httpResponse = httpclient.execute(httpGet);
|
||||
String registeredService = IOUtils.toString(httpResponse.getEntity().getContent(), StandardCharsets.UTF_8.name());
|
||||
System.out.println("registered Service " + registeredService);
|
||||
//List<ServiceResponse> registeredServices;
|
||||
//Type listType = new TypeToken<List<ServiceResponse>>(){}.getType();
|
||||
//String registeredServicesJson =
|
||||
//registeredServices = new Gson().fromJson(IOUtils.toString(httpResponse.getEntity().getContent(), StandardCharsets.UTF_8.name()),
|
||||
// listType);
|
||||
//return registeredServices.get(0);
|
||||
return new Gson().fromJson(registeredService,ServiceResponse.class);
|
||||
}
|
||||
|
||||
public void viewRegisteredServices(List<String> serviceIds, String accessToken) throws IOException {
|
||||
for (String serviceId: serviceIds) {
|
||||
getRegisteredService(serviceId, accessToken);
|
||||
}
|
||||
}
|
||||
|
||||
public void deleteService(String serviceId, String accessToken) throws IOException {
|
||||
HttpDelete httpDelete = new HttpDelete("https://openaire-dev.aai-dev.grnet.gr/oidc/api/clients/"+serviceId);
|
||||
httpDelete.setHeader(HttpHeaders.CONTENT_TYPE, "application/json");
|
||||
httpDelete.setHeader(HttpHeaders.AUTHORIZATION, "Bearer " + accessToken);
|
||||
|
||||
CloseableHttpClient httpclient = HttpClients.createDefault();
|
||||
HttpResponse httpResponse = httpclient.execute(httpDelete);
|
||||
}
|
||||
|
||||
private static String createServiceJson(String name, String description) {
|
||||
ServiceRequest serviceJSON = new ServiceRequest();
|
||||
serviceJSON.setClientName(name);
|
||||
serviceJSON.setClientDescription(description);
|
||||
|
||||
GsonBuilder builder = new GsonBuilder();
|
||||
builder.serializeNulls();
|
||||
Gson gson = builder.create();
|
||||
return gson.toJson(serviceJSON);
|
||||
}
|
||||
}
|
|
@ -166,6 +166,30 @@
|
|||
<url-pattern>/registerService</url-pattern>
|
||||
</servlet-mapping>
|
||||
|
||||
<servlet>
|
||||
<servlet-name>RegisteredServicesServlet</servlet-name>
|
||||
<display-name>Activate</display-name>
|
||||
<servlet-class>eu.dnetlib.openaire.usermanagement.RegisteredServicesServlet</servlet-class>
|
||||
<load-on-startup>1</load-on-startup>
|
||||
</servlet>
|
||||
|
||||
<servlet-mapping>
|
||||
<servlet-name>RegisteredServicesServlet</servlet-name>
|
||||
<url-pattern>/registeredServices</url-pattern>
|
||||
</servlet-mapping>
|
||||
|
||||
<servlet>
|
||||
<servlet-name>EditRegisteredServicesServlet</servlet-name>
|
||||
<display-name>Activate</display-name>
|
||||
<servlet-class>eu.dnetlib.openaire.usermanagement.EditRegisteredService</servlet-class>
|
||||
<load-on-startup>1</load-on-startup>
|
||||
</servlet>
|
||||
|
||||
<servlet-mapping>
|
||||
<servlet-name>EditRegisteredServicesServlet</servlet-name>
|
||||
<url-pattern>/editRegisteredService</url-pattern>
|
||||
</servlet-mapping>
|
||||
|
||||
<filter>
|
||||
<filter-name>CorsFilter</filter-name>
|
||||
<filter-class>org.apache.catalina.filters.CorsFilter</filter-class>
|
||||
|
|
|
@ -0,0 +1,141 @@
|
|||
<%--
|
||||
Created by IntelliJ IDEA.
|
||||
User: sofia
|
||||
Date: 19/10/2017
|
||||
Time: 4:30 μμ
|
||||
To change this template use File | Settings | File Templates.
|
||||
--%>
|
||||
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
|
||||
<!DOCTYPE html>
|
||||
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>
|
||||
<html lang="en-gb" dir="ltr" vocab="http://schema.org/">
|
||||
<head>
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
|
||||
<meta http-equiv="X-UA-Compatible" content="IE=edge">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1">
|
||||
<base href=".">
|
||||
<title>OpenAIRE - Register</title>
|
||||
<script src="./js/jquery.js"></script>
|
||||
<script src="./js/uikit.js"></script>
|
||||
<script src="./js/validation.js"></script>
|
||||
<script src="./js/uikit-icons-max.js"></script>
|
||||
<link rel="stylesheet" style="text/css" href="./css/theme.css">
|
||||
<link rel="stylesheet" style="text/css" href="./css/custom.css">
|
||||
<link rel="stylesheet" style="text/css" href="./css/aai-custom.css">
|
||||
<link rel="icon" type="image/png" sizes="32x32" href="images/favicon/favicon-32x32.png">
|
||||
<link rel="icon" type="image/png" sizes="96x96" href="images/favicon//favicon-96x96.png">
|
||||
<link rel="icon" type="image/png" sizes="16x16" href="images/favicon/favicon-16x16.png">
|
||||
<link href="images/favicon/favicon.ico" rel="shortcut icon" type="image/vnd.microsoft.icon" />
|
||||
</head>
|
||||
<body class="" style="">
|
||||
<div class="uk-offcanvas-content uk-height-viewport">
|
||||
<!-- MENU STARTS HERE -->
|
||||
<!-- MAIN MENU STARTS HERE -->
|
||||
<div class="tm-header tm-header-transparent" uk-header="">
|
||||
<div class="uk-container uk-container-expand">
|
||||
<nav class="uk-navbar" uk-navbar="{"align":"left"}">
|
||||
<div class="uk-navbar-center">
|
||||
<div class="uk-logo uk-navbar-item">
|
||||
<img alt="OpenAIRE" class="uk-responsive-height" src="./images/Logo_Horizontal.png">
|
||||
</div>
|
||||
</div>
|
||||
</nav>
|
||||
</div>
|
||||
</div>
|
||||
<!-- MENU ENDS HERE -->
|
||||
<!-- CONTENT STARTS HERE -->
|
||||
<div class="first_page_section uk-section-default uk-section uk-padding-remove-vertical">
|
||||
<div class="first_page_banner_headline uk-grid-collapse uk-flex-middle uk-margin-remove-vertical uk-grid" uk-grid="">
|
||||
</div>
|
||||
</div>
|
||||
<div class=" uk-section uk-margin-small-top tm-middle custom-main-content" id="tm-main">
|
||||
<div class="uk-container uk-container-small uk-margin-medium-top uk-margin-small-bottom uk-text-center">
|
||||
<h2 class="uk-h2 uk-margin-small-bottom">Add a new service</h2>
|
||||
<div class="tm-main uk-width-2-3@s uk-width-2-3@m uk-width-3-4@l uk-row-first uk-first-column uk-align-center">
|
||||
<div class="uk-grid ">
|
||||
<!-- CENTER SIDE -->
|
||||
<div class="uk-width-1-1@m uk-width-1-1@s uk-text-center">
|
||||
<h3 class="uk-h3">Please provide the basic information on your new service</h3>
|
||||
<div class="middle-box text-center loginscreen animated fadeInDown ">
|
||||
<div class="k-width-1-1@m uk-width-1-1@s uk-text-center">
|
||||
<!-- REGISTER FORM -->
|
||||
<div id="registerForm">
|
||||
<form action="editRegisteredService" method="POST" role="form" class="m-t" id="register_form">
|
||||
<input type="hidden" name="${_csrf.parameterName}" value="${_csrf.token}"/>
|
||||
<input type="hidden" name="serviceId" value="${serviceId}"/>
|
||||
<div class="alert alert-success" aria-hidden="true" style="display: none;"></div>
|
||||
<div class="alert alert-danger" aria-hidden="true" style="display: none;"></div>
|
||||
<span id="server_error" class="uk-text-danger uk-text-small uk-float-left">${message}</span>
|
||||
<c:remove var="message" scope="session" />
|
||||
<div class="form-group">
|
||||
<span class="msg_first_name_error uk-text-danger uk-text-small uk-float-left" style='${msg_first_name_error_display}'>Please enter a name for your service.</span>
|
||||
<input id="first_name" name="first_name" type="text" placeholder="Name (*)" class="form-control" value=${first_name}></div>
|
||||
<c:remove var="msg_first_name_error_display" scope="session" />
|
||||
<c:remove var="first_name" scope="session" />
|
||||
<div class="form-group">
|
||||
<textarea id="description" name="description" type="textarea" placeholder="Description:" class="form-control uk-textarea" rows="3" value=${description}></textarea>
|
||||
<c:remove var="organization" scope="session" />
|
||||
<div class="uk-width-1-1 uk-grid-margin uk-first-column">
|
||||
<button type="submit" class="uk-button uk-button-default" onclick="">Cancel</button>
|
||||
<button type="submit" class="uk-button uk-button-primary" onclick="return validate();">Update service</button>
|
||||
</div>
|
||||
</div>
|
||||
</form>
|
||||
</div>
|
||||
<!-- END OF REGISTER FORM -->
|
||||
<script>
|
||||
function validate() {
|
||||
// Check if name is filled
|
||||
if($("#first_name").val() != undefined) {
|
||||
if($.trim($("#first_name").val()).length <= 0) {
|
||||
$("#first_name").addClass('uk-input aai-form-danger');
|
||||
$(".msg_first_name_error").show();
|
||||
return false;
|
||||
} else {
|
||||
$(".msg_first_name_error").hide();
|
||||
$("#first_name").removeClass('aai-form-danger');
|
||||
}
|
||||
return true;
|
||||
}
|
||||
}
|
||||
$("#first_name").focusin(function () {
|
||||
$(this).removeClass('aai-form-danger');
|
||||
$(".msg_first_name_error").fadeOut();
|
||||
});
|
||||
</script>
|
||||
</div>
|
||||
</ul>
|
||||
</div>
|
||||
</div>
|
||||
<!-- END OF CENTER SIDE -->
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<!-- CONTENT ENDS HERE -->
|
||||
<!-- FOOTER STARTS HERE-->
|
||||
<div class="custom-footer" style="z-index: 200;">
|
||||
<div class="uk-section-primary uk-section uk-section-small">
|
||||
<div class="uk-container">
|
||||
<div class="uk-grid-margin uk-grid uk-grid-stack" uk-grid="">
|
||||
<div class="uk-width-1-1@m uk-first-column">
|
||||
<div class="uk-margin uk-margin-remove-top uk-margin-remove-bottom uk-text-center">
|
||||
<img alt="OpenAIRE" class="el-image" src="./images/Logo_Horizontal_white_small.png">
|
||||
</div>
|
||||
<div class="footer-license uk-margin uk-margin-remove-bottom uk-text-center uk-text-lead">
|
||||
<div><a href="http://creativecommons.org/licenses/by/4.0/" target="_blank" rel="license"><img alt="Creative" src="./images/80x15.png" style="height: auto; max-width: 100%; vertical-align: middle;"></a> UNLESS OTHERWISE INDICATED, ALL MATERIALS CREATED BY THE OPENAIRE CONSORTIUM ARE LICENSED UNDER A <a href="http://creativecommons.org/licenses/by/4.0/" rel="license">CREATIVE COMMONS ATTRIBUTION 4.0 INTERNATIONAL LICENSE</a>.</div>
|
||||
<div>OPENAIRE IS POWERED BY <a href="http://www.d-net.research-infrastructures.eu/">D-NET</a>.</div>
|
||||
</div>
|
||||
<div class="uk-margin uk-margin-remove-top uk-margin-remove-bottom uk-text-right">
|
||||
<a class="uk-totop uk-icon" href="#" uk-scroll="" uk-totop="">
|
||||
</a>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</body>
|
||||
</html>
|
|
@ -0,0 +1,137 @@
|
|||
<%--
|
||||
Created by IntelliJ IDEA.
|
||||
User: sofia
|
||||
Date: 19/10/2017
|
||||
Time: 4:30 μμ
|
||||
To change this template use File | Settings | File Templates.
|
||||
--%>
|
||||
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
|
||||
<!DOCTYPE html>
|
||||
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>
|
||||
<html lang="en-gb" dir="ltr" vocab="http://schema.org/">
|
||||
<head>
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
|
||||
<meta http-equiv="X-UA-Compatible" content="IE=edge">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1">
|
||||
<base href=".">
|
||||
<title>OpenAIRE - Register</title>
|
||||
<script src="./js/jquery.js"></script>
|
||||
<script src="./js/uikit.js"></script>
|
||||
<script src="./js/validation.js"></script>
|
||||
<script src="./js/uikit-icons-max.js"></script>
|
||||
<link rel="stylesheet" style="text/css" href="./css/theme.css">
|
||||
<link rel="stylesheet" style="text/css" href="./css/custom.css">
|
||||
<link rel="stylesheet" style="text/css" href="./css/aai-custom.css">
|
||||
<link rel="icon" type="image/png" sizes="32x32" href="images/favicon/favicon-32x32.png">
|
||||
<link rel="icon" type="image/png" sizes="96x96" href="images/favicon//favicon-96x96.png">
|
||||
<link rel="icon" type="image/png" sizes="16x16" href="images/favicon/favicon-16x16.png">
|
||||
<link href="images/favicon/favicon.ico" rel="shortcut icon" type="image/vnd.microsoft.icon" />
|
||||
</head>
|
||||
<body class="" style="">
|
||||
<div class="uk-offcanvas-content uk-height-viewport">
|
||||
<!-- MENU STARTS HERE -->
|
||||
<!-- MAIN MENU STARTS HERE -->
|
||||
<div class="tm-header tm-header-transparent" uk-header="">
|
||||
<div class="uk-container uk-container-expand">
|
||||
<nav class="uk-navbar" uk-navbar="{"align":"left"}">
|
||||
<div class="uk-navbar-center">
|
||||
<div class="uk-logo uk-navbar-item">
|
||||
<img alt="OpenAIRE" class="uk-responsive-height" src="./images/Logo_Horizontal.png">
|
||||
</div>
|
||||
</div>
|
||||
</nav>
|
||||
</div>
|
||||
</div>
|
||||
<!-- MENU ENDS HERE -->
|
||||
<!-- CONTENT STARTS HERE -->
|
||||
<div class="first_page_section uk-section-default uk-section uk-padding-remove-vertical">
|
||||
<div class="first_page_banner_headline uk-grid-collapse uk-flex-middle uk-margin-remove-vertical uk-grid" uk-grid="">
|
||||
</div>
|
||||
</div>
|
||||
<div class=" uk-section uk-margin-small-top tm-middle custom-main-content" id="tm-main">
|
||||
<div class="uk-container uk-container-small uk-margin-medium-top uk-margin-small-bottom uk-text-center">
|
||||
<h2 class="uk-h2 uk-margin-small-bottom">Your registered services</h2>
|
||||
<div class="tm-main uk-width-2-3@s uk-width-2-3@m uk-width-3-4@l uk-row-first uk-first-column uk-align-center">
|
||||
<div class="uk-grid ">
|
||||
<!-- CENTER SIDE -->
|
||||
<div class="uk-width-1-1@m uk-width-1-1@s uk-text-center">
|
||||
<h3 class="uk-h3">This is the list of all your registered services. You can register up to 5 services.</h3>
|
||||
<div class="middle-box text-center loginscreen animated fadeInDown ">
|
||||
<div class="k-width-1-1@m uk-width-1-1@s uk-text-center">
|
||||
<!-- REGISTER FORM -->
|
||||
<div id="registeredServices">
|
||||
<div class="uk-overflow-auto">
|
||||
<table class="uk-table uk-table-small uk-table-divider">
|
||||
<thead>
|
||||
<tr>
|
||||
<th>Name</th>
|
||||
<th>Creation Date</th>
|
||||
<th>Actions</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
<tr>
|
||||
<td>Service 1 <span class="uk-margin-small-right" uk-icon="chevron-down" uk-toggle="target: #details; animation: uk-animation-fade"></td>
|
||||
<td>today</td>
|
||||
<td>
|
||||
<span class="uk-margin-small-right" uk-icon="pencil"></span>
|
||||
<span class="uk-margin-small-right" uk-icon="trash"></span>
|
||||
</td>
|
||||
</tr>
|
||||
<tr id="details">
|
||||
<td colspan="3">
|
||||
<p>Service Name:</p>
|
||||
<p>Service Description:</p>
|
||||
<p>Service Id:</p>
|
||||
<p>Creation Date:</p>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>test service </td>
|
||||
<td>yesterday</td>
|
||||
<td>
|
||||
<span class="uk-margin-small-right" uk-icon="pencil"></span>
|
||||
<span class="uk-margin-small-right" uk-icon="trash"></span>
|
||||
</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
</div>
|
||||
<!-- END OF REGISTER FORM -->
|
||||
</div>
|
||||
</ul>
|
||||
</div>
|
||||
</div>
|
||||
<!-- END OF CENTER SIDE -->
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<!-- CONTENT ENDS HERE -->
|
||||
<!-- FOOTER STARTS HERE-->
|
||||
<div class="custom-footer" style="z-index: 200;">
|
||||
<div class="uk-section-primary uk-section uk-section-small">
|
||||
<div class="uk-container">
|
||||
<div class="uk-grid-margin uk-grid uk-grid-stack" uk-grid="">
|
||||
<div class="uk-width-1-1@m uk-first-column">
|
||||
<div class="uk-margin uk-margin-remove-top uk-margin-remove-bottom uk-text-center">
|
||||
<img alt="OpenAIRE" class="el-image" src="./images/Logo_Horizontal_white_small.png">
|
||||
</div>
|
||||
<div class="footer-license uk-margin uk-margin-remove-bottom uk-text-center uk-text-lead">
|
||||
<div><a href="http://creativecommons.org/licenses/by/4.0/" target="_blank" rel="license"><img alt="Creative" src="./images/80x15.png" style="height: auto; max-width: 100%; vertical-align: middle;"></a> UNLESS OTHERWISE INDICATED, ALL MATERIALS CREATED BY THE OPENAIRE CONSORTIUM ARE LICENSED UNDER A <a href="http://creativecommons.org/licenses/by/4.0/" rel="license">CREATIVE COMMONS ATTRIBUTION 4.0 INTERNATIONAL LICENSE</a>.</div>
|
||||
<div>OPENAIRE IS POWERED BY <a href="http://www.d-net.research-infrastructures.eu/">D-NET</a>.</div>
|
||||
</div>
|
||||
<div class="uk-margin uk-margin-remove-top uk-margin-remove-bottom uk-text-right">
|
||||
<a class="uk-totop uk-icon" href="#" uk-scroll="" uk-totop="">
|
||||
</a>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</body>
|
||||
</html>
|
Loading…
Reference in New Issue