Edit form bugs progress

This commit is contained in:
Katerina Iatropoulou 2020-11-02 17:42:23 +00:00
parent 8b19ce815f
commit 52f6ab3ac4
4 changed files with 67 additions and 45 deletions

View File

@ -108,7 +108,9 @@ public class RegisterServiceServlet extends HttpServlet {
}
private void updateFormFields(HttpServletRequest request, String serviceName, String description, String keyType, ServiceResponse serviceResponse) {
if (serviceName ==null || serviceName.trim().isEmpty()) {
System.out.println("UPDATING FORM");
if (serviceName == null || serviceName.trim().isEmpty()) {
request.getSession().setAttribute("first_name", serviceResponse.getClientName());
}
@ -138,6 +140,7 @@ public class RegisterServiceServlet extends HttpServlet {
OIDCAuthenticationToken authentication = (OIDCAuthenticationToken) SecurityContextHolder.
getContext().getAuthentication();
response.setContentType("text/html");
boolean canProceed = true;
String mode = request.getParameter("mode").trim();
@ -145,7 +148,14 @@ public class RegisterServiceServlet extends HttpServlet {
checkmode(mode);
System.out.println("Mode is " + mode);
String serviceId = request.getParameter("id");
String name = request.getParameter("first_name").trim();
if (name == null || name.isEmpty()) {
request.getSession().setAttribute("first_name_error", true);
canProceed = false;
}
String description = request.getParameter("description").trim();
String keyType = request.getParameter("key_radio").trim();
String jwksUri = null;
@ -154,6 +164,8 @@ public class RegisterServiceServlet extends HttpServlet {
if (keyType.equals("uri")) {
jwksUri = request.getParameter("uri");
request.getSession().setAttribute("jwksUri", jwksUri);
String[] schemes = {"https"};
UrlValidator urlValidator = new UrlValidator(schemes);
if (!urlValidator.isValid(jwksUri)){
@ -166,37 +178,46 @@ public class RegisterServiceServlet extends HttpServlet {
Gson gson = new GsonBuilder().registerTypeAdapter(Jwks.class, new JwksDeserializer()).create();
String jwksSet = String.format("{\"keys\":[%s]}", jwksString);
jwks = gson.fromJson(jwksSet, Jwks.class);
request.getSession().setAttribute("value", jwksString);
if (jwks.getKeys() == null || jwks.getKeys().length == 0) {
System.out.println("Something wrong with the keys.");
request.getSession().setAttribute("value_error", true);
canProceed = false;
}
} catch (JsonParseException jpe) {
request.getSession().setAttribute("value_error", true);
canProceed = false;
}
}
String userid = authentication.getSub();
String email = authentication.getUserInfo().getEmail();
String accessToken = authentication.getAccessTokenValue();
String serverRequestJSON;
if (keyType.equals("uri")){
serverRequestJSON = createServiceJson(name, description, email, jwksUri);
} else {
serverRequestJSON = createServiceJson(name, description, email, jwks);
}
System.out.println("SERVER JSON " + serverRequestJSON);
ServiceResponse serviceResponse = null;
if (nameIsValid(name) && userInfoIsValid(userid, email) && keyIsValid(keyType, jwksUri, jwksString) && canProceed) {
String serverRequestJSON;
String serverMessage;
if(mode.equals("create")) {
System.out.println("In create...");
//Careful! Redirects in method
checkNumberOfRegisteredServices(request, response, authentication);
if (keyType.equals("uri")){
serverRequestJSON = createServiceJson(name, description, email, jwksUri);
} else {
serverRequestJSON = createServiceJson(name, description, email, jwks);
}
serverMessage = tokenUtils.registerService(serverRequestJSON, accessToken);
@ -222,8 +243,7 @@ public class RegisterServiceServlet extends HttpServlet {
return;
}
} else {
String serviceId = request.getParameter("id");
int serviceIdInt = 0;
int serviceIdInt = 0;
if (serviceId == null || serviceId.isEmpty()) { //TODO WRONG MESSAGE
request.getSession().setAttribute("message", "Service with id " + serviceId + " does not exist.");
@ -243,20 +263,13 @@ public class RegisterServiceServlet extends HttpServlet {
if (registeredService != null && registeredService.getAai_id() != null) {
serviceResponse = tokenUtils.getRegisteredService(registeredService.getAai_id(), accessToken);
request.getSession().setAttribute("serviceId", serviceResponse.getId());
System.out.println("service client name " + serviceResponse.getClientName());
request.getSession().setAttribute("first_name", serviceResponse.getClientName());
System.out.println("service client description " + serviceResponse.getClientDescription());
request.getSession().setAttribute("description", serviceResponse.getClientDescription());
HttpResponse resp = tokenUtils.updateService(serviceId, authentication.getSub(), name, description, authentication.getUserInfo().getEmail(), accessToken);
HttpResponse resp = tokenUtils.updateService(registeredService.getAai_id(), serverRequestJSON, accessToken);
if (resp.getStatusLine().getStatusCode()==200) {
registeredService = new RegisteredService();
System.out.println("NAME >>>>" + name);
registeredService.setName(name);
registeredService.setAai_id(serviceId);
System.out.println("AAI ID " + registeredService.getAai_id());
try {
registeredServicesUtils.getRegisteredServiceDao().update(registeredService);
} catch (SQLException sqle) {
@ -297,7 +310,13 @@ public class RegisterServiceServlet extends HttpServlet {
request.getSession().setAttribute("uri", jwksUri);
request.getSession().setAttribute("value", jwksString);
response.sendRedirect("./registeredServices");
if ( serviceId != null && !serviceId.isEmpty()) {
request.getRequestDispatcher("./registerService.jsp?id="+serviceId).forward(request, response);
} else {
request.getRequestDispatcher("./registerService.jsp").include(request, response);
}
return;
}

View File

@ -48,21 +48,16 @@ public class TokenUtils {
return null;
}
public 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);
//TODO FIX THIS!!!
//String json = createServiceJson(name, description);
String json ="";
public HttpResponse updateService(String serviceId, String serviceSON, String accessToken) throws IOException {
HttpPut httpPut = new HttpPut(issuer + "/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);
HttpPut httpPut = new HttpPut(issuer + "/api/clients/"+serviceId);
httpPut.setHeader(HttpHeaders.CONTENT_TYPE, "application/json");
httpPut.setHeader(HttpHeaders.AUTHORIZATION, "Bearer " + accessToken);
StringEntity params = new StringEntity(serviceSON.toString());
httpPut.setEntity(params);
CloseableHttpClient httpclient = HttpClients.createDefault();
return httpclient.execute(httpPut);
CloseableHttpClient httpclient = HttpClients.createDefault();
return httpclient.execute(httpPut);
}
public HttpResponse deleteService(String serviceId, String accessToken) throws IOException {

View File

@ -73,16 +73,23 @@
<div class="uk-margin-medium-top">
<label class="uk-form-label uk-text-bold" for="first_name">Name*</label>
<input id="first_name" name="first_name" type="text" placeholder="Name (*)"
class="uk-input" onkeyup="validate()" onfocusout="nameTouched = true;validate()" value="${first_name}">
class="uk-input ${first_name_error == true?'uk-form-danger':''}" onkeyup="validate()" onfocusout="nameTouched = true;validate()" value="${first_name}">
<c:choose>
<c:when test="${first_name_error == true}">
<div id="first_name_error" class="uk-text-danger uk-text-small">Please enter a name for your service.
</div>
</c:when>
<c:otherwise>
<div id="first_name_error" style="display:none;" class="uk-text-danger uk-text-small">Please enter a name for your service.</div>
</c:otherwise>
</c:choose>
<c:remove var="first_name" scope="session"/>
<div id="first_name_error" style="display:none;" class="uk-text-danger uk-text-small">Please enter a name for your
service.
</div>
<c:remove var="first_name_error" scope="session"/>
</div>
<div class="uk-margin-medium-top">
<label class="uk-form-label uk-text-bold" for="description">Description</label>
<textarea id="description" name="description" type="textarea" placeholder="Description:"
class="uk-textarea" rows="3" value="${description}"></textarea>
class="uk-textarea" rows="3">${description}</textarea>
<c:remove var="description" scope="session"/>
</div>
<h4 class="uk-text-bold uk-text-center">Access</h4>
@ -105,7 +112,7 @@
<input disabled value="RSASSA using SHA-256 hash algorithm" class="uk-input">
</div>
<div class="uk-margin-medium-top">
<label class="uk-form-label uk-text-bold">Public Key Set</label>
<label class="uk-form-label uk-text-bold">Public Key</label>
<span class="uk-float-right">
<span class="uk-margin-small-right">
<input id="by_value" class="uk-radio uk-margin-small-right" type="radio"
@ -128,7 +135,8 @@
class="uk-textarea ${value_error == true?'uk-form-danger':''}" rows="10">${value}</textarea>
<c:choose>
<c:when test="${value_error == true}">
<div id="value_error" class="uk-text-danger uk-text-small">Please provide a valid JSON.</div>
<div id="value_error" class="uk-text-danger uk-text-small">Please provide a valid JSON. The format should be
{"kty": ..., "e": ... , "use": ... , "kid": ..., "alg": ... , "n": ...} </div>
<c:remove var="value_error" scope="session"/>
</c:when>
<c:otherwise>
@ -216,7 +224,7 @@
function validate() {
var isValid = true;
var create = $('#create');
create.prop('disabled', true);
//create.prop('disabled', true);
var name = $("#first_name");
if (name.val() !== undefined) {
if ($.trim(name.val()).length <= 0) {
@ -262,7 +270,7 @@
}
}
if (isValid) {
create.prop('disabled', false);
//create.prop('disabled', false);
}
return isValid;
}

View File

@ -151,7 +151,7 @@
<p><span class="uk-text-primary">Authentication Method</span> Asymmetrically-signed JWT assertion</p>
<p><span class="uk-text-primary">Token Endpoint Authentication Signing Algorithm</span> RSASSA using
SHA-256 hash algorithm</p>
<p><span class="uk-text-primary">Public Key Set</span>
<p><span class="uk-text-primary">Public Key</span>
<pre><code>${keys[key]}</code></pre>
</p>
<p><span class="uk-text-primary">Creation Date:</span>