Update stuff so we can pass build hopefully
This commit is contained in:
@@ -1,7 +1,39 @@
|
|||||||
import type { EmailConfig, EmailUserConfig } from '@auth/core/providers/email';
|
import type { EmailConfig, EmailUserConfig } from '@auth/core/providers/email';
|
||||||
import { generateRandomString, RandomReader } from '@oslojs/crypto/random';
|
import { generateRandomString, RandomReader } from '@oslojs/crypto/random';
|
||||||
import { alphabet } from 'oslo/crypto';
|
import { alphabet } from 'oslo/crypto';
|
||||||
import { UseSend } from 'usesend-js';
|
|
||||||
|
type UseSendEmailPayload = {
|
||||||
|
from: string;
|
||||||
|
to: string[];
|
||||||
|
subject: string;
|
||||||
|
text: string;
|
||||||
|
html: string;
|
||||||
|
};
|
||||||
|
|
||||||
|
const sendUseSendEmail = async (
|
||||||
|
apiKey: string,
|
||||||
|
useSendUrl: string,
|
||||||
|
payload: UseSendEmailPayload,
|
||||||
|
) => {
|
||||||
|
const response = await fetch(`${useSendUrl}/api/v1/emails`, {
|
||||||
|
method: 'POST',
|
||||||
|
headers: {
|
||||||
|
Authorization: `Bearer ${apiKey}`,
|
||||||
|
'Content-Type': 'application/json',
|
||||||
|
},
|
||||||
|
body: JSON.stringify(payload),
|
||||||
|
});
|
||||||
|
|
||||||
|
if (!response.ok) {
|
||||||
|
let errorBody: unknown;
|
||||||
|
try {
|
||||||
|
errorBody = await response.json();
|
||||||
|
} catch {
|
||||||
|
errorBody = response.statusText;
|
||||||
|
}
|
||||||
|
throw new Error(`UseSend error: ${JSON.stringify(errorBody)}`);
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
export default function UseSendProvider(config: EmailUserConfig): EmailConfig {
|
export default function UseSendProvider(config: EmailUserConfig): EmailConfig {
|
||||||
return {
|
return {
|
||||||
@@ -32,13 +64,11 @@ export default function UseSendProvider(config: EmailUserConfig): EmailConfig {
|
|||||||
throw new Error('USESEND_API_KEY and USESEND_URL must be set.');
|
throw new Error('USESEND_API_KEY and USESEND_URL must be set.');
|
||||||
}
|
}
|
||||||
|
|
||||||
const useSend = new UseSend(apiKey, useSendUrl);
|
|
||||||
|
|
||||||
// For password reset, we want to send the code, not the magic link
|
// For password reset, we want to send the code, not the magic link
|
||||||
const isPasswordReset =
|
const isPasswordReset =
|
||||||
url.includes('reset') || provider.id.includes('reset');
|
url.includes('reset') || provider.id.includes('reset');
|
||||||
|
|
||||||
const result = await useSend.emails.send({
|
await sendUseSendEmail(apiKey, useSendUrl, {
|
||||||
from: provider.from ?? 'noreply@example.com',
|
from: provider.from ?? 'noreply@example.com',
|
||||||
to: [to],
|
to: [to],
|
||||||
subject: isPasswordReset
|
subject: isPasswordReset
|
||||||
@@ -70,10 +100,6 @@ export default function UseSendProvider(config: EmailUserConfig): EmailConfig {
|
|||||||
</div>
|
</div>
|
||||||
`,
|
`,
|
||||||
});
|
});
|
||||||
|
|
||||||
if (result.error) {
|
|
||||||
throw new Error('UseSend error: ' + JSON.stringify(result.error));
|
|
||||||
}
|
|
||||||
},
|
},
|
||||||
|
|
||||||
options: config,
|
options: config,
|
||||||
|
|||||||
Reference in New Issue
Block a user