Merge remote-tracking branch 'origin/develop' into swaggerPusher

This commit is contained in:
CEC
2022-04-14 15:44:21 +02:00
35 changed files with 258 additions and 111 deletions
@@ -6,6 +6,7 @@ import { parse } from "query-string";
import { openIDClient } from "../Services/OpenIDClient";
import { DISABLE_ANONYMOUS } from "../Enum/EnvironmentVariable";
import { RegisterData } from "../Messages/JsonMessages/RegisterData";
import { adminService } from "../Services/AdminService";
export interface TokenInterface {
userUuid: string;
@@ -18,6 +19,7 @@ export class AuthenticateController extends BaseHttpController {
this.register();
this.anonymLogin();
this.profileCallback();
this.me();
}
openIDLogin() {
@@ -166,10 +168,11 @@ export class AuthenticateController extends BaseHttpController {
//Get user data from Admin Back Office
//This is very important to create User Local in LocalStorage in WorkAdventure
const resUserData = await this.getUserByUserIdentifier(
const resUserData = await adminService.fetchMemberDataByUuid(
authTokenData.identifier,
playUri as string,
IPAddress
IPAddress,
[]
);
if (authTokenData.accessToken == undefined) {
@@ -178,7 +181,7 @@ export class AuthenticateController extends BaseHttpController {
if (!code && !nonce) {
return res.json({ ...resUserData, authToken: token });
}
console.error("Token cannot to be check on OpenId provider");
console.error("Token cannot be checked on OpenId provider");
res.status(500);
res.send("User cannot to be connected on openid provider");
return;
@@ -221,7 +224,7 @@ export class AuthenticateController extends BaseHttpController {
//Get user data from Admin Back Office
//This is very important to create User Local in LocalStorage in WorkAdventure
const data = await this.getUserByUserIdentifier(email, playUri as string, IPAddress);
const data = await adminService.fetchMemberDataByUuid(email, playUri as string, IPAddress, []);
return res.json({ ...data, authToken, username: userInfo?.username, locale: userInfo?.locale });
} catch (e) {
@@ -253,7 +256,7 @@ export class AuthenticateController extends BaseHttpController {
try {
const authTokenData: AuthTokenData = jwtTokenManager.verifyJWTToken(token as string, false);
if (authTokenData.accessToken == undefined) {
throw Error("Token cannot to be logout on Hydra");
throw Error("Token cannot be logout on Hydra");
}
await openIDClient.logoutUser(authTokenData.accessToken);
} catch (error) {
@@ -412,7 +415,7 @@ export class AuthenticateController extends BaseHttpController {
try {
const authTokenData: AuthTokenData = jwtTokenManager.verifyJWTToken(token as string, false);
if (authTokenData.accessToken == undefined) {
throw Error("Token cannot to be check on Hydra");
throw Error("Token cannot be checked on OpenID connect provider");
}
await openIDClient.checkTokenAuth(authTokenData.accessToken);
@@ -433,6 +436,52 @@ export class AuthenticateController extends BaseHttpController {
});
}
/**
* @openapi
* /me:
* get:
* description: ???
* parameters:
* - name: "token"
* in: "query"
* description: "A JWT authentication token ???"
* required: true
* type: "string"
* responses:
* 200:
* description: Data of user connected
*/
me() {
// @ts-ignore
this.app.get("/me", async (req, res): void => {
const { token } = parse(req.path_query);
try {
//verify connected by token
if (token != undefined) {
try {
const authTokenData: AuthTokenData = jwtTokenManager.verifyJWTToken(token as string, false);
if (authTokenData.accessToken == undefined) {
throw Error("Token cannot to be checked on Hydra");
}
const me = await openIDClient.checkTokenAuth(authTokenData.accessToken);
//get login profile
res.status(200);
res.json({ ...me });
return;
} catch (error) {
this.castErrorToResponse(error, res);
return;
}
}
} catch (error) {
console.error("me => ERROR", error);
this.castErrorToResponse(error, res);
return;
}
});
}
/**
*
* @param email
+3 -3
View File
@@ -160,12 +160,12 @@ export class MapController extends BaseHttpController {
}
}
}
const mapDetails = isMapDetailsData.safeParse(
const mapDetails = isMapDetailsData.parse(
await adminApi.fetchMapDetails(query.playUri as string, userId)
);
if (mapDetails.success && DISABLE_ANONYMOUS) {
mapDetails.data.authenticationMandatory = true;
if (DISABLE_ANONYMOUS) {
mapDetails.authenticationMandatory = true;
}
res.json(mapDetails);