From d337d5f177bf60ff0f7eaf6ff79158036bf8e63a Mon Sep 17 00:00:00 2001 From: James Pace Date: Mon, 6 May 2019 09:15:18 +0100 Subject: [PATCH] Add roles permissions management for Auth0 (#35116) --- types/auth0/auth0-tests.ts | 165 +++++++++++++++++++++++++++++++++++++ types/auth0/index.d.ts | 146 +++++++++++++++++++++++++++++++- 2 files changed, 310 insertions(+), 1 deletion(-) diff --git a/types/auth0/auth0-tests.ts b/types/auth0/auth0-tests.ts index ba3b5f832e..3f9a6de51d 100644 --- a/types/auth0/auth0-tests.ts +++ b/types/auth0/auth0-tests.ts @@ -184,6 +184,80 @@ management.getUsersByEmail('email@address.com').then((users) => { console.log(users); }); +management.getUserRoles({id: "user_id"}).then(roles => console.log(roles)); +management.getUserRoles({id: "user_id"}, (err, data) => console.log(data)); +management.getUserRoles({id: "user_id", per_page: 3}).then(roles => console.log(roles)); +management.getUserRoles({id: "user_id", per_page: 3}, (err, data) => console.log(data)); +management.getUserRoles({id: "user_id", include_totals: true}).then(rolePage => console.log(rolePage)); +management.getUserRoles({id: "user_id", include_totals: true}, (err, data) => console.log(data)); + +management.removeRolesFromUser({id: "user_id"}, { roles: [ "role_id" ] }) + .then(() => console.log("It worked")) + .catch(err => console.log("Something went wrong " + err)); +management.removeRolesFromUser({id: "user_id"}, { roles: [ "role_id" ] }, err => { + if (err) { + console.error("Something went wrong " + err); + } else { + console.log("It worked"); + } +}); + +management.assignRolestoUser({id: "user_id"}, { roles: [ "role_id" ] }) + .then(() => console.log("It worked")) + .catch(err => console.log("Something went wrong " + err)); +management.assignRolestoUser({id: "user_id"}, { roles: [ "role_id" ] }, err => { + if (err) { + console.error("Something went wrong " + err); + } else { + console.log("It worked"); + } +}); + +management.getUserPermissions({id: "user_id"}).then(permissions => console.log(permissions)); +management.getUserPermissions({id: "user_id"}, (err, data) => console.log(data)); +management.getUserPermissions({id: "user_id", per_page: 3}).then(permissions => console.log(permissions)); +management.getUserPermissions({id: "user_id", per_page: 3}, (err, data) => console.log(data)); +management.getUserPermissions({id: "user_id", include_totals: true}).then(permissionPage => console.log(permissionPage)); +management.getUserPermissions({id: "user_id", include_totals: true}, (err, data) => console.log(data)); + +management.removePermissionsFromUser({id: "user_id"}, { + permissions: [ + { permission_name: "god:mode", resource_server_identifier: "https://my.api.com" } + ] + }) + .then(() => console.log("It worked")) + .catch(err => console.log("Something went wrong " + err)); +management.removePermissionsFromUser({id: "user_id"}, { + permissions: [ + { permission_name: "god:mode", resource_server_identifier: "https://my.api.com" } + ] +}, (err) => { + if (err) { + console.error("Something went wrong " + err); + } else { + console.log("It worked"); + } +}); + +management.assignPermissionsToUser({id: "user_id"}, { + permissions: [ + { permission_name: "god:mode", resource_server_identifier: "https://my.api.com" } + ] + }) + .then(() => console.log("It worked")) + .catch(err => console.log("Something went wrong " + err)); +management.assignPermissionsToUser({id: "user_id"}, { + permissions: [ + { permission_name: "god:mode", resource_server_identifier: "https://my.api.com" } + ] +}, (err) => { + if (err) { + console.error("Something went wrong " + err); + } else { + console.log("It worked"); + } +}); + // Using different client settings. const retryableManagementClient = new auth0.ManagementClient({ @@ -310,3 +384,94 @@ management.sendEmailVerification({ client_id: 'client_id', user_id: 'user_id' }, (err, data) => console.log(data)); + +// Roles +management.getRoles().then(roles => console.log(roles)); +management.getRoles((err, data) => console.log(data)); +management.getRoles({id: "role_id"}).then(roles => console.log(roles)); +management.getRoles({id: "role_id"}, (err, data) => console.log(data)); +management.getRoles({id: "role_id", name_filter: "Admin"}).then(roles => console.log(roles)); +management.getRoles({id: "role_id", name_filter: "Admin"}, (err, data) => console.log(data)); +management.getRoles({id: "role_id", per_page: 12}).then(roles => console.log(roles)); +management.getRoles({id: "role_id", per_page: 12}, (err, data) => console.log(data)); +management.getRoles({id: "role_id", include_totals: true}).then(rolePage => console.log(rolePage)); +management.getRoles({id: "role_id", include_totals: true}, (err, data) => console.log(data)); + +management.createRole({ + name: "Admin", + description: "I have all the power" +}).then(role => console.log(role)); +management.createRole({ + name: "Admin", + description: "I have all the power" +}, (err, data) => console.log(data)); + +management.getRole({id: "role_id"}).then(role => console.log(role)); +management.getRole({id: "role_id"}, (err, data) => console.log(data)); + + +management.deleteRole({id: "role_id"}) + .then(() => console.log("It worked")) + .catch(err => console.error("Something went wrong " + err)); +management.deleteRole({id: "role_id"}, err => { + if (err) { + console.error("Something went wrong " + err); + } else { + console.log("It worked"); + } +}); + +management.updateRole({id: "role_id"}, { + name: "The new name" +}).then(role => console.log(role)); +management.updateRole({id: "role_id"}, { + name: "The new name" +}, (err, data) => console.log(data)); + +management.getPermissionsInRole({id: "role_id"}).then(permissions => console.log(permissions)); +management.getPermissionsInRole({id: "role_id"}, (err, data) => console.log(data)); + +management.removePermissionsFromRole({id: "role_id"}, { + permissions: [ + { permission_name: "eat:cake", resource_server_identifier: "https://my.api.com" } + ] + }) + .then(() => console.log("It worked")) + .catch(err => console.log("Something went wrong " + err)); +management.removePermissionsFromRole({id: "role_id"}, { + permissions: [ + { permission_name: "eat:cake", resource_server_identifier: "https://my.api.com" } + ] +}, err => { + if (err) { + console.error("Something went wrong " + err); + } else { + console.log("It worked"); + } +}); + +management.addPermissionsInRole({id: "role_id"}, { + permissions: [ + { permission_name: "eat:cake", resource_server_identifier: "https://my.api.com" } + ] + }) + .then(() => console.log("It worked")) + .catch(err => console.log("Something went wrong " + err)); +management.addPermissionsInRole({id: "role_id"}, { + permissions: [ + { permission_name: "eat:cake", resource_server_identifier: "https://my.api.com" } + ] +}, err => { + if (err) { + console.error("Something went wrong " + err); + } else { + console.log("It worked"); + } +}); + +management.getUsersInRole({id: "role_id"}).then(users => console.log(users)); +management.getUsersInRole({id: "role_id"}, (err, data) => console.log(data)); +management.getUsersInRole({id: "role_id", per_page: 8}).then(users => console.log(users)); +management.getUsersInRole({id: "role_id", per_page: 8}, (err, data) => console.log(data)); +management.getUsersInRole({id: "role_id", include_totals: true}).then(userPage => console.log(userPage)); +management.getUsersInRole({id: "role_id", include_totals: true}, (err, data) => console.log(data)); diff --git a/types/auth0/index.d.ts b/types/auth0/index.d.ts index 6a867f9d4d..be8bdb47dd 100644 --- a/types/auth0/index.d.ts +++ b/types/auth0/index.d.ts @@ -110,6 +110,69 @@ export interface Rule { order?: number; } +export interface Role { + id?: string; + name?: string; + description?: string; +} + +export interface GetRolesData extends ObjectWithId { + name_filter?: string; + per_page?: number; + page?: number; +} + +export interface GetRolesDataPaged extends GetRolesData { + include_totals: boolean; +} + +export interface RolePage extends Page { + roles: Role[]; +} + +export interface CreateRoleData { + name: string; + description?: string; +} + +export interface UpdateRoleData { + name?: string; + description?: string; +} + +export interface RolesData { + roles: string[]; +} + +export interface Permission { + resource_server_identifier?: string; + permission_name?: string; + resource_server_name?: string; + description?: string; +} + +export interface PermissionsData { + permissions: PermissionData[] +} + +export interface PermissionData { + resource_server_identifier: string; + permission_name: string; +} + +export interface GetRoleUsersData extends ObjectWithId { + per_page?: number; + page?: number; +} + +export interface GetRoleUsersDataPaged extends GetRoleUsersData { + include_totals: boolean; +} + +export interface PermissionPage extends Page { + permissions: Permission[]; +} + export interface Client { /** * The name of the client. @@ -362,6 +425,24 @@ export interface UserPage extends Page { users: User[]; } +export interface GetUserRolesData extends ObjectWithId { + page?: number; + per_page?: number; +} + +export interface GetUserRolesDataPaged extends GetUserRolesData { + include_totals: boolean; +} + +export interface GetUserPermissionsData extends ObjectWithId { + page?: number; + per_page?: number; +} + +export interface GetUserPermissionsDataPaged extends GetUserPermissionsData { + include_totals: boolean; +} + export interface Identity { connection: string; user_id: string; @@ -768,8 +849,43 @@ export class ManagementClient { deleteDeviceCredential(params: ClientParams): Promise; deleteDeviceCredential(params: ClientParams, cb: (err: Error, data: any) => void): void; + // Roles + getRoles(): Promise; + getRoles(cb: (err: Error, roles: Role[]) => void): void; + getRoles(params: GetRolesData): Promise; + getRoles(params: GetRolesData, cb: (err: Error, roles: Role[]) => void): void; + getRoles(params: GetRolesDataPaged): Promise; + getRoles(params: GetRolesDataPaged, cb: (err: Error, rolePage: RolePage) => void): void; - // Rules + createRole(data: CreateRoleData): Promise; + createRole(data: CreateRoleData, cb: (err: Error, role: Role) => void): void; + + getRole(params: ObjectWithId): Promise; + getRole(params: ObjectWithId, cb: (err: Error, role: Role) => void): void; + + deleteRole(params: ObjectWithId): Promise; + deleteRole(params: ObjectWithId, cb: (err: Error) => void): void; + + updateRole(params: ObjectWithId, data: UpdateRoleData): Promise; + updateRole(params: ObjectWithId, data: UpdateRoleData, cb: (err: Error, role: Role) => void): void; + + getPermissionsInRole(params: ObjectWithId): Promise; + getPermissionsInRole(params: ObjectWithId, cb: (err: Error, permissions: Permission[]) => void): void; + + removePermissionsFromRole(params: ObjectWithId, data: PermissionsData): Promise; + removePermissionsFromRole(params: ObjectWithId, data: PermissionsData, cb: (err: Error) => void): void; + + addPermissionsInRole(params: ObjectWithId, data: PermissionsData): Promise; + addPermissionsInRole(params: ObjectWithId, data: PermissionsData, cb: (err: Error) => void): void; + + getUsersInRole(params: ObjectWithId): Promise; + getUsersInRole(params: ObjectWithId, cb: (err: Error, users: User[]) => void): void; + getUsersInRole(params: GetRoleUsersData): Promise; + getUsersInRole(params: GetRoleUsersData, cb: (err: Error, users: User[]) => void): void; + getUsersInRole(params: GetRoleUsersDataPaged): Promise; + getUsersInRole(params: GetRoleUsersDataPaged, cb: (err: Error, userPage: UserPage) => void): void; + + // Rules getRules(): Promise; getRules(cb: (err: Error, rules: Rule[]) => void): void; @@ -827,6 +943,34 @@ export class ManagementClient { linkUsers(userId: string, params: LinkAccountsParams): Promise; linkUsers(userId: string, params: LinkAccountsParams, cb: (err: Error, data: any) => void): void; + // User roles + getUserRoles(params: ObjectWithId): Promise; + getUserRoles(params: ObjectWithId, cb: (err: Error, roles: Role[]) => void): void; + getUserRoles(params: GetUserRolesData): Promise; + getUserRoles(params: GetUserRolesData, cb: (err: Error, roles: Role[]) => void): void; + getUserRoles(params: GetUserRolesDataPaged): Promise; + getUserRoles(params: GetUserRolesDataPaged, cb: (err: Error, rolePage: RolePage) => void): void; + + removeRolesFromUser(params: ObjectWithId, data: RolesData): Promise; + removeRolesFromUser(params: ObjectWithId, data: RolesData, cb: (err: Error) => void): void + + // The lowercase 't' is like this in the auth0 sdk + assignRolestoUser(params: ObjectWithId, data: RolesData): Promise; + assignRolestoUser(params: ObjectWithId, data: RolesData, cb: (err: Error) => void): void; + + // User permissions + getUserPermissions(params: ObjectWithId): Promise; + getUserPermissions(params: ObjectWithId, cb: (err: Error, permissions: Permission[]) => void): void; + getUserPermissions(params: GetUserPermissionsData): Promise; + getUserPermissions(params: GetUserPermissionsData, cb: (err: Error, permissions: Permission[]) => void): void; + getUserPermissions(params: GetUserPermissionsDataPaged): Promise; + getUserPermissions(params: GetUserPermissionsDataPaged, cb: (err: Error, permissionPage: PermissionPage) => void): void; + + removePermissionsFromUser(params: ObjectWithId, data: PermissionsData): Promise; + removePermissionsFromUser(params: ObjectWithId, data: PermissionsData, cb: (err: Error) => void): void; + + assignPermissionsToUser(params: ObjectWithId, data: PermissionsData): Promise; + assignPermissionsToUser(params: ObjectWithId, data: PermissionsData, cb: (err: Error) => void): void; // Tokens getBlacklistedTokens(): Promise;