Skip to content

Commit db8a05f

Browse files
authored
feat(auth): pass callback url through login
1 parent bd99a8e commit db8a05f

4 files changed

Lines changed: 18 additions & 17 deletions

File tree

README.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -51,6 +51,7 @@ const sdk = createPutioSdkPromiseClient();
5151

5252
const validation = await sdk.auth.validateToken(tokenToCheck);
5353
const login = await sdk.auth.login({
54+
callbackUrl,
5455
clientId,
5556
clientSecret,
5657
password,

src/core/client.ts

Lines changed: 2 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -42,6 +42,7 @@ import {
4242
validateToken,
4343
verifyTOTP,
4444
type GenerateTOTPResponse,
45+
type LoginInput,
4546
type LoginResponse,
4647
type RegisterInput,
4748
type TwoFactorRecoveryCodes,
@@ -664,14 +665,7 @@ export const createPutioSdkPromiseClient = (initialConfig: PutioSdkConfigShape =
664665
getVoucher: (code: string) => provideSdk(config, getVoucher(code)),
665666
grants: (): Promise<ReadonlyArray<OAuthApp>> => provideSdk(config, grants()),
666667
linkDevice: (code: string) => provideSdk(config, linkDevice(code)),
667-
login: (input: {
668-
readonly clientId: string | number;
669-
readonly clientSecret: string;
670-
readonly password: string;
671-
readonly username: string;
672-
readonly clientName?: string;
673-
readonly fingerprint?: string;
674-
}): Promise<LoginResponse> => provideSdk(config, login(input)),
668+
login: (input: LoginInput): Promise<LoginResponse> => provideSdk(config, login(input)),
675669
logout: () => provideSdk(config, logout()),
676670
register: (input: RegisterInput) => provideSdk(config, register(input)),
677671
resetPassword: (key: string, password: string) =>

src/domains/auth.spec.ts

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -67,6 +67,7 @@ describe("auth domain", () => {
6767

6868
const loginResult = await runSdkEffect(
6969
login({
70+
callbackUrl: "https://example.com/callback",
7071
clientId: 42,
7172
clientName: "Codex",
7273
clientSecret: "secret",
@@ -76,7 +77,7 @@ describe("auth domain", () => {
7677
}),
7778
(request) => {
7879
expect(request.url).toBe(
79-
"https://api.put.io/v2/oauth2/authorizations/clients/42/fingerprint-1?client_name=Codex&client_secret=secret",
80+
"https://api.put.io/v2/oauth2/authorizations/clients/42/fingerprint-1?callback_url=https%3A%2F%2Fexample.com%2Fcallback&client_name=Codex&client_secret=secret",
8081
);
8182
expect(getAuthorizationHeader(request)).toBe("Basic c2RrOnBhc3M=");
8283

src/domains/auth.ts

Lines changed: 13 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -301,6 +301,15 @@ export type RecoveryCodesError = PutioOperationFailure<typeof RecoveryCodesError
301301
export type RegenerateRecoveryCodesError = PutioOperationFailure<
302302
typeof RegenerateRecoveryCodesErrorSpec
303303
>;
304+
export type LoginInput = {
305+
readonly clientId: string | number;
306+
readonly clientSecret: string;
307+
readonly password: string;
308+
readonly username: string;
309+
readonly callbackUrl?: string;
310+
readonly clientName?: string;
311+
readonly fingerprint?: string;
312+
};
304313
export const buildAuthLoginUrl = (options: {
305314
readonly clientId: string | number;
306315
readonly redirectUri: string;
@@ -317,14 +326,9 @@ export const buildAuthLoginUrl = (options: {
317326
response_type: options.responseType ?? "token",
318327
state: options.state,
319328
});
320-
export const login = (input: {
321-
readonly clientId: string | number;
322-
readonly clientSecret: string;
323-
readonly password: string;
324-
readonly username: string;
325-
readonly clientName?: string;
326-
readonly fingerprint?: string;
327-
}): Effect.Effect<LoginResponse, LoginError, PutioSdkContext> =>
329+
export const login = (
330+
input: LoginInput,
331+
): Effect.Effect<LoginResponse, LoginError, PutioSdkContext> =>
328332
requestJson(LoginResponseSchema, {
329333
auth: {
330334
type: "basic",
@@ -336,6 +340,7 @@ export const login = (input: {
336340
? `/v2/oauth2/authorizations/clients/${encodePathSegment(input.clientId)}/${encodePathSegment(input.fingerprint)}`
337341
: `/v2/oauth2/authorizations/clients/${encodePathSegment(input.clientId)}`,
338342
query: {
343+
callback_url: input.callbackUrl,
339344
client_name: input.clientName,
340345
client_secret: input.clientSecret,
341346
},

0 commit comments

Comments
 (0)