UNPKG

more-sso-sdk

Version:
573 lines (567 loc) 23.4 kB
var __async = (__this, __arguments, generator) => { return new Promise((resolve, reject) => { var fulfilled = (value) => { try { step(generator.next(value)); } catch (e) { reject(e); } }; var rejected = (value) => { try { step(generator.throw(value)); } catch (e) { reject(e); } }; var step = (x) => x.done ? resolve(x.value) : Promise.resolve(x.value).then(fulfilled, rejected); step((generator = generator.apply(__this, __arguments)).next()); }); }; // src/SSOAuthorization.ts import Cookie from "js-cookie"; // src/APIRequest.ts import axios from "axios"; var APIRequest = class _APIRequest { static getInstance(baseAPIURL) { if (!_APIRequest.instance) { _APIRequest.instance = axios.create({ baseURL: baseAPIURL, headers: { "Content-Type": "application/json", accept: "application/json" } }); } return _APIRequest.instance; } static request(config, baseAPIURL) { return new Promise((resolve) => { _APIRequest.getInstance(baseAPIURL).request(config).then((result) => { resolve({ status: result.status, data: result.data }); }).catch((error) => { var _a, _b; resolve({ status: ((_a = error == null ? void 0 : error.response) == null ? void 0 : _a.status) || 403, data: ((_b = error == null ? void 0 : error.response) == null ? void 0 : _b.data) || { message: "Something went wrong" } }); }); }); } }; // src/SSOAuthorization.ts var ENV = /* @__PURE__ */ ((ENV2) => { ENV2["PROD"] = "prod"; ENV2["DEV"] = "dev"; return ENV2; })(ENV || {}); var ProjectType = /* @__PURE__ */ ((ProjectType2) => { ProjectType2["NEXTJS"] = "nextjs"; ProjectType2["VITE"] = "vite"; return ProjectType2; })(ProjectType || {}); var AUTH_KEY = /* @__PURE__ */ ((AUTH_KEY2) => { AUTH_KEY2["DEV"] = "dev_more_auth"; AUTH_KEY2["PROD"] = "prod_more_auth"; return AUTH_KEY2; })(AUTH_KEY || {}); var REFRESH_TOKEN_KEY = /* @__PURE__ */ ((REFRESH_TOKEN_KEY2) => { REFRESH_TOKEN_KEY2["DEV"] = "dev_more_auth"; REFRESH_TOKEN_KEY2["PROD"] = "prod_more_auth"; return REFRESH_TOKEN_KEY2; })(REFRESH_TOKEN_KEY || {}); var _SSOAuthorization = class _SSOAuthorization { static init(config) { _SSOAuthorization.env = config.env; _SSOAuthorization.redirectUrl = config.redirectUrl; _SSOAuthorization.app = config.app; _SSOAuthorization.idp = config.idp; } static login(redirectURL) { if (_SSOAuthorization.env && _SSOAuthorization.redirectUrl) { window.open( `${_SSOAuthorization.redirectUrl}?redirect=${redirectURL}`, "_self" ); } else { throw Error("SDK is not initialized"); } } static getToken(redirectURL) { return new Promise((resolve, reject) => { if (_SSOAuthorization.env && _SSOAuthorization.redirectUrl) { const refreshToken = Cookie.get( _SSOAuthorization.env === "prod" /* PROD */ ? "prod_more_auth" /* PROD */ : "dev_more_auth" /* DEV */ ); if (refreshToken) { const cookieName = `${_SSOAuthorization.app}_${_SSOAuthorization.env === "prod" /* PROD */ ? "prod_more_auth" /* PROD */ : "dev_more_auth" /* DEV */}`; const appToken = Cookie.get(cookieName); if (appToken) { return resolve({ token: appToken }); } else { const networkRequest = { method: "POST", data: { app_name: _SSOAuthorization.app, refresh_token: refreshToken }, url: "/refresh-token" }; return APIRequest.request(networkRequest, _SSOAuthorization.idp).then((result) => { var _a, _b, _c; const { data } = result; if ((_a = data.data) == null ? void 0 : _a.token) { const cookieName2 = `${_SSOAuthorization.app}_${_SSOAuthorization.env === "prod" /* PROD */ ? "prod_more_auth" /* PROD */ : "dev_more_auth" /* DEV */}`; Cookie.set(cookieName2, (_b = data.data) == null ? void 0 : _b.token, { domain: "localhost", secure: process.env.NODE_ENV === "production", path: "/", expires: 14 / 1440 }); Cookie.set(cookieName2, (_c = data.data) == null ? void 0 : _c.token, { domain: "more.in", secure: process.env.NODE_ENV === "production", path: "/", expires: 14 / 1440 }); return resolve(data == null ? void 0 : data.data); } else if (_SSOAuthorization.redirectUrl) { _SSOAuthorization.login(redirectURL); } return reject("Invalid token"); }).catch((error) => { if (_SSOAuthorization.redirectUrl) { _SSOAuthorization.login(redirectURL); return; } return reject(error); }); } } else { _SSOAuthorization.login(redirectURL); } reject("Token not found"); } else { throw Error("SDK is not initialized"); } }); } static logout(redirectURL) { return __async(this, null, function* () { if (_SSOAuthorization.env === "prod" /* PROD */) { const token = Cookie.get("prod_more_auth" /* PROD */); Object.keys(Cookie.get()).forEach((cookieName) => { if (cookieName && cookieName.includes("prod_more_auth" /* PROD */)) Cookie.remove(cookieName, { path: "", domain: "more.in" }); }); Cookie.remove("prod_more_auth" /* PROD */, { path: "", domain: "more.in" }); if (token) { yield _SSOAuthorization.callLogoutAPI(token); } } else { const token = Cookie.get("dev_more_auth" /* DEV */); Object.keys(Cookie.get()).forEach((cookieName) => { if (cookieName && cookieName.includes("dev_more_auth" /* DEV */)) Cookie.remove(cookieName, { path: "", domain: "more.in" }); }); Cookie.remove("dev_more_auth" /* DEV */, { path: "", domain: "localhost" }); Cookie.remove("dev_more_auth" /* DEV */, { path: "", domain: "more.in" }); if (token) { yield _SSOAuthorization.callLogoutAPI(token); } } if (redirectURL) { window.open( `${_SSOAuthorization.redirectUrl}?redirect=${redirectURL}`, "_self" ); } else { window.open(`${_SSOAuthorization.redirectUrl}`, "_self"); } }); } static getDevToken(username) { return new Promise((resolve, reject) => { if (_SSOAuthorization.env && _SSOAuthorization.redirectUrl) { const refreshToken = Cookie.get( _SSOAuthorization.env === "prod" /* PROD */ ? "prod_more_auth" /* PROD */ : "dev_more_auth" /* DEV */ ); if (refreshToken) { const cookieName = `${_SSOAuthorization.app}_${_SSOAuthorization.env === "prod" /* PROD */ ? "prod_more_auth" /* PROD */ : "dev_more_auth" /* DEV */}`; const appToken = Cookie.get(cookieName); if (appToken) { return resolve({ token: appToken }); } else { const networkRequest = { method: "POST", data: { app_name: _SSOAuthorization.app, refresh_token: refreshToken }, url: "/refresh-token" }; return APIRequest.request(networkRequest, _SSOAuthorization.idp).then((result) => { var _a, _b; const { data } = result; if ((_a = data.data) == null ? void 0 : _a.token) { const cookieName2 = `${_SSOAuthorization.app}_${_SSOAuthorization.env === "prod" /* PROD */ ? "prod_more_auth" /* PROD */ : "dev_more_auth" /* DEV */}`; Cookie.set(cookieName2, (_b = data.data) == null ? void 0 : _b.token, { domain: "localhost", secure: process.env.NODE_ENV === "production", path: "/", expires: 14 / 1440 }); return resolve(data == null ? void 0 : data.data); } else { return reject("Invalid token"); } }).catch((error) => { return reject(error); }); } } else { const networkRequest = { method: "POST", data: { app_name: _SSOAuthorization.app, username }, url: "/generate-developer-token" }; return APIRequest.request(networkRequest, _SSOAuthorization.idp).then((result) => { var _a, _b, _c, _d; const { data } = result; if (((_a = data.data) == null ? void 0 : _a.token) && ((_b = data == null ? void 0 : data.data) == null ? void 0 : _b.refresh_token)) { const cookieName = `${_SSOAuthorization.app}_${_SSOAuthorization.env === "prod" /* PROD */ ? "prod_more_auth" /* PROD */ : "dev_more_auth" /* DEV */}`; const refreshTokencookieName = _SSOAuthorization.env === "prod" /* PROD */ ? "prod_more_auth" /* PROD */ : "dev_more_auth" /* DEV */; Cookie.set(cookieName, (_c = data.data) == null ? void 0 : _c.token, { domain: "localhost", secure: process.env.NODE_ENV === "production", path: "/", expires: 14 / 1440 }); Cookie.set(refreshTokencookieName, (_d = data.data) == null ? void 0 : _d.refresh_token, { domain: "localhost", secure: process.env.NODE_ENV === "production", path: "/", expires: 14 / 1440 }); return resolve(data == null ? void 0 : data.data); } else { return reject("Invalid token"); } }).catch((error) => { return reject(error); }); } } else { throw Error("SDK is not initialized"); } }); } static getProfileDetails() { return new Promise((resolve, reject) => { if (_SSOAuthorization.env && _SSOAuthorization.redirectUrl) { const refreshToken = Cookie.get( _SSOAuthorization.env === "prod" /* PROD */ ? "prod_more_auth" /* PROD */ : "dev_more_auth" /* DEV */ ); if (refreshToken) { const cookieName = `${_SSOAuthorization.app}_${_SSOAuthorization.env === "prod" /* PROD */ ? "prod_more_auth" /* PROD */ : "dev_more_auth" /* DEV */}`; const appToken = Cookie.get(cookieName); if (appToken) { const networkRequest = { headers: { Authorization: `Bearer ${appToken}` }, url: "/profile" }; return APIRequest.request(networkRequest, _SSOAuthorization.idp).then((result) => { const { data } = result; if (data.data) { return resolve(data == null ? void 0 : data.data); } else { return reject("Invalid token"); } }).catch((error) => { return reject(error); }); } } } else { throw Error("SDK is not initialized"); } }); } }; _SSOAuthorization.callLogoutAPI = (refreshToken) => { const networkRequest = { method: "POST", data: { refresh_token: refreshToken }, url: "/logout" }; return APIRequest.request(networkRequest, _SSOAuthorization.idp).then((_) => { }).catch((_) => { }); }; var SSOAuthorization = _SSOAuthorization; // src/components/Avatar/index.tsx import { useMemo } from "react"; import { jsx, jsxs } from "react/jsx-runtime"; var Avatar = ({ name, employeeId, className, size = 100, onClick }) => { const fontSize = Math.round(size / 2.083); const gradients = useMemo( () => [ ["#203A43", "#2C5364"], ["#8E2DE2", "#4A00E0"], ["#FF416C", "#FF4B2B"], ["#ED213A", "#93291E"], ["#AD5389", "#3C1053"], ["#4E54C8", "#8F94FB"], ["#0F0C29", "#302B63"], ["#3C3B3F", "#605C3C"], ["#800080", "#FFC0CB"], ["#7F00FF", "#E100FF"], ["#396AFC", "#2948FF"], ["#CB356B", "#BD3F32"], ["#000046", "#1CB5E0"], ["#E44D26", "#F16529"], ["#C33764", "#1D2671"], ["#44A08D", "#093637"], ["#093028", "#237A57"], ["#EE0979", "#FF6A00"], ["#41295A", "#2F0743"], ["#FF00CC", "#333399"], ["#000428", "#004E92"], ["#141E30", "#243B55"], ["#FF4B1F", "#FF9068"], ["#834D9B", "#D04ED6"], ["#B24592", "#F15F79"], ["#E53935", "#E35D5B"], ["#00BF8F", "#001510"], ["#FF0084", "#33001B"], ["#6441A5", "#2A0845"], ["#4776E6", "#8E54E9"], ["#00C6FF", "#0072FF"], ["#F5515F", "#9F041B"], ["#F83600", "#F9D423"], ["#FF512F", "#DD2476"], ["#00DBDE", "#FC00FF"], ["#833AB4", "#FD1D1D"], ["#43C6AC", "#191654"], ["#FBD72B", "#F9484A"], ["#00B09B", "#96C93D"], ["#B24592", "#F15F79"], ["#24C6DC", "#514A9D"], ["#F53844", "#42378F"], ["#F45C43", "#EB3349"], ["#0575E6", "#021B79"], ["#7F00FF", "#E100FF"], ["#00D2FF", "#3A7BD5"], ["#F9D423", "#FF4E50"], ["#EE0979", "#FF6A00"], ["#FF512F", "#F09819"], ["#36D1DC", "#5B86E5"], ["#FF3CAC", "#784BA0"], ["#FF6CAB", "#7366FF"], ["#FFE53B", "#FF2525"], ["#21D4FD", "#B721FF"], ["#4E54C8", "#8F94FB"], ["#667EEA", "#764BA2"], ["#6EE2F5", "#6454F0"], ["#FF61D2", "#FE9090"], ["#00C6A7", "#1EAE98"], ["#92FFC0", "#002661"], ["#FF5858", "#F09819"], ["#00B4DB", "#0083B0"], ["#00FF87", "#60EFFA"], ["#F857A6", "#FF5858"], ["#4158D0", "#C850C0"], ["#00DBB6", "#0033FF"], ["#00FFA3", "#0072FF"], ["#FAD961", "#F76B1C"], ["#F43B47", "#453A94"], ["#00FFA1", "#00B3F4"], ["#0061FF", "#60EFFF"], ["#FF0F7B", "#F89B29"], ["#696EFF", "#F8ACFF"], ["#432371", "#FAAE7B"], ["#9BAFD9", "#103783"], ["#4DC9E6", "#210CAE"], ["#EF745C", "#34073D"], ["#919BFF", "#133A94"], ["#FFA8BD", "#242ACF"], ["#392D69", "#B57BEE"], ["#FCB0F3", "#3D05DD"], ["#30C5D2", "#471069"], ["#8711C1", "#2472FC"], ["#07C8F9", "#0D41E1"], ["#F44369", "#3E3B92"], ["#0965C0", "#C53A94"], ["#F74C06", "#F9BC2C"], ["#08203E", "#557C93"], ["#295270", "#524175"], ["#83489E", "#C5302E"], ["#C81D77", "#6710C2"], ["#243748", "#4B749F"], ["#2A454B", "#294861"], ["#F4119E", "#4A313E"], ["#C11E38", "#220B34"], ["#CF414B", "#852170"], ["#B15B86", "#440F50"], ["#B94C98", "#F0073B"], ["#FC4778", "#3952F5"], ["#2B0948", "#CE653B"], ["#3F3F42", "#5D5D3C"], ["#A106F4", "#E707FA"], ["#663177", "#C63F7B"], ["#020344", "#28B8D5"], ["#4A9B7F", "#0A3431"], ["#0968E5", "#091970"], ["#0B2C24", "#247A4D"], ["#E20B8C", "#F84B00"], ["#000328", "#00458E"], ["#1E6C8E", "#2E7775"], ["#F90C71", "#30001A"], ["#1F140D", "#9B8074"], ["#76030F", "#121B67"], ["#5E3719", "#B2A496"] ], [] ); const hash = useMemo(() => { const s = String(employeeId || ""); let h = 5381; for (let i = 0; i < s.length; i++) h = (h << 5) + h + s.charCodeAt(i); return Math.abs(h >>> 0); }, [employeeId]); const gradientPair = useMemo(() => { if (gradients.length === 0) return ["#000000", "#000000"]; const idx = hash % gradients.length; const pair = gradients[idx]; return (hash & 1) === 0 ? pair : [pair[1], pair[0]]; }, [hash, gradients]); const gradId = useMemo(() => `grad-${hash}-${size}`, [hash, size]); const initials = useMemo(() => { const raw = (name || "").trim(); if (!raw) return "??"; const parts = raw.split(/[.\s\-_]+/).filter(Boolean); if (parts.length >= 2) return (parts[0][0] + parts[parts.length - 1][0]).toUpperCase(); if (parts[0].length >= 2) return (parts[0][0] + parts[0][1]).toUpperCase(); return (parts[0][0] + parts[0][0]).toUpperCase(); }, [name]); return /* @__PURE__ */ jsxs( "svg", { width: size, height: size, viewBox: `0 0 ${size} ${size}`, role: "img", className, onClick, children: [ /* @__PURE__ */ jsx("defs", { children: /* @__PURE__ */ jsxs( "linearGradient", { id: gradId, x1: "0%", y1: "0%", x2: "100%", y2: "0%", gradientTransform: "rotate(45)", children: [ /* @__PURE__ */ jsx("stop", { offset: "0%", stopColor: gradientPair[0] }), /* @__PURE__ */ jsx("stop", { offset: "100%", stopColor: gradientPair[1] }) ] } ) }), /* @__PURE__ */ jsx( "rect", { x: "0", y: "0", width: size, height: size, fill: `url(#${gradId})`, rx: Math.round(size * 0.12) } ), /* @__PURE__ */ jsx( "text", { x: "50%", y: "50%", textAnchor: "middle", dominantBaseline: "central", fill: "#FFFFFF", fontFamily: "'DM Sans', system-ui, -apple-system, Segoe UI, Roboto, 'Helvetica Neue', Arial, 'Noto Sans', 'Apple Color Emoji', 'Segoe UI Emoji'", fontWeight: "600", fontSize, letterSpacing: "0.02em", children: initials } ) ] } ); }; // src/components/Loader/index.tsx import { useState, useEffect } from "react"; import { jsx as jsx2, jsxs as jsxs2 } from "react/jsx-runtime"; var Loader = () => { const [progress, setProgress] = useState(25); useEffect(() => { const interval = setInterval(() => { setProgress((progress2) => { if (progress2 !== 100) { return progress2 += 25; } return 0; }); }, 250); return () => { clearInterval(interval); }; }, []); return /* @__PURE__ */ jsxs2("div", { className: "flex flex-col relative w-screen h-screen items-center bg-white justify-center", children: [ /* @__PURE__ */ jsx2( "svg", { width: "154", height: "60", viewBox: "0 0 154 60", fill: "none", xmlns: "http://www.w3.org/2000/svg", children: /* @__PURE__ */ jsx2( "path", { d: "M77 0C121.92 6.55688e-05 153.885 17.4297 153.885 17.4297L141.7 60H12.2988L0.115234 17.4297C0.228219 17.3682 32.1594 0 77 0ZM123.161 22.2139C121.331 22.2139 119.596 22.5017 117.963 23.0879C116.33 23.6681 114.901 24.5118 113.687 25.6123C112.466 26.7129 111.503 28.0527 110.785 29.6377C110.068 31.2227 109.709 33.017 109.709 35.0146V36.0137C109.709 38.113 110.092 39.955 110.857 41.54C111.623 43.125 112.639 44.4594 113.907 45.542C115.175 46.6306 116.653 47.4438 118.334 47.9941C120.015 48.5444 121.755 48.8203 123.556 48.8203C124.985 48.8203 126.397 48.6344 127.778 48.2695C129.16 47.9047 130.422 47.3424 131.553 46.5947C132.689 45.8471 133.653 44.9144 134.454 43.7959L134.466 43.7891C135.267 42.6766 135.817 41.3485 136.116 39.8174H127.814C127.479 40.6847 126.929 41.2777 126.163 41.5947C125.398 41.9116 124.614 42.0664 123.812 42.0664C122.347 42.0663 121.193 41.6303 120.361 40.7451C119.53 39.8599 119.064 38.7528 118.962 37.4189H136.158C136.224 36.9825 136.26 36.5282 136.26 36.0439V34.668C136.26 32.4012 135.871 30.487 135.088 28.9199C134.304 27.3528 133.287 26.0663 132.037 25.0674C130.787 24.0626 129.393 23.3392 127.838 22.8906C126.283 22.4421 124.728 22.2139 123.161 22.2139ZM75.415 22.2139C73.5789 22.2139 71.8203 22.4953 70.1396 23.0635C68.4529 23.6317 66.9754 24.4574 65.6895 25.54C64.4095 26.6227 63.3808 27.957 62.6152 29.542C61.8497 31.121 61.4668 32.9452 61.4668 35.0146V36.0137C61.4668 38.0472 61.8497 39.8535 62.6152 41.4385C63.3808 43.0234 64.4036 44.3633 65.6895 45.4639C66.9754 46.5644 68.4589 47.3966 70.1396 47.9648C71.8263 48.533 73.5789 48.8134 75.415 48.8135C77.2513 48.8135 79.0106 48.5331 80.6914 47.9648C82.3721 47.3966 83.8672 46.5644 85.165 45.4639C86.4629 44.3633 87.5036 43.0235 88.2871 41.4385C89.0706 39.8534 89.46 38.0473 89.46 36.0137V35.0146C89.46 32.9511 89.0706 31.127 88.2871 29.542C87.5095 27.9569 86.463 26.6227 85.165 25.54C83.8672 24.4575 82.378 23.6317 80.6914 23.0635C79.0047 22.4952 77.2513 22.2139 75.415 22.2139ZM51.4141 22.2754C49.5479 22.2754 48.0167 22.5981 46.8145 23.25C45.6122 23.902 44.6488 24.9246 43.9131 26.3242H43.8115C43.2433 25.0923 42.3761 24.1116 41.21 23.376C40.0436 22.6403 38.5721 22.2754 36.8076 22.2754C34.9414 22.2754 33.4158 22.598 32.2314 23.25C31.0473 23.902 30.108 24.9247 29.4082 26.3242H29.3066L28.2061 23.0225H21.1064V48.0195H30.2578V33.167C30.2579 30.8644 31.2035 29.7158 33.1055 29.7158C34.8397 29.716 35.7069 30.8646 35.707 33.167V48.0312H44.8584V33.1797C44.8584 30.8768 45.804 29.7285 47.7061 29.7285C49.4404 29.7287 50.3076 30.877 50.3076 33.1797V48.0312H59.459V30.5293C59.459 29.363 59.3098 28.2801 59.0107 27.2812C58.7117 26.2765 58.2388 25.4153 57.5869 24.6797C56.935 23.944 56.1037 23.3634 55.0869 22.9268C54.0701 22.4901 52.8496 22.2754 51.4141 22.2754ZM105.946 22.8242C105.145 22.8242 104.397 22.9501 103.697 23.2012C102.997 23.4524 102.375 23.8237 101.824 24.3262C101.28 24.8225 100.838 25.4384 100.503 26.1738C100.168 26.9095 100 27.7417 100 28.6748H99.8506L98.2539 23.0215H91.4053V48.0186H100.545V36.3184C100.545 35.6186 100.611 34.9727 100.742 34.3926C100.874 33.8064 101.101 33.2978 101.418 32.8672C101.735 32.4366 102.178 32.0959 102.746 31.8447C103.314 31.5936 104.05 31.4678 104.947 31.4678H108.847V23.2197C108.446 23.0523 107.98 22.9443 107.447 22.8965C106.915 22.8486 106.413 22.8242 105.946 22.8242ZM75.4629 29.3145C77.1616 29.3145 78.4059 29.913 79.1895 31.1152C79.9728 32.3114 80.3622 33.7286 80.3623 35.4629C80.3623 37.1974 79.9729 38.663 79.1895 39.8652C78.4059 41.0675 77.1616 41.666 75.4629 41.666C73.7644 41.6659 72.5208 41.0674 71.7373 39.8652C70.9538 38.663 70.5645 37.1616 70.5645 35.4629C70.5645 33.7644 70.9538 32.3174 71.7373 31.1152C72.5208 29.913 73.7644 29.3145 75.4629 29.3145ZM123.358 28.1182C124.626 28.1182 125.607 28.5253 126.307 29.3447H126.313C127.013 30.1641 127.366 31.1213 127.366 32.2217H119.063C119.159 31.1211 119.555 30.1642 120.236 29.3447C120.918 28.5253 121.959 28.1182 123.358 28.1182Z", fill: "#FA4B16" } ) } ), /* @__PURE__ */ jsx2("div", { className: "absolute bottom-6 w-[200px] bg-neutral-20 rounded-full h-1", children: /* @__PURE__ */ jsx2( "div", { className: "bg-gradient-to-r from-orange-60 to-orange-70 h-1 rounded-full transition-all duration-250 ease-linear", style: { width: `${progress}%` } } ) }) ] }); }; export { AUTH_KEY, Avatar, ENV, Loader, ProjectType, REFRESH_TOKEN_KEY, SSOAuthorization };