diff --git a/src/interfaces/permission.ts b/src/interfaces/permission.ts index 6ff8977..9980858 100644 --- a/src/interfaces/permission.ts +++ b/src/interfaces/permission.ts @@ -183,40 +183,97 @@ class CheckAuth { return false; }); } - public async checkOrg(token: any, keycloakId: string) { - const redisClient = await this.redis.createClient({ - host: process.env.REDIS_HOST, - port: process.env.REDIS_PORT, - }) - const getAsync = promisify(redisClient.get).bind(redisClient) - try { - let reply = await getAsync("org_" + keycloakId) - if (reply != null) { - reply = JSON.parse(reply) - } else { - if (!keycloakId) throw new Error("No KeycloakId provided") - const x = await new CallAPI().GetData( - { - headers: { authorization: token }, - }, - `/org/permission/checkOrg/${keycloakId}`, - false - ) + // public async checkOrg(token: any, keycloakId: string) { + // const redisClient = await this.redis.createClient({ + // host: process.env.REDIS_HOST, + // port: process.env.REDIS_PORT, + // }) + // const getAsync = promisify(redisClient.get).bind(redisClient) + // try { + // let reply = await getAsync("org_" + keycloakId) + // if (reply != null) { + // reply = JSON.parse(reply) + // } else { + // if (!keycloakId) throw new Error("No KeycloakId provided") + // const x = await new CallAPI().GetData( + // { + // headers: { authorization: token }, + // }, + // `/org/permission/checkOrg/${keycloakId}`, + // false + // ) - const data = { - orgRootId: x.orgRootId, - orgChild1Id: x.orgChild1Id, - orgChild2Id: x.orgChild2Id, - orgChild3Id: x.orgChild3Id, - orgChild4Id: x.orgChild4Id, - } + // const data = { + // orgRootId: x.orgRootId, + // orgChild1Id: x.orgChild1Id, + // orgChild2Id: x.orgChild2Id, + // orgChild3Id: x.orgChild3Id, + // orgChild4Id: x.orgChild4Id, + // } - return data - } - } catch (error) { - console.error("Error calling API:", error) - throw error - } + // return data + // } + // } catch (error) { + // console.error("Error calling API:", error) + // throw error + // } + // } + public async checkOrg(token: any, keycloakId: string) { + try { + // Validate required environment variables + const REDIS_HOST = process.env.REDIS_HOST; + const REDIS_PORT = process.env.REDIS_PORT ? Number(process.env.REDIS_PORT) : 6379; + + if (!REDIS_HOST) { + throw new Error("REDIS_HOST is not set in environment variables"); + } + + console.log(`[REDIS] Connecting to Redis at ${REDIS_HOST}:${REDIS_PORT}`); + + // Create Redis client + const redisClient = this.redis.createClient({ + socket: { + host: REDIS_HOST, + port: REDIS_PORT, + }, + }); + + redisClient.on("error", (err: any) => { + console.error("[REDIS] Connection error:", err.message); + }); + + await redisClient.connect(); + console.log("[REDIS] Connected successfully!"); + + const getAsync = promisify(redisClient.get).bind(redisClient); + + let reply = await getAsync("org_" + keycloakId); + if (reply != null) { + reply = JSON.parse(reply); + } else { + if (!keycloakId) throw new Error("No KeycloakId provided"); + const x = await new CallAPI().GetData( + { + headers: { authorization: token }, + }, + `/org/permission/checkOrg/${keycloakId}`, + false, + ); + + const data = { + orgRootId: x.orgRootId, + orgChild1Id: x.orgChild1Id, + orgChild2Id: x.orgChild2Id, + orgChild3Id: x.orgChild3Id, + orgChild4Id: x.orgChild4Id, + }; + + return data; + } + } catch (error) { + console.error("Error calling API:", error); + throw error; + } } public async PermissionCreate(req: RequestWithUser, system: string) { return await this.Permission(req, system, "CREATE");