metamigo: do nextauth v3 -> v4 upgrades

This commit is contained in:
Abel Luck 2023-06-06 10:28:29 +00:00
parent a33f80c497
commit 45f8cb1234
13 changed files with 158 additions and 123 deletions

View file

@ -13,7 +13,7 @@ const minimumProfileSchema = Joi.object()
const minimumUserSchema = Joi.object()
.keys({
id: Joi.string().required(),
userId: Joi.string().required(),
email: Joi.string().email().required(),
})
.unknown(true);

View file

@ -93,13 +93,13 @@ export const register = async <TUser, TProfile>(
},
{
method: "GET",
path: `${basePath}/getUserByProviderAccountId/{providerId}/{providerAccountId}`,
path: `${basePath}/getUserByAccount/{provider}/{providerAccountId}`,
options: {
auth,
tags,
validate: {
params: {
providerId: Joi.string(),
provider: Joi.string(),
providerAccountId: Joi.string(),
},
},
@ -107,10 +107,10 @@ export const register = async <TUser, TProfile>(
request: Hapi.Request,
h: ResponseToolkit
): Promise<ResponseObject> {
const { providerId, providerAccountId } = request.params;
const { provider, providerAccountId } = request.params;
const r = await opts
.nextAuthAdapterFactory(request)
.getUserByProviderAccountId(providerId, providerAccountId);
.getUserByAccount(provider, providerAccountId);
if (!r) return h.response().code(404);
return h.response(r as object);
},
@ -148,14 +148,15 @@ export const register = async <TUser, TProfile>(
tags,
validate: {
payload: Joi.object({
userId,
providerId: Joi.string(),
providerType: Joi.string(),
providerAccountId: Joi.string(),
refreshToken: Joi.string().optional().allow(null),
accessToken: Joi.string().optional().allow(null),
accessTokenExpires: Joi.number().optional().allow(null),
}).options({ presence: "required" }),
// https://next-auth.js.org/getting-started/upgrade-v4#schema-changes
userId: Joi.string().required(),
provider: Joi.string().required(),
type: Joi.string().required(),
providerAccountId: Joi.string().required(),
refresh_token: Joi.string().optional().allow(null),
access_token: Joi.string().optional().allow(null),
expires_at: Joi.number().optional().allow(null),
}).unknown(true),
},
async handler(
request: Hapi.Request,
@ -193,7 +194,11 @@ export const register = async <TUser, TProfile>(
auth,
tags,
validate: {
payload: user,
payload: Joi.object({
userId: Joi.string().required(),
sessionToken: Joi.string().required(),
expires: Joi.string().isoDate().required(),
}),
},
async handler(
request: Hapi.Request,
@ -210,7 +215,7 @@ export const register = async <TUser, TProfile>(
},
{
method: "GET",
path: `${basePath}/getSession/{sessionToken}`,
path: `${basePath}/getSessionAndUser/{sessionToken}`,
options: {
auth,
tags,
@ -226,7 +231,7 @@ export const register = async <TUser, TProfile>(
const token = request.params.sessionToken;
const r = await opts
.nextAuthAdapterFactory(request)
.getSession(token);
.getSessionAndUser(token);
if (!r) return h.response().code(404);
return h.response(r as object);
},