Project

General

Profile

1
<%--
2
  Created by IntelliJ IDEA.
3
  User: sofia
4
  Date: 19/10/2017
5
  Time: 4:30 μμ
6
  To change this template use File | Settings | File Templates.
7
--%>
8
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
9
<!DOCTYPE html>
10
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>
11
<html lang="en-gb" dir="ltr" vocab="http://schema.org/">
12
<head>
13
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
14
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
15
    <meta name="viewport" content="width=device-width, initial-scale=1">
16
    <base href=".">
17
    <title>OpenAIRE - Register</title>
18
    <script src="./js/jquery.js"></script>
19
    <script src="./js/uikit.js"></script>
20
    <script src="./js/uikit-icons-max.js"></script>
21
    <link rel="stylesheet" style="text/css" href="./css/theme.css">
22
    <link rel="stylesheet" style="text/css" href="./css/custom.css">
23
    <link rel="stylesheet" style="text/css" href="./css/aai-custom.css">
24
    <link rel="icon" type="image/png" sizes="32x32" href="images/favicon/favicon-32x32.png">
25
    <link rel="icon" type="image/png" sizes="96x96" href="images/favicon//favicon-96x96.png">
26
    <link rel="icon" type="image/png" sizes="16x16" href="images/favicon/favicon-16x16.png">
27
    <link href="images/favicon/favicon.ico" rel="shortcut icon" type="image/vnd.microsoft.icon" />
28
</head>
29
<body class="" style="">
30
<div class="uk-offcanvas-content uk-height-viewport">
31
    <!-- MENU STARTS HERE -->
32
    <!-- MAIN MENU STARTS HERE -->
33
    <div class="tm-header  tm-header-transparent" uk-header="">
34
        <div class="uk-container uk-container-expand">
35
            <nav class="uk-navbar" uk-navbar="{&quot;align&quot;:&quot;left&quot;}">
36
                <div class="uk-navbar-center">
37
                    <div class="uk-logo uk-navbar-item">
38
                        <img alt="OpenAIRE" class="uk-responsive-height" src="./images/Logo_Horizontal.png">
39
                    </div>
40
                </div>
41
                <!-- user menu -->
42
                <div class=uk-navbar-right>
43
                    <ul class="uk-navbar-nav user_actions">
44
                        <c:choose>
45
                            <c:when test="${not authenticated}">
46
                                <li><a href="./openid_connect_login"> Sign in </a></li>
47
                            </c:when>
48
                            <c:otherwise>
49
                            <li>
50
                                <a class="login uk-icon" aria-expanded="false">
51
                                <svg height="60" width="60">
52
                                    <span uk-icon="icon: user; ratio: 2"></span></svg>
53
                            </a>
54
                            </c:otherwise>
55
                        </c:choose>
56
                            <div class="uk-navbar-dropdown uk-navbar-dropdown-bottom-right" id="userMenu" style="left: 344.433px; top: 100px;">
57
                                <div class="uk-navbar-dropdown-grid uk-child-width-1-1 uk-grid uk-grid-stack" uk-grid="">
58
                                    <div class="uk-first-column uk-height-max-medium uk-overflow-auto">
59
                                        <ul class="uk-nav uk-navbar-dropdown-nav">
60
                                            <li class=""><a href="./personalToken">Personal token</a></li>
61
                                            <li class=""><a href="./registeredServices">Registered services</a></li>
62
                                            <li class="uk-nav-divider "></li>
63
                                            <li>
64
                                                <a href="./openid_logout" id="logout">Log out</a>
65
                                            </li>
66
                                        </ul>
67
                                    </div>
68
                                </div>
69
                            </div>
70
                        </li>
71
                    </ul>
72
                </div>
73
                <!-- USER MENU ENDS HERE -->
74
            </nav>
75
        </div>
76
    </div>
77
    <!-- MENU ENDS HERE -->
78
    <!-- CONTENT STARTS HERE -->
79
    <div class="first_page_section uk-section-default uk-section uk-padding-remove-vertical">
80
        <div class="first_page_banner_headline uk-grid-collapse uk-flex-middle uk-margin-remove-vertical uk-grid" uk-grid="">
81
        </div>
82
    </div>
83
    <div class=" uk-section  uk-margin-small-top uk-container uk-container-large" id="tm-main">
84
        <div class="uk-grid ">
85
            <div class="uk-width-1-4@m">
86
                <div  class="uk-card uk-card-default uk-card-body">
87
                    <div class="uk-h4">API Access</div>
88
                    <ul class="uk-nav uk-nav-default">
89
                        <li class=""><a href="./personalToken">Personal token</a></li>
90
                        <li class=""><a href="./registeredServices">Registered services</a></li>
91
                    </ul>
92
                </div>
93
            </div>
94
            <!-- CENTER SIDE -->
95
            <div class="uk-width-2-3@l uk-width-2-3@m">
96
                <h2 class="uk-h2 uk-margin-small-bottom">Add a new service</h2>
97
                <div class="middle-box text-center loginscreen animated fadeInDown ">
98
                    <div class="k-width-1-1@m uk-width-1-1@s uk-text-center">
99
                        <!-- REGISTER FORM -->
100
                        <div id="registerForm">
101
                            <form action="registerService" method="POST" role="form" class="m-t uk-form-horizontal" id="register_form">
102
                                <input type="hidden" name="${_csrf.parameterName}" value="${_csrf.token}"/>
103
                                <div class="alert alert-success" aria-hidden="true" style="display: none;"></div>
104
                                <div class="alert alert-danger" aria-hidden="true" style="display: none;"></div>
105
                                <span id="server_error" class="uk-text-danger uk-text-small uk-float-left">${message}</span>
106
                                <c:remove var="message" scope="session" />
107
                                <h5 class="uk-h5">General</h5>
108
                                <div class="uk-margin">
109
                                    <label class="uk-form-label" for="form-horizontal-text">Name(*)</label>
110
                                    <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>
111
                                    <input id="first_name" name="first_name" type="text" placeholder="Name (*)" class="form-control" value=${first_name}>
112
                                    <c:remove var="msg_first_name_error_display" scope="session" />
113
                                    <c:remove var="first_name" scope="session" />
114
                                </div>
115
                                <div class="uk-margin">
116
                                    <label class="uk-form-label" for="form-horizontal-text">Description</label>
117
                                    <textarea id="description" name="description" type="textarea" placeholder="Description:" class="form-control uk-textarea" rows="3" value=${description}></textarea>
118
                                    <c:remove var="organization" scope="session" />
119
                                </div>
120
                                <hr class="uk-margin-remove-top">
121
                                <h5 class="uk-h5">Access</h5>
122
                                <div class="uk-margin">
123
                                       <label class="uk-form-label" for="form-horizontal-text">Scope</label>
124
                                       <input disabled value="openid" class="uk-input"></input>
125
                                </div>
126
                                <div class="uk-margin">
127
                                       <label class="uk-form-label" for="form-horizontal-text">Grant Types</label>
128
                                       <input disabled value="client credentials" class="uk-input"></input>
129
                                </div>
130
                                <hr class="uk-margin-remove-top">
131
                                <h5 class="uk-h5">Credentials</h5>
132
                                <div class="uk-margin">
133
                                       <label class="uk-form-label" for="form-horizontal-text">Authentication Method</label>
134
                                       <input disabled value="Asymmetrically-signed JWT assertion" class="uk-input"></input>
135
                                </div>
136
                                <div class="uk-margin">
137
                                       <label class="uk-form-label" for="form-horizontal-text">Token Endpoint Authentication Signing Algorithm</label>
138
                                       <input disabled value="RSASSA using SHA-256 hash algorithm" class="uk-input"></input>
139
                                </div>
140
                                <div class="uk-margin">
141
                                    <label class="uk-form-label" for="form-horizontal-text">Public Key Set</label>
142

    
143
                                    <label><input class="uk-radio" type="radio" name="key_radio" value="value" checked>By Value</label>
144
                                    <label><input class="uk-radio" type="radio" name="key_radio" value="uri">By URI</label><br>
145

    
146
                                    <div id="value_input">
147
                                        <span class="msg_key_value_error uk-text-danger uk-text-small uk-float-left" style='${msg_key_value_error_display}'>Please provide a valid JSON.</span>
148
                                        <textarea id="value" name="value" type="textarea" placeholder='{"keys":[]}' class="form-control uk-textarea" rows="10"></textarea>
149
                                    </div>
150
                                    <div id="uri_input" style="display:none;">
151
                                        <span class="msg_key_uri_error uk-text-danger uk-text-small uk-float-left" style='${msg_key_uri_error_display}'>Please provide a valid URI.</span>
152
                                        <input id="uri" name="uri" type="text" placeholder="https://" class="form-control" value="${jwksUri}">
153
                                    </div>
154
                                </div>
155
                                <hr class="uk-margin-remove-top">
156
                                <div class="uk-width-1-1 uk-grid-margin uk-first-column">
157
                                    <a type="submit" class="uk-button uk-button-default" href="./registeredServices">Cancel</a>
158
                                    <button type="submit" class="uk-button uk-button-primary" onclick="return validate();">Add new service</button>
159
                                </div>
160
                            </form>
161
                        </div>
162
                        <!-- END OF REGISTER FORM -->
163
                        <script>
164
                            $('input[type=radio][name=key_radio]').change(function() {
165
                                if (this.value == 'uri') {
166
                                   $("#uri_input").show();
167
                                   $("#value_input").hide();
168

    
169
                                } else if (this.value == 'value') {
170
                                     $("#uri_input").hide();
171
                                     $("#value_input").show();
172
                                }
173
                            });
174

    
175
                            function validate() {
176
                                var isValid = false;
177
                                if($("#first_name").val() != undefined) {
178
                                    if($.trim($("#first_name").val()).length <= 0) {
179
                                        $("#first_name").addClass('uk-input aai-form-danger');
180
                                        $(".msg_first_name_error").show();
181
                                        return false;
182
                                    } else {
183
                                        $(".msg_first_name_error").hide();
184
                                        $("#first_name").removeClass('aai-form-danger');
185
                                    }
186
                                }
187

    
188
                                if ($('input[type=radio][name=key_radio]:checked').val()==='value') {
189
                                    isValid = validateJSON();
190
                                    if (!isValid) {
191
                                        $("#value_input").addClass('uk-input aai-form-danger');
192
                                        $(".msg_key_value_error_display").show();
193
                                        return false;
194
                                    }
195
                                }
196

    
197
                                if ($('input[type=radio][name=key_radio]:checked').val()==='uri') {
198
                                    isValid = validateURI();
199
                                    if (!isValid) {
200
                                        $("#uri_input").addClass('uk-input aai-form-danger');
201
                                        $(".msg_key_uri_error_display").show();
202
                                        return false;
203
                                    }
204
                                }
205

    
206
                            }
207

    
208
                            function validateJSON() {
209
                                if ($("#value").val() != undefined && $("#value").val()!=="") {
210
                                    if (/^[\],:{}\s]*$/.test($("#value").val().replace(/\\["\\\/bfnrtu]/g, '@').
211
                                        replace(/"[^"\\\n\r]*"|true|false|null|-?\d+(?:\.\d*)?(?:[eE][+\-]?\d+)?/g, ']').
212
                                        replace(/(?:^|:|,)(?:\s*\[)+/g, ''))) {
213
                                            return true;
214

    
215
                                    } else {
216
                                        return false;
217
                                    }
218
                                }
219
                                return false;
220
                            }
221

    
222
                            function validateURI() {
223
                                if ($("#uri").val() != undefined && $("#uri").val()!=="") {
224
                                  var pattern = new RegExp('^(https?:\\/\\/)?'+ // protocol
225
                                    '((([a-z\\d]([a-z\\d-]*[a-z\\d])*)\\.)+[a-z]{2,}|'+ // domain name
226
                                    '((\\d{1,3}\\.){3}\\d{1,3}))'+ // OR ip (v4) address
227
                                    '(\\:\\d+)?(\\/[-a-z\\d%_.~+]*)*'+ // port and path
228
                                    '(\\?[;&a-z\\d%_.~+=-]*)?'+ // query string
229
                                    '(\\#[-a-z\\d_]*)?$','i'); // fragment locator
230
                                  return !!pattern.test($("#uri").val());
231
                                }
232
                                return false;
233
                            }
234

    
235
                            $("#first_name").focusin(function () {
236
                                $(this).removeClass('aai-form-danger');
237
                                $(".msg_first_name_error").fadeOut();
238
                            });
239

    
240
                            $("#value_input").focusin(function () {
241
                                $(this).removeClass('aai-form-danger');
242
                                $(".msg_key_value_error").fadeOut();
243
                            });
244

    
245
                            $("#uri_input").focusin(function () {
246
                                $(this).removeClass('aai-form-danger');
247
                                $(".msg_key_uri_error").fadeOut();
248
                            });
249
                        </script>
250
                    </div>
251
                    </ul>
252
                </div>
253
            </div>
254
            <!-- END OF CENTER SIDE -->
255
        </div>
256
    </div>
257
    <!-- CONTENT ENDS HERE -->
258
    <!-- FOOTER STARTS HERE-->
259
    <div class="custom-footer"  style="z-index: 200;">
260
          <div class="uk-section-primary uk-section uk-section-small">
261
            <div class="uk-container">
262
              <div class="uk-grid-margin uk-grid uk-grid-stack" uk-grid="">
263
                <div class="uk-width-1-1@m uk-first-column">
264
                  <div class="uk-margin uk-margin-remove-top uk-margin-remove-bottom uk-text-center">
265
                    <img alt="OpenAIRE" class="el-image" src="./images/Logo_Horizontal_white_small.png">
266
                  </div>
267
                  <div class="footer-license uk-margin uk-margin-remove-bottom uk-text-center uk-text-lead">
268
                    <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>&nbsp;UNLESS OTHERWISE INDICATED, ALL MATERIALS CREATED BY THE OPENAIRE CONSORTIUM ARE LICENSED UNDER A&nbsp;<a href="http://creativecommons.org/licenses/by/4.0/" rel="license">CREATIVE COMMONS ATTRIBUTION 4.0 INTERNATIONAL LICENSE</a>.</div>
269
                    <div>OPENAIRE IS POWERED BY&nbsp;<a href="http://www.d-net.research-infrastructures.eu/">D-NET</a>.</div>
270
                  </div>
271
                  <div class="uk-margin uk-margin-remove-top uk-margin-remove-bottom uk-text-right">
272
                    <a class="uk-totop uk-icon" href="#" uk-scroll="" uk-totop="">
273
                    </a>
274
                  </div>
275
                </div>
276
              </div>
277
            </div>
278
          </div>
279
        </div>
280
</div>
281
</body>
282
</html>
(13-13/25)