Skip to content

Commit 679d2be

Browse files
passage-beachball-botgithub-actionstdeshong
authored
SDK updates (#118)
* SDK updates * get user by identifier * Change files * read me * add package * fix test * typo * to lower case * added back models that were removed * phone test * update package * deprecated tag * new file and update file index.ts * pr comments: add passkey to deprecated models --------- Co-authored-by: github-actions <[email protected]> Co-authored-by: Tamara Deshong <[email protected]>
1 parent 1ce4cba commit 679d2be

25 files changed

+974
-49
lines changed

README.md

+28
Original file line numberDiff line numberDiff line change
@@ -101,6 +101,34 @@ app.get('/authenticatedRoute', passageAuthMiddleware, async (req, res) => {
101101
});
102102
```
103103

104+
## Retrieve User Info By Identifier
105+
106+
To retrieve information about a user, you could also use the `passage.user.getUserByIdentifier()` function. You will need to use a Passage API key, which can be created in the Passage Console under your Application Settings. This API key grants your web server access to the Passage management APIs to get and update information about users. This API key must be protected and stored in an appropriate secure storage location. It should never be hard-coded in the repository.
107+
108+
```javascript
109+
import Passage from '@passageidentity/passage-node';
110+
import express from 'express';
111+
112+
const app = express();
113+
const port = 3000;
114+
115+
let passageConfig = {
116+
appID: 'YOUR_APP_ID',
117+
apiKey: 'YOUR_API_KEY',
118+
};
119+
let passage = new Passage(passageConfig);
120+
121+
// example authenticated route
122+
app.get('/authenticatedRoute', passageAuthMiddleware, async (req, res) => {
123+
// get passage user identifier from middleware
124+
let userIdentifier = res.userIdentifier;
125+
126+
// get user info
127+
let passageUser = await passage.user.getUserByIdentifier(userIdentifier);
128+
console.log(passageUser.email);
129+
});
130+
```
131+
104132
## Activate/Deactivate User
105133

106134
You can also activate or deactivate a user using the Passage SDK. These actions require an API Key and deactivating a user will prevent them from logging into your application with Passage.
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
{
2+
"type": "minor",
3+
"comment": "Added new method to get user by identifier, getUserByIdentifier",
4+
"packageName": "@passageidentity/passage-node",
5+
"email": "[email protected]",
6+
"dependentChangeType": "patch"
7+
}

package-lock.json

+48-25
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

package.json

+3-2
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@
1212
"babel-jest": "^27.2.0",
1313
"beachball": "^2.37.0",
1414
"dotenv": "^10.0.0",
15-
"eslint": "^8.5.0",
15+
"eslint": "^8.57.0",
1616
"eslint-config-google": "^0.14.0",
1717
"eslint-config-prettier": "^8.3.0",
1818
"eslint-plugin-prettier": "^4.0.0",
@@ -24,7 +24,8 @@
2424
"supertest": "^6.1.6",
2525
"ts-jest": "^27.0.5",
2626
"ts-node-dev": "^2.0.0",
27-
"typescript": "^4.4.3"
27+
"typescript": "^4.4.3",
28+
"@faker-js/faker": "^8.4.1"
2829
},
2930
"name": "@passageidentity/passage-node",
3031
"main": "./lib/cjs/index.js",

src/classes/User.ts

+28
Original file line numberDiff line numberDiff line change
@@ -70,6 +70,34 @@ export default class User {
7070
}
7171
}
7272

73+
/**
74+
* Get a user's object using their user identifier.
75+
*
76+
* @param {string} identifier The Passage user email or phone number
77+
* @return {Promise<UserInfo>} Passage User object
78+
*/
79+
async getUserByIdentifier(identifier: string): Promise<UserInfo> {
80+
this._apiKeyCheck();
81+
82+
try {
83+
const response = await this.#client.listPaginatedUsers({
84+
appId: this.#appID,
85+
limit: 1,
86+
identifier: identifier.toLowerCase(),
87+
});
88+
89+
const users = response.users;
90+
if (!users.length) {
91+
throw new PassageError('Could not find user with that identifier.');
92+
}
93+
94+
return this.get(users[0].id);
95+
96+
} catch (err) {
97+
throw new PassageError('Could not fetch user by identifier.', err as ResponseError);
98+
}
99+
}
100+
73101
/**
74102
* Deactivate a user using their user ID.
75103
*

src/generated/.openapi-generator/FILES

+7-3
Original file line numberDiff line numberDiff line change
@@ -18,24 +18,28 @@ models/GithubUserSocialConnection.ts
1818
models/GoogleUserSocialConnection.ts
1919
models/LayoutConfig.ts
2020
models/Layouts.ts
21+
models/Link.ts
2122
models/ListDevicesResponse.ts
23+
models/ListPaginatedUsersItem.ts
24+
models/ListPaginatedUsersResponse.ts
2225
models/MagicLink.ts
2326
models/MagicLinkAuthMethod.ts
2427
models/MagicLinkChannel.ts
2528
models/MagicLinkResponse.ts
2629
models/MagicLinkType.ts
2730
models/Model400Error.ts
2831
models/Model401Error.ts
32+
models/Model403Error.ts
2933
models/Model404Error.ts
3034
models/Model500Error.ts
35+
models/Nonce.ts
3136
models/OtpAuthMethod.ts
37+
models/PaginatedLinks.ts
3238
models/PasskeysAuthMethod.ts
3339
models/Technologies.ts
3440
models/TtlDisplayUnit.ts
35-
models/UpdateMagicLinkAuthMethod.ts
36-
models/UpdateOtpAuthMethod.ts
37-
models/UpdatePasskeysAuthMethod.ts
3841
models/UpdateUserRequest.ts
42+
models/UserEventStatus.ts
3943
models/UserInfo.ts
4044
models/UserMetadataField.ts
4145
models/UserMetadataFieldType.ts

src/generated/apis/MagicLinksApi.ts

+3
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,7 @@ import type {
1919
MagicLinkResponse,
2020
Model400Error,
2121
Model401Error,
22+
Model403Error,
2223
Model404Error,
2324
Model500Error,
2425
} from '../models/index';
@@ -31,6 +32,8 @@ import {
3132
Model400ErrorToJSON,
3233
Model401ErrorFromJSON,
3334
Model401ErrorToJSON,
35+
Model403ErrorFromJSON,
36+
Model403ErrorToJSON,
3437
Model404ErrorFromJSON,
3538
Model404ErrorToJSON,
3639
Model500ErrorFromJSON,

src/generated/apis/TokensApi.ts

+3
Original file line numberDiff line numberDiff line change
@@ -16,12 +16,15 @@
1616
import * as runtime from '../runtime';
1717
import type {
1818
Model401Error,
19+
Model403Error,
1920
Model404Error,
2021
Model500Error,
2122
} from '../models/index';
2223
import {
2324
Model401ErrorFromJSON,
2425
Model401ErrorToJSON,
26+
Model403ErrorFromJSON,
27+
Model403ErrorToJSON,
2528
Model404ErrorFromJSON,
2629
Model404ErrorToJSON,
2730
Model500ErrorFromJSON,

0 commit comments

Comments
 (0)