1
0
mirror of https://github.com/jbranchaud/til synced 2026-01-03 23:28:02 +00:00

Add Adjust The Shape Of The User Type as a NextAuth TIL

This commit is contained in:
jbranchaud
2023-12-04 09:38:30 -06:00
parent 851af3776d
commit c591565058
2 changed files with 46 additions and 1 deletions

View File

@@ -0,0 +1,40 @@
# Adjust The Shape Of The User Type
Let's say we want extra attributes on our `user` object that gets passed around
as part of authentication with [NextAuth.js](https://next-auth.js.org/). If
we're using a database adapter, it's because we have added columns to the
`User` table. Or it may be that we are adding extra attributes to the body of
the JWT token.
Either way, we need the underlying `User` type (rather, interface) to reflect
that.
Within a `declare module` block for NextAuth, we can define a `User` interface
with any additional properties that we want.
This adds `roles` as a required `string` type.
```typescript
declare module "next-auth" {
interface User {
// ...other properties
roles: string;
}
}
```
Some natural places to add this declaration are in the auth file itself (e.g.
`src/server/auth.ts`). Or we can put it in a dedicated top-level
`next-auth.d.ts` file as long as we tell our `tsconfig.json` to include it:
```json
{
...
"include": [
"src/**/*",
"process.d.ts",
"next-auth.d.ts"
],
...
}
```