UNPKG

keycloak-js

Version:
6 lines 3 kB
(function(q,p){var h=function(k,h){var f=this;this.rpt=null;this.init=function(){var a=new XMLHttpRequest;a.open("GET",k.authServerUrl+"/realms/"+k.realm+"/.well-known/uma2-configuration");a.onreadystatechange=function(){4==a.readyState&&(200==a.status?f.config=JSON.parse(a.responseText):console.error("Could not obtain configuration from server."))};a.send(null)};this.authorize=function(a){this.then=function(e,h,m){if(a&&a.ticket){var d=new XMLHttpRequest;d.open("POST",f.config.token_endpoint,!0); d.setRequestHeader("Content-type","application/x-www-form-urlencoded");d.setRequestHeader("Authorization","Bearer "+k.token);d.onreadystatechange=function(){if(4==d.readyState){var a=d.status;200<=a&&300>a?(a=JSON.parse(d.responseText).access_token,f.rpt=a,e(a)):403==a?h?h():console.error("Authorization request was denied by the server."):m?m():console.error("Could not obtain authorization data from server.")}};var c="grant_type\x3durn:ietf:params:oauth:grant-type:uma-ticket\x26client_id\x3d"+k.clientId+ "\x26ticket\x3d"+a.ticket;a.submitRequest!=p&&(c+="\x26submit_request\x3d"+a.submitRequest);var b=a.metadata;b&&(b.responseIncludeResourceName&&(c+="\x26response_include_resource_name\x3d"+b.responseIncludeResourceName),b.responsePermissionsLimit&&(c+="\x26response_permissions_limit\x3d"+b.responsePermissionsLimit));f.rpt&&(a.incrementalAuthorization==p||a.incrementalAuthorization)&&(c+="\x26rpt\x3d"+f.rpt);d.send(c)}};return this};this.entitlement=function(a,e){this.then=function(h,m,d){var c=new XMLHttpRequest; c.open("POST",f.config.token_endpoint,!0);c.setRequestHeader("Content-type","application/x-www-form-urlencoded");c.setRequestHeader("Authorization","Bearer "+k.token);c.onreadystatechange=function(){if(4==c.readyState){var a=c.status;200<=a&&300>a?(a=JSON.parse(c.responseText).access_token,f.rpt=a,h(a)):403==a?m?m():console.error("Authorization request was denied by the server."):d?d():console.error("Could not obtain authorization data from server.")}};e||(e={});var b="grant_type\x3durn:ietf:params:oauth:grant-type:uma-ticket\x26client_id\x3d"+ k.clientId;e.claimToken&&(b+="\x26claim_token\x3d"+e.claimToken,e.claimTokenFormat&&(b+="\x26claim_token_format\x3d"+e.claimTokenFormat));var b=b+("\x26audience\x3d"+a),g=e.permissions;g||(g=[]);for(i=0;i<g.length;i++){var n=g[i],l=n.id;if(n.scopes&&0<n.scopes.length)for(l+="#",j=0;j<n.scopes.length;j++){var p=n.scopes[j];l.indexOf("#")!=l.length-1&&(l+=",");l+=p}b+="\x26permission\x3d"+l}if(g=e.metadata)g.responseIncludeResourceName&&(b+="\x26response_include_resource_name\x3d"+g.responseIncludeResourceName), g.responsePermissionsLimit&&(b+="\x26response_permissions_limit\x3d"+g.responsePermissionsLimit);f.rpt&&(b+="\x26rpt\x3d"+f.rpt);c.send(b)};return this};this.init(this);return this};"object"===typeof module&&module&&"object"===typeof module.exports?module.exports=h:(q.KeycloakAuthorization=h,"function"===typeof define&&define.amd&&define("keycloak-authorization",[],function(){return h}))})(window);