UNPKG

@krashnakant/next-keycloak

Version:

An authentication library based on Keycloak for NextJs applications

77 lines (70 loc) 2.14 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: !0 }); var e = require("react"); const isServer = () => "undefined" == typeof window, getUserFromToken = e => { const t = parseToken(e); return { sub: t.sub, email: t.email, name: t.given_name, family: t.family_name }; }, parseToken = e => { const t = e.split(".")[1].replace("-", "+").replace("_", "/"), n = decodeURIComponent(atob(t).split("").map((function(e) { return "%" + ("00" + e.charCodeAt(0).toString(16)).slice(-2); })).join("")); return JSON.parse(n); }, t = isServer() ? null : require("keycloak-js"); let n = t; const o = e.createContext({ loading: !0, authenticated: !1, login: e => {}, logout: e => {}, register: e => {}, hasRealmRole: e => !1, accountManagement: () => {} }); exports.NextKeycloakAuthProvider = ({children: a, config: r, initOption: i}) => { const l = ((t, n = {}) => { const [o, a] = e.useState(); e.useEffect((() => { t && initialize(); }), []); const initialize = async () => { try { await t.init(n), a(t); } catch (e) { console.error("failed to initialize keycloak"); } }; return { loading: !(null != o && o.authenticated && void 0 !== o.token), token: o ? o.token : "", authenticated: !!o && Boolean(o.authenticated), userInfo: null != o && o.authenticated ? getUserFromToken(String(o.token)) : void 0, login: e => { if (o) return o.login(e); }, logout: e => { if (void 0 !== o) return o.logout(e); }, register: e => { if (o) return o.register(e); }, hasRealmRole: e => !!o && o.hasRealmRole(e), accountManagement: () => { if (o) return o.accountManagement(); } }; })(e.useMemo((() => (e => { if (!isServer()) return n = "function" == typeof t.default ? new t.default(e) : new t(e), n; })(r)), [ r ]), i); return e.createElement(o.Provider, { value: l }, a); }, exports.useNextKeycloakAuth = () => e.useContext(o); //# sourceMappingURL=next-keycloak.cjs.production.min.cjs.map