From 3415fd5dce699c332849762e7679386484476610 Mon Sep 17 00:00:00 2001 From: Felix Sidokhine <felix.sidokhine@randstad.ca> Date: Fri, 5 Jun 2020 19:01:35 +0300 Subject: [PATCH] added api documentation inside methods --- jams-server/doc/api_data.js | 63 +++++++++++++++++++ jams-server/doc/api_data.json | 63 +++++++++++++++++++ jams-server/doc/api_project.js | 2 +- jams-server/doc/api_project.json | 2 +- .../jams/server/servlets/LoginServlet.java | 19 +++++- .../servlets/api/auth/login/LoginRequest.java | 12 ++++ 6 files changed, 156 insertions(+), 5 deletions(-) create mode 100644 jams-server/src/main/java/net/jami/jams/server/servlets/api/auth/login/LoginRequest.java diff --git a/jams-server/doc/api_data.js b/jams-server/doc/api_data.js index 4b4306ca..e690dd6c 100644 --- a/jams-server/doc/api_data.js +++ b/jams-server/doc/api_data.js @@ -521,6 +521,69 @@ define({ "api": [ "filename": "src/main/java/net/jami/jams/server/servlets/api/auth/directory/SearchDirectoryServlet.java", "groupTitle": "Directory_Search" }, + { + "version": "1.0.0", + "type": "post", + "url": "/api/login", + "title": "Obtain an 0Auth token", + "name": "postLogin", + "group": "Login", + "parameter": { + "fields": { + "Parameter": [ + { + "group": "Parameter", + "type": "header", + "optional": true, + "field": "authorization", + "description": "<p>classical HTTP auth header</p>" + }, + { + "group": "Parameter", + "type": "attribute", + "optional": true, + "field": "X509Certificate", + "description": "<p>X509 User certificate</p>" + }, + { + "group": "Parameter", + "type": "body", + "optional": true, + "field": "LoginRequest", + "description": "<p>username/password sent to server as JSON object</p>" + } + ] + } + }, + "success": { + "fields": { + "200": [ + { + "group": "200", + "type": "body", + "optional": false, + "field": "AuthTokenResponse", + "description": "<p>the 0Auth authentication token</p>" + } + ] + } + }, + "error": { + "fields": { + "403": [ + { + "group": "403", + "type": "null", + "optional": false, + "field": "null", + "description": "<p>The user is unauthorized</p>" + } + ] + } + }, + "filename": "src/main/java/net/jami/jams/server/servlets/LoginServlet.java", + "groupTitle": "Login" + }, { "version": "1.0.0", "type": "get", diff --git a/jams-server/doc/api_data.json b/jams-server/doc/api_data.json index 433aaecf..520fd711 100644 --- a/jams-server/doc/api_data.json +++ b/jams-server/doc/api_data.json @@ -521,6 +521,69 @@ "filename": "src/main/java/net/jami/jams/server/servlets/api/auth/directory/SearchDirectoryServlet.java", "groupTitle": "Directory_Search" }, + { + "version": "1.0.0", + "type": "post", + "url": "/api/login", + "title": "Obtain an 0Auth token", + "name": "postLogin", + "group": "Login", + "parameter": { + "fields": { + "Parameter": [ + { + "group": "Parameter", + "type": "header", + "optional": true, + "field": "authorization", + "description": "<p>classical HTTP auth header</p>" + }, + { + "group": "Parameter", + "type": "attribute", + "optional": true, + "field": "X509Certificate", + "description": "<p>X509 User certificate</p>" + }, + { + "group": "Parameter", + "type": "body", + "optional": true, + "field": "LoginRequest", + "description": "<p>username/password sent to server as JSON object</p>" + } + ] + } + }, + "success": { + "fields": { + "200": [ + { + "group": "200", + "type": "body", + "optional": false, + "field": "AuthTokenResponse", + "description": "<p>the 0Auth authentication token</p>" + } + ] + } + }, + "error": { + "fields": { + "403": [ + { + "group": "403", + "type": "null", + "optional": false, + "field": "null", + "description": "<p>The user is unauthorized</p>" + } + ] + } + }, + "filename": "src/main/java/net/jami/jams/server/servlets/LoginServlet.java", + "groupTitle": "Login" + }, { "version": "1.0.0", "type": "get", diff --git a/jams-server/doc/api_project.js b/jams-server/doc/api_project.js index 408681ee..1c1003fd 100644 --- a/jams-server/doc/api_project.js +++ b/jams-server/doc/api_project.js @@ -7,7 +7,7 @@ define({ "apidoc": "0.3.0", "generator": { "name": "apidoc", - "time": "2020-06-05T15:49:17.635Z", + "time": "2020-06-05T16:00:10.907Z", "url": "http://apidocjs.com", "version": "0.23.0" } diff --git a/jams-server/doc/api_project.json b/jams-server/doc/api_project.json index 54f6f7b8..32383056 100644 --- a/jams-server/doc/api_project.json +++ b/jams-server/doc/api_project.json @@ -7,7 +7,7 @@ "apidoc": "0.3.0", "generator": { "name": "apidoc", - "time": "2020-06-05T15:49:17.635Z", + "time": "2020-06-05T16:00:10.907Z", "url": "http://apidocjs.com", "version": "0.23.0" } diff --git a/jams-server/src/main/java/net/jami/jams/server/servlets/LoginServlet.java b/jams-server/src/main/java/net/jami/jams/server/servlets/LoginServlet.java index acc90b79..e129305e 100644 --- a/jams-server/src/main/java/net/jami/jams/server/servlets/LoginServlet.java +++ b/jams-server/src/main/java/net/jami/jams/server/servlets/LoginServlet.java @@ -31,6 +31,7 @@ import jakarta.servlet.http.HttpServletRequest; import jakarta.servlet.http.HttpServletResponse; import net.jami.jams.common.authmodule.AuthTokenResponse; import net.jami.jams.common.objects.user.UserProfile; +import net.jami.jams.server.servlets.api.auth.login.LoginRequest; import net.minidev.json.JSONObject; import java.io.IOException; @@ -43,14 +44,26 @@ import static net.jami.jams.server.servlets.api.auth.login.AuthRequestProcessor. //This method returns the token which is used for all the next calls to the API. public class LoginServlet extends HttpServlet { + /** + * @apiVersion 1.0.0 + * @api {post} /api/login Obtain an 0Auth token + * @apiName postLogin + * @apiGroup Login + * @apiParam {header} [authorization] classical HTTP auth header + * @apiParam {attribute} [X509Certificate] X509 User certificate + * @apiParam {body} [LoginRequest] username/password sent to server as JSON object + * + * @apiSuccess (200) {body} AuthTokenResponse the 0Auth authentication token + * @apiError (403) {null} null The user is unauthorized + */ @Override protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws IOException { //There are 3 possible cases here. //Case 1: form submitted username/password AuthTokenResponse res = null; - JSONObject object = JsonIterator.deserialize(req.getInputStream().readAllBytes(), JSONObject.class); - if(object.get("username") != null && object.get("password") != null){ - res = processUsernamePasswordAuth(object.get("username").toString(), object.get("password").toString()); + LoginRequest object = JsonIterator.deserialize(req.getInputStream().readAllBytes(), LoginRequest.class); + if(object.getUsername() != null && object.getPassword() != null){ + res = processUsernamePasswordAuth(object.getUsername(), object.getPassword()); } //Case 2: Authorization header. if(req.getHeader("authorization") != null){ diff --git a/jams-server/src/main/java/net/jami/jams/server/servlets/api/auth/login/LoginRequest.java b/jams-server/src/main/java/net/jami/jams/server/servlets/api/auth/login/LoginRequest.java new file mode 100644 index 00000000..9eef49d9 --- /dev/null +++ b/jams-server/src/main/java/net/jami/jams/server/servlets/api/auth/login/LoginRequest.java @@ -0,0 +1,12 @@ +package net.jami.jams.server.servlets.api.auth.login; + +import lombok.Getter; +import lombok.Setter; + +@Getter +@Setter +public class LoginRequest { + + private String username; + private String password; +} -- GitLab