@auth0-kits/server
Advanced tools
Comparing version 1.2.0 to 1.3.0
{ | ||
"name": "@auth0-kits/server", | ||
"version": "1.2.0", | ||
"version": "1.3.0", | ||
"description": "", | ||
@@ -5,0 +5,0 @@ "main": "index.js", |
@@ -6,6 +6,10 @@ const querystring = require('querystring'); | ||
const TOKEN_URL = '/oauth/token'; | ||
const MANAGEMENT_API_AUDIENCE = '/api/v2/'; | ||
const USER_URL = '/api/v2/users/'; | ||
const LINK_ACCOUNTS_URL = '/identities'; | ||
const CLIENT_URL = `${MANAGEMENT_API_AUDIENCE}/clients`; | ||
const USER_URL = `${MANAGEMENT_API_AUDIENCE}/users`; | ||
const USER_IDENTITIES_URL = '/identities'; | ||
const USER_ROLES_URL = '/roles'; | ||
class Auth0Service { | ||
@@ -40,2 +44,4 @@ /** | ||
this.cachedManagementApiToken = null; | ||
this.tracer = tracer || new Tracer({ log, silent: !debug }); | ||
@@ -55,2 +61,7 @@ } | ||
if (this.cachedManagementApiToken) { | ||
this.tracer.crumb({ cached: this.cachedManagementApiToken }); | ||
return this.tracer.dump(this.cachedManagementApiToken); | ||
} | ||
const client_id = clientId || this.clientId; | ||
@@ -220,2 +231,14 @@ const client_secret = clientSecret || this.clientSecret; | ||
let managementToken; | ||
try { | ||
managementToken = await this.getManagementApiToken(); | ||
this.tracer.crumb({ managementToken }); | ||
if (!managementToken) { | ||
throw new Error('Cannot get user info because managementToken is null.'); | ||
} | ||
} catch (error) { | ||
throw this.tracer.break(error); | ||
} | ||
const body = querystring.stringify({ | ||
@@ -228,3 +251,3 @@ link_with: secondaryToken, | ||
try { | ||
const url = `${this.auth0TenantUrl}${USER_URL}/${primaryAccountUserId}/${LINK_ACCOUNTS_URL}`; | ||
const url = `${this.auth0TenantUrl}${USER_URL}/${primaryAccountUserId}/${USER_IDENTITIES_URL}`; | ||
this.tracer.crumb({ url }); | ||
@@ -235,3 +258,6 @@ | ||
body, | ||
headers: { 'Content-Type': 'application/x-www-form-urlencoded' }, | ||
headers: { | ||
'Content-Type': 'application/x-www-form-urlencoded', | ||
'Authorization': `Bearer ${managementToken}`, | ||
}, | ||
}); | ||
@@ -248,4 +274,120 @@ | ||
} | ||
async getClientMetadata() { | ||
this.tracer.trace('linkAccounts'); | ||
let managementToken; | ||
try { | ||
managementToken = await this.getManagementApiToken(); | ||
this.tracer.crumb({ managementToken }); | ||
if (!managementToken) { | ||
throw new Error('Cannot get user info because managementToken is null.'); | ||
} | ||
} catch (error) { | ||
throw this.tracer.break(error); | ||
} | ||
const clientUrl = `${this.auth0TenantUrl}${CLIENT_URL}/${this.clientId}`; | ||
const requestUrl = `${clientUrl}?fields=client_metadata&include_fields=true`; | ||
this.tracer.crumb({ clientUrl, requestUrl }); | ||
let response; | ||
try { | ||
response = await fetch(requestUrl, { | ||
method: 'GET', | ||
headers: { 'Authorization': `Bearer ${managementToken}` }, | ||
}); | ||
const { headers, status, statusText } = response; | ||
this.tracer.crumb({ headers, status, statusText }); | ||
} catch (error) { | ||
throw this.tracer.break(error); | ||
} | ||
const responseJson = await response.json(); | ||
this.tracer.crumb({ responseJson }); | ||
const metadata = responseJson.client_metadata || null; | ||
return this.tracer.dump(metadata); | ||
} | ||
async assignUserRole(userId, ...rolesIds) { | ||
this.tracer.trace('assignUserRole', { userId, rolesIds }); | ||
let managementToken; | ||
try { | ||
managementToken = await this.getManagementApiToken(); | ||
this.tracer.crumb({ managementToken }); | ||
if (!managementToken) { | ||
throw new Error('Cannot get user info because managementToken is null.'); | ||
} | ||
} catch (error) { | ||
throw this.tracer.break(error); | ||
} | ||
const body = JSON.stringify({ roles: rolesIds }); | ||
this.tracer.crumb({ body }); | ||
let response; | ||
try { | ||
const url = `${this.auth0TenantUrl}${USER_URL}/${userId}/${USER_ROLES_URL}`; | ||
this.tracer.crumb({ url }); | ||
response = await fetch(url, { | ||
method: 'POST', | ||
body, | ||
headers: { | ||
'Content-Type': 'application/json', | ||
'Authorization': `Bearer ${managementToken}`, | ||
}, | ||
}); | ||
const { headers, status, statusText } = response; | ||
this.tracer.crumb({ headers, status, statusText }); | ||
} catch (error) { | ||
throw this.tracer.break(error); | ||
} | ||
const success = response.status < 400; | ||
return this.tracer.dump(success); | ||
} | ||
async deleteUser(userId) { | ||
this.tracer.trace('deleteUser', { userId }); | ||
let managementToken; | ||
try { | ||
managementToken = await this.getManagementApiToken(); | ||
this.tracer.crumb({ managementToken }); | ||
if (!managementToken) { | ||
throw new Error('Cannot get user info because managementToken is null.'); | ||
} | ||
} catch (error) { | ||
throw this.tracer.break(error); | ||
} | ||
let response; | ||
try { | ||
const url = `${this.auth0TenantUrl}${USER_URL}/${userId}`; | ||
this.tracer.crumb({ url }); | ||
response = await fetch(url, { | ||
method: 'DELETE', | ||
headers: { 'Authorization': `Bearer ${managementToken}` }, | ||
}); | ||
const { headers, status, statusText } = response; | ||
this.tracer.crumb({ headers, status, statusText }); | ||
} catch (error) { | ||
throw this.tracer.break(error); | ||
} | ||
const success = response.status < 400; | ||
return this.tracer.dump(success); | ||
} | ||
} | ||
module.exports = Auth0Service; |
License Policy Violation
LicenseThis package is not allowed per your license policy. Review the package's license to ensure compliance.
Found 1 instance in 1 package
License Policy Violation
LicenseThis package is not allowed per your license policy. Review the package's license to ensure compliance.
Found 1 instance in 1 package
12605
350
9