Skip to content

Commit

Permalink
refactor(user-api): rename drupalkit options for user api endpoints t…
Browse files Browse the repository at this point in the history
…o reflect endpoint names
  • Loading branch information
chfoidl committed Jan 18, 2024
1 parent 6717952 commit 4cd6be2
Show file tree
Hide file tree
Showing 3 changed files with 373 additions and 150 deletions.
77 changes: 43 additions & 34 deletions packages/user-api/src/DrupalkitUserApi.ts
Original file line number Diff line number Diff line change
Expand Up @@ -4,20 +4,6 @@ import { OverrideableRequestOptions } from "@drupal-kit/types";

import { RegisterPayload, RegisterResponse, SuccessResponse } from "./types.js";

declare module "@drupal-kit/core" {
interface DrupalkitOptions {
userApiRegistrationEndpoint?: string;
userApiCancelAccountEndpoint?: string;
userApiInitAccountCancelEndpoint?: string;
userApiResetPasswordEndpoint?: string;
userApiUpdatePasswordEndpoint?: string;
userApiPasswordlessLoginEndpoint?: string;
userApiUpdateEmailEndpoint?: string;
userApiVerifyEmailEndpoint?: string;
userApiResendMailEndpoint?: string;
}
}

/**
* DrupalkitUserApi plugin for Drupalkit.
*
Expand All @@ -30,28 +16,51 @@ export const DrupalkitUserApi = (
drupalkit: Drupalkit,
drupalkitOptions: DrupalkitOptions,
) => {
if (drupalkitOptions.userApiResendMailEndpoint) {
drupalkitOptions.userApiRegisterResendEmailEndpoint = drupalkitOptions.userApiResendMailEndpoint;
}
if (drupalkitOptions.userApiInitAccountCancelEndpoint) {
drupalkitOptions.userApiInitCancelAccountEndpoint = drupalkitOptions.userApiInitAccountCancelEndpoint;
}
if (drupalkitOptions.userApiResetPasswordEndpoint) {
drupalkitOptions.userApiInitSetPasswordEndpoint = drupalkitOptions.userApiResetPasswordEndpoint;
}
if (drupalkitOptions.userApiUpdatePasswordEndpoint) {
drupalkitOptions.userApiSetPasswordEndpoint = drupalkitOptions.userApiUpdatePasswordEndpoint;
}
if (drupalkitOptions.userApiVerifyEmailEndpoint) {
drupalkitOptions.userApiInitSetEmailEndpoint = drupalkitOptions.userApiVerifyEmailEndpoint;
}
if (drupalkitOptions.userApiUpdateEmailEndpoint) {
drupalkitOptions.userApiSetEmailEndpoint = drupalkitOptions.userApiUpdateEmailEndpoint;
}

const registrationEndpoint =
drupalkitOptions.userApiRegistrationEndpoint ?? "/user-api/register";
const initAccountCancelEndpoint =
drupalkitOptions.userApiInitAccountCancelEndpoint ??
"/user-api/cancel-account/init";
const registerResendEmailEndpoint =
drupalkitOptions.userApiRegisterResendEmailEndpoint ??
"/user-api/register/resend-email";

const cancelAccountEndpoint =
drupalkitOptions.userApiCancelAccountEndpoint ?? "/user-api/cancel-account";
const resetPasswordEndpoint =
drupalkitOptions.userApiResetPasswordEndpoint ??
const initCancelAccountEndpoint =
drupalkitOptions.userApiInitCancelAccountEndpoint ??
"/user-api/cancel-account/init";

const initSetPasswordEndpoint =
drupalkitOptions.userApiInitSetPasswordEndpoint ??
"/user-api/set-password/init";
const updatePasswordEndpoint =
drupalkitOptions.userApiUpdatePasswordEndpoint ?? "/user-api/set-password";
const setPasswordEndpoint =
drupalkitOptions.userApiSetPasswordEndpoint ?? "/user-api/set-password";

const passwordlessLoginEndpoint =
drupalkitOptions.userApiPasswordlessLoginEndpoint ??
"/user-api/passwordless-login";
const updateEmailEndpoint =
drupalkitOptions.userApiUpdateEmailEndpoint ?? "/user-api/set-email";
const verifyEmailEndpoint =
drupalkitOptions.userApiVerifyEmailEndpoint ?? "/user-api/set-email/init";
const resendMailEndpoint =
drupalkitOptions.userApiResendMailEndpoint ??
"/user-api/register/resend-email";

const initSetEmailEndpoint =
drupalkitOptions.userApiInitSetEmailEndpoint ?? "/user-api/set-email/init";
const setEmailEndpoint =
drupalkitOptions.userApiSetEmailEndpoint ?? "/user-api/set-email";

const headers = {
"content-type": "application/json",
Expand Down Expand Up @@ -103,7 +112,7 @@ export const DrupalkitUserApi = (
const initAccountCancel = async (
requestOptions?: OverrideableRequestOptions,
): Promise<Result<SuccessResponse, DrupalkitError>> => {
const url = drupalkit.buildUrl(initAccountCancelEndpoint);
const url = drupalkit.buildUrl(initCancelAccountEndpoint);

const result = await drupalkit.request<SuccessResponse>(
url,
Expand Down Expand Up @@ -168,7 +177,7 @@ export const DrupalkitUserApi = (
email: string,
requestOptions?: OverrideableRequestOptions,
): Promise<Result<SuccessResponse, DrupalkitError>> => {
const url = drupalkit.buildUrl(resetPasswordEndpoint);
const url = drupalkit.buildUrl(initSetPasswordEndpoint);

const result = await drupalkit.request<SuccessResponse>(
url,
Expand Down Expand Up @@ -202,7 +211,7 @@ export const DrupalkitUserApi = (
currentPassword?: string,
requestOptions?: OverrideableRequestOptions,
): Promise<Result<SuccessResponse, DrupalkitError>> => {
const url = drupalkit.buildUrl(updatePasswordEndpoint);
const url = drupalkit.buildUrl(setPasswordEndpoint);

const payload: { newPassword: string; currentPassword?: string } = {
newPassword,
Expand Down Expand Up @@ -278,7 +287,7 @@ export const DrupalkitUserApi = (
email: string,
requestOptions?: OverrideableRequestOptions,
): Promise<Result<SuccessResponse, DrupalkitError>> => {
const url = drupalkit.buildUrl(verifyEmailEndpoint);
const url = drupalkit.buildUrl(initSetEmailEndpoint);

const result = await drupalkit.request<SuccessResponse>(
url,
Expand Down Expand Up @@ -310,7 +319,7 @@ export const DrupalkitUserApi = (
email: string,
requestOptions?: OverrideableRequestOptions,
): Promise<Result<SuccessResponse, DrupalkitError>> => {
const url = drupalkit.buildUrl(updateEmailEndpoint);
const url = drupalkit.buildUrl(setEmailEndpoint);

const result = await drupalkit.request<SuccessResponse>(
url,
Expand Down Expand Up @@ -343,7 +352,7 @@ export const DrupalkitUserApi = (
operation: string,
requestOptions?: OverrideableRequestOptions,
) => {
const url = drupalkit.buildUrl(resendMailEndpoint);
const url = drupalkit.buildUrl(registerResendEmailEndpoint);

const result = await drupalkit.request<{ status: "success" }>(
url,
Expand Down
102 changes: 102 additions & 0 deletions packages/user-api/src/types.ts
Original file line number Diff line number Diff line change
@@ -1,3 +1,105 @@
/**
* Augment DrupalkitOptions and add custom configuration.
*/
declare module "@drupal-kit/core" {
interface DrupalkitOptions {
/**
* Endpoint path for the User API AdvancedRegistrationResource.
*
* @default '/user-api/register'
*/
userApiRegistrationEndpoint?: string;
/**
* Endpoint path for the User API ResendRegisterEmailResource.
*
* @default '/user-api/register/resend-email'
*/
userApiRegisterResendEmailEndpoint?: string;
/**
* Endpoint path for the User API InitCancelAccountResource.
*
* @default '/user-api/cancel-account/init'
*/
userApiInitCancelAccountEndpoint?: string;
/**
* Endpoint path for the User API CancelAccountResource.
*
* @default '/user-api/cancel-account'
*/
userApiCancelAccountEndpoint?: string;
/**
* Endpoint path for the User API InitSetPasswordResource.
*
* @default '/user-api/set-password/init'
*/
userApiInitSetPasswordEndpoint?: string;
/**
* Endpoint path for the User API SetPasswordResource.
*
* @default '/user-api/set-password'
*/
userApiSetPasswordEndpoint?: string;
/**
* Endpoint path for the User API PasswordlessLoginResource.
*
* @default '/user-api/passwordless-login'
*/
userApiPasswordlessLoginEndpoint?: string;
/**
* Endpoint path for the User API InitSetEmailResource.
*
* @default '/user-api/set-email/init'
*/
userApiInitSetEmailEndpoint?: string;
/**
* Endpoint path for the User API SetEmailResource.
*
* @default '/user-api/set-email'
*/
userApiSetEmailEndpoint?: string;

//
// Deprecated properties.
//

/**
* Endpoint path for the User API ResendRegisterEmailResource.
*
* @deprecated Deprecated in `0.9.3` will be removed in `1.0.0`. Use `userApiRegisterResendEmailEndpoint` instead.
*/
userApiResendMailEndpoint?: string;
/**
* Endpoint path for the User API InitCancelAccountResource.
*
* @deprecated Deprecated in `0.9.3` will be removed in `1.0.0`. Use `userApiInitCancelAccountEndpoint` instead.
*/
userApiInitAccountCancelEndpoint?: string;
/**
* Endpoint path for the User API InitSetPasswordResource.
*
* @deprecated Deprecated in `0.9.3` will be removed in `1.0.0`. Use `userApiInitSetPasswordEndpoint` instead.
*/
userApiResetPasswordEndpoint?: string;
/**
* Endpoint path for the User API SetPasswordResource.
*
* @deprecated Deprecated in `0.9.3` will be removed in `1.0.0`. Use `userApiSetPasswordEndpoint` instead.
*/
userApiUpdatePasswordEndpoint?: string;
/**
* Endpoint path for the User API InitSetEmailResource.
*
* @deprecated Deprecated in `0.9.3` will be removed in `1.0.0`. Use `userApiInitSetEmailEndpoint` instead.
*/
userApiUpdateEmailEndpoint?: string;
/**
* Endpoint path for the User API SetEmailResource.
*
* @deprecated Deprecated in `0.9.3` will be removed in `1.0.0`. Use `userApiSetEmailEndpoint` instead.
*/
userApiVerifyEmailEndpoint?: string;
}
}
/**
* Augment this interface to include all fields
* that are needed for registration.
Expand Down
Loading

0 comments on commit 4cd6be2

Please sign in to comment.