UNPKG

openstack-uicore-foundation

Version:

ui reactjs components for openstack marketing site

2 lines 13 kB
!function(e,o){"object"==typeof exports&&"object"==typeof module?module.exports=o():"function"==typeof define&&define.amd?define("openstack-uicore-foundation",[],o):"object"==typeof exports?exports["openstack-uicore-foundation"]=o():e["openstack-uicore-foundation"]=o()}(this,(()=>(()=>{"use strict";var e={5097:(e,o,t)=>{t.d(o,{SET_LOGGED_USER:()=>n});t(1116),t(6842),t(9087),t(9558),t(2183);const n="SET_LOGGED_USER"},3195:(e,o,t)=>{t.d(o,{AUTH_ERROR_ACCESS_TOKEN_EXPIRED:()=>i,AUTH_ERROR_ID_TOKEN_INVALID:()=>s,AUTH_ERROR_LOCK_ACQUIRE_ERROR:()=>a,AUTH_ERROR_MISSING_AUTH_INFO:()=>n,AUTH_ERROR_MISSING_NONCE_PARAM:()=>d,AUTH_ERROR_MISSING_OTP_PARAM:()=>l,AUTH_ERROR_MISSING_PKCE_PARAM:()=>u,AUTH_ERROR_MISSING_REFRESH_TOKEN:()=>r,AUTH_ERROR_REFRESH_TOKEN_REQUEST_ERROR:()=>c});const n="AUTH_ERROR_MISSING_AUTH_INFO",r="AUTH_ERROR_MISSING_REFRESH_TOKEN",i="AUTH_ERROR_ACCESS_TOKEN_EXPIRED",a="AUTH_ERROR_LOCK_ACQUIRE_ERROR",c="AUTH_ERROR_REFRESH_TOKEN_REQUEST_ERROR",s="AUTH_ERROR_ID_TOKEN_INVALID",l="AUTH_ERROR_MISSING_OTP_PARAM",u="AUTH_ERROR_MISSING_PKCE_PARAM",d="AUTH_ERROR_MISSING_NONCE_PARAM"},2183:(e,o,t)=>{t.r(o),t.d(o,{ACCESS_TOKEN_SKEW_TIME:()=>O,RESPONSE_TYPE_CODE:()=>T,RESPONSE_TYPE_IMPLICIT:()=>h,clearAccessToken:()=>x,clearAuthInfo:()=>j,doLogin:()=>P,doLoginBasicLogin:()=>H,emitAccessToken:()=>L,getAccessToken:()=>v,getAuthInfo:()=>K,getAuthUrl:()=>U,getIdToken:()=>q,getLogoutUrl:()=>m,getOAuth2ClientId:()=>D,getOAuth2Flow:()=>$,getOAuth2IDPBaseUrl:()=>Q,getOAuth2Scopes:()=>V,initLogOut:()=>J,isIdTokenAlive:()=>Y,passwordlessLogin:()=>X,passwordlessStart:()=>W,refreshAccessToken:()=>G,storeAuthInfo:()=>F,useOAuth2RefreshToken:()=>B,validateIdToken:()=>z});var n=t(9558),r=t(5812),i=t.n(r),a=t(806),c=t.n(a);const s=require("browser-tabs-lock");var l=t.n(s);const u=require("js-cookie");var d=t.n(u),_=t(8041),R=t.n(_),p=t(9891),E=t.n(p),f=t(5097),S=t(8853),w=t(3195);let g=c();const Lock=new(l()),GET_TOKEN_SILENTLY_LOCK_KEY="openstackuicore.lock.getTokenSilently",O=60,h="token id_token",T="code",A="authInfo",I="nonce",y="pkce",k="idToken",U=(e=null,o=null,t=null,r=null,i=null,a=null,c=null)=>{let s=D(),l=(0,n.getAuthCallback)(),u=Q(),d=V(),_=$();null!=e&&(l+=`?BackUrl=${encodeURI(e)}`);let p=N(16);(0,n.putOnLocalStorage)(I,p);let E=R()(`${u}/oauth2/auth`),f={response_type:encodeURI(_),scope:encodeURI(d),nonce:p,response_mode:"fragment",client_id:encodeURI(s),redirect_uri:encodeURI(l)};if(_===T){const e=C();(0,n.putOnLocalStorage)(y,JSON.stringify(e)),f.code_challenge=e.codeChallenge,f.code_challenge_method="S256",f.approval_prompt="force"}return o&&(f.prompt=o),d&&d.includes("offline_access")&&(f.prompt="consent"),t&&(f.id_token_hint=t),r&&(f.provider=r),a&&(f.otp_login_hint=a),i&&(f.login_hint=encodeURI(i)),c&&(f.tenant=c),E=E.query(f),E},m=(e=null)=>{let o=Q(),t=D(),r=R()(`${o}/oauth2/end-session`),i=N(16),a=`${(0,n.getOrigin)()}/auth/logout`;(0,n.putOnLocalStorage)("post_logout_state",i);const c={post_logout_redirect_uri:encodeURI(a),client_id:encodeURI(t),state:i};return e&&(c.id_token_hint=e),r.query(c)},N=e=>{let o="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789",t="";for(let n=0;n<e;n++)t+=o.charAt(Math.floor(62*Math.random()));return t},P=(e=null,o=null,t=null,r=null,i=null,a=null)=>{let c=U(e,t,null,o,r,i,a);(0,n.getCurrentLocation)().replace(c.toString())},H=(e=null,o=null,t=null)=>{P(e,null,null,o,t)},C=()=>{const e=(0,n.base64URLEncode)((0,S.dz)(64));return{codeVerifier:e,codeChallenge:(0,S.gl)(e,"Base64url"),createdAt:new Date}},L=async(e,o=null)=>{let t=Q(),r=D(),i=(0,n.getAuthCallback)(),a=JSON.parse((0,n.getFromLocalStorage)(y,!0));if(!a)throw Error(w.AUTH_ERROR_MISSING_PKCE_PARAM);null!=o&&(i+=`?BackUrl=${encodeURI(o)}`);const c={code:e,grant_type:"authorization_code",code_verifier:a.codeVerifier,client_id:encodeURI(r),redirect_uri:encodeURI(i)};try{const e=await fetch(`${t}/oauth2/token`,{method:"POST",headers:{Accept:"application/json","Content-Type":"application/json"},body:JSON.stringify(c)}).catch((function(e){console.log("Request failed:",e.message)})),o=await e.json();let{access_token:n,refresh_token:r,id_token:i,expires_in:a,error:s,error_description:l}=o;return{access_token:n,refresh_token:r,id_token:i,expires_in:a,error:s,error_description:l}}catch(e){console.log(e)}},b=async()=>{console.log("openstack-uicore-foundation::Security::methods::_getAccessToken");let e=K();if(!e)throw console.log("openstack-uicore-foundation::Security::methods::_getAccessToken AUTH_ERROR_MISSING_AUTH_INFO"),Error(w.AUTH_ERROR_MISSING_AUTH_INFO);let{accessToken:o,expiresIn:t,accessTokenUpdatedAt:n,refreshToken:r}=e,a=$();const c=i()().unix();let s=c-n;return t-=O,console.log(`openstack-uicore-foundation::Security::methods::_getAccessToken now ${c} accessTokenUpdatedAt ${n} expiresIn ${t} timeElapsedSecs ${s}`),(s>=t||null==o)&&(console.log("openstack-uicore-foundation::Security::methods::_getAccessToken access token expired, refreshing it ..."),o=await(async(e,o)=>{if(e===T&&B()){if(!o)throw j(),Error(w.AUTH_ERROR_MISSING_REFRESH_TOKEN);let e=await G(o),{access_token:t,expires_in:n,refresh_token:r,id_token:i}=e;return void 0===r&&(r=null),F(t,n,r,i),t}throw j(),Error(w.AUTH_ERROR_ACCESS_TOKEN_EXPIRED)})(a,r)),o},v=async()=>{var e;if(null!==(e=navigator)&&void 0!==e&&e.locks)return await navigator.locks.request(GET_TOKEN_SILENTLY_LOCK_KEY,(async e=>(console.log("openstack-uicore-foundation::Security::methods::getAccessToken web lock api",e),await b())));if(!await(0,n.retryPromise)((()=>Lock.acquireLock(GET_TOKEN_SILENTLY_LOCK_KEY,6e3)),10))throw Error(w.AUTH_ERROR_LOCK_ACQUIRE_ERROR);try{return await b()}finally{await Lock.releaseLock(GET_TOKEN_SILENTLY_LOCK_KEY)}},M=()=>{console.log("openstack-uicore-foundation::Security::methods::_clearAccessToken");let e=K();if(!e)throw console.log("openstack-uicore-foundation::Security::methods::_clearAccessToken AUTH_ERROR_MISSING_AUTH_INFO"),Error(w.AUTH_ERROR_MISSING_AUTH_INFO);let{accessToken:o,expiresIn:t,accessTokenUpdatedAt:n,refreshToken:r}=e;F(null,0,r)},x=async()=>{var e;if(null!==(e=navigator)&&void 0!==e&&e.locks)await navigator.locks.request(GET_TOKEN_SILENTLY_LOCK_KEY,(async e=>{console.log("openstack-uicore-foundation::Security::methods::clearAccessToken web lock api",e),M()}));else{if(!await(0,n.retryPromise)((()=>Lock.acquireLock(GET_TOKEN_SILENTLY_LOCK_KEY,6e3)),10))throw Error(w.AUTH_ERROR_LOCK_ACQUIRE_ERROR);try{M()}finally{await Lock.releaseLock(GET_TOKEN_SILENTLY_LOCK_KEY)}}},G=async e=>{let o=Q(),t=D();const r={grant_type:"refresh_token",client_id:encodeURI(t),refresh_token:e};try{const e=await fetch(`${o}/oauth2/token`,{method:"POST",headers:{Accept:"application/json","Content-Type":"application/json"},body:JSON.stringify(r)}).then((e=>{if(400===e.status){(0,n.getCurrentPathName)();throw(0,n.setSessionClearingState)(!0),Error(`${w.AUTH_ERROR_REFRESH_TOKEN_REQUEST_ERROR}: ${e.status} - ${e.statusText}`)}return e})).catch((function(e){throw Error(`${w.AUTH_ERROR_REFRESH_TOKEN_REQUEST_ERROR}: ${e.message}`)})),t=await e.json();let{access_token:i,refresh_token:a,expires_in:c,id_token:s}=t;return{access_token:i,refresh_token:a,expires_in:c,id_token:s}}catch(e){throw console.log(e),e}},F=(e,o,t=null,r=null)=>{let i=K(),a={accessToken:e,expiresIn:o,accessTokenUpdatedAt:Math.floor(Date.now()/1e3)};null==t&&i&&(t=i.refreshToken),null==r&&i&&(r=i.idToken),t&&(a.refreshToken=t),r?(a[k]=r,d().set(k,r,{secure:!0,sameSite:"Lax"})):d().remove(k),(0,n.putOnLocalStorage)(A,JSON.stringify(a))},K=()=>{try{let e=(0,n.getFromLocalStorage)(A,!1);return e?JSON.parse(e):null}catch(e){return null}},j=()=>{"undefined"!=typeof window&&((0,n.removeFromLocalStorage)(A),d().remove(k))},q=()=>{if("undefined"!=typeof window){const e=K();return e?e.idToken:null}return null},D=()=>"undefined"!=typeof window?window.OAUTH2_CLIENT_ID:null,$=()=>"undefined"!=typeof window&&window.OAUTH2_FLOW||"token id_token",B=()=>"undefined"==typeof window||new Boolean(window.OAUTH2_USE_REFRESH_TOKEN||!0),Q=()=>"undefined"!=typeof window?window.IDP_BASE_URL:null,V=()=>"undefined"!=typeof window?window.SCOPES:null,J=()=>{(0,n.getCurrentLocation)().replace(m(q()).toString())},z=(e,o,t)=>{let r=new(E())({issuer:o,audience:t}),i=(0,n.getFromLocalStorage)(I,!0);if(!i)throw Error(w.AUTH_ERROR_MISSING_NONCE_PARAM);let a=r.decode(e),c=(a.header.alg,a.header.kid,a.payload.aud),s=a.payload.iss;a.payload.exp,a.payload.nbf;return(a.payload.nonce||null)==i&&c==t&&s==o},W=e=>{let o=D(),t=V(),r=N(16);(0,n.putOnLocalStorage)(I,r);let i=Q(),a=R()(`${i}/oauth2/auth`),c={response_type:"otp",scope:encodeURI(t),nonce:r,client_id:encodeURI(o),connection:e.connection||"email",send:e.send||"code"};return e.hasOwnProperty("email")&&(c.email=encodeURIComponent(e.email)),e.hasOwnProperty("phone_number")&&(c.phone_number=encodeURIComponent(e.phone_number)),e.hasOwnProperty("redirect_uri")&&(c.redirect_uri=encodeURIComponent(e.redirect_uri)),g.post(a.toString()).send(c).then((e=>{let o=e.body;return Promise.resolve({response:o})})).catch((e=>Promise.reject(e)))},X=e=>o=>{let t=D(),n=V(),r=Q(),i=R()(`${r}/oauth2/token`);if(!e.hasOwnProperty("otp"))throw Error(w.AUTH_ERROR_MISSING_OTP_PARAM);let a={grant_type:"passwordless",connection:e.connection||"email",scope:encodeURI(n),client_id:encodeURI(t),otp:e.otp};return e.hasOwnProperty("email")&&(a.email=encodeURIComponent(e.email)),e.hasOwnProperty("phone_number")&&(a.phone_number=encodeURIComponent(e.phone_number)),g.post(i.toString()).send(a).then((e=>{try{let n=e.body,{access_token:i,expires_in:a,refresh_token:c,id_token:s}=n;if(void 0===c&&(c=null),void 0===s&&(s=null),s&&!z(s,r,t))throw Error(w.AUTH_ERROR_ID_TOKEN_INVALID);return F(i,a,c,s),o&&o({type:f.SET_LOGGED_USER,payload:{sessionState:null}}),Promise.resolve({response:n})}catch(e){return console.log(e),Promise.reject(e)}})).catch((e=>Promise.reject(e)))},Y=(e=null)=>()=>{e||(e=Math.floor(Date.now()/1e3));const o=q();if(!o)throw Error("Id Token not set.");const t=Q(),n=D();return new(E())({issuer:t,audience:n}).decode(o).payload.exp-(e+O)>0}},9087:(e,o,t)=>{t(2462),t(806);var n=t(8041),r=t.n(n);t(9236),t(6842),t(9558),t(5097),t(2183);r().escapeQuerySpace=!1;const i=e=>o=>({type:e,payload:o});i("RESET_LOADING"),i("START_LOADING"),i("STOP_LOADING")},8853:(e,o,t)=>{t.d(o,{dz:()=>_,gl:()=>R});require("spark-md5");const n=require("crypto-js/sha256");var r=t.n(n);const i=require("crypto-js/enc-base64url");var c=t.n(i);const s=require("crypto-js/enc-hex");var l=t.n(s);const u=65536,d="undefined"!=typeof window?window.crypto||window.msCrypto:null,_=e=>{if(e>4294967295)throw new RangeError("requested too many random bytes");const o=Buffer.allocUnsafe(e);if(!d)return a;if(e>0)if(e>u)for(let t=0;t<e;t+=u)d.getRandomValues(o.slice(t,t+u));else d.getRandomValues(o);return o},R=(e,o="hex")=>{let t=l();return"Base64url"===o&&(t=c()),r()(e).toString(t)}},9558:(e,o,t)=>{t.d(o,{base64URLEncode:()=>d,getAuthCallback:()=>n,getCurrentLocation:()=>r,getCurrentPathName:()=>a,getFromLocalStorage:()=>s,getOrigin:()=>i,putOnLocalStorage:()=>c,removeFromLocalStorage:()=>l,retryPromise:()=>_,setSessionClearingState:()=>u});t(5812),t(8041);const n=()=>"undefined"!=typeof window?`${window.location.origin}/auth/callback`:null,r=()=>{let e="";return"undefined"!=typeof window&&(e=window.location,window.top&&(e=window.top.location)),e},i=()=>"undefined"!=typeof window?window.location.origin:null,a=()=>"undefined"!=typeof window?window.location.pathname:null,c=(e,o)=>{"undefined"!=typeof window&&window.localStorage.setItem(e,o)},s=(e,o)=>{if("undefined"!=typeof window){let t=window.localStorage.getItem(e);return o&&(console.log(`getFromLocalStorage removing key ${e}`),l(e)),t}return null},l=e=>{"undefined"!=typeof window&&window.localStorage.removeItem(e)},u=e=>{"undefined"!=typeof window&&(window.clearing_session_state=e)},d=e=>e.toString("base64").replace(/\+/g,"-").replace(/\//g,"_").replace(/=/g,""),_=async(e,o=3)=>{for(let t=0;t<o;t++)if(await e())return!0;return!1}},1116:e=>{e.exports=require("@babel/runtime/helpers/defineProperty")},2462:e=>{e.exports=require("@babel/runtime/helpers/objectWithoutProperties")},6842:e=>{e.exports=require("i18n-react/dist/i18n-react")},9891:e=>{e.exports=require("idtoken-verifier")},5812:e=>{e.exports=require("moment-timezone")},806:e=>{e.exports=require("superagent/lib/client")},9236:e=>{e.exports=require("sweetalert2")},8041:e=>{e.exports=require("urijs")}},o={};function t(n){var r=o[n];if(void 0!==r)return r.exports;var i=o[n]={exports:{}};return e[n](i,i.exports,t),i.exports}return(()=>{t.n=e=>{var o=e&&e.__esModule?()=>e.default:()=>e;return t.d(o,{a:o}),o}})(),(()=>{t.d=(e,o)=>{for(var n in o)t.o(o,n)&&!t.o(e,n)&&Object.defineProperty(e,n,{enumerable:!0,get:o[n]})}})(),(()=>{t.o=(e,o)=>Object.prototype.hasOwnProperty.call(e,o)})(),(()=>{t.r=e=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})}})(),t(2183)})())); //# sourceMappingURL=methods.js.map