Creating a database adapter
Using a custom adapter you can connect to any database back-end or even several different databases. Official adapters created and maintained by our community can be found in the adapters packages. Feel free to add a custom adapter from your project to the repository, or even become a maintainer of a certain adapter. Custom adapters can still be created and used in a project without being added to the repository.
How to create an adapter
For more information about the data these methods need to manage see models.
See the code below for practical example.
Example code
/** @return { import("next-auth/adapters").Adapter } */
export default function MyAdapter(client, options = {}) {
return {
async createUser(user) {
return
},
async getUser(id) {
return
},
async getUserByEmail(email) {
return
},
async getUserByAccount({ providerAccountId, provider }) {
return
},
async updateUser(user) {
return
},
async deleteUser(userId) {
return
},
async linkAccount(account) {
return
},
async unlinkAccount({ providerAccountId, provider }) {
return
},
async createSession({ sessionToken, userId, expires }) {
return
},
async getSessionAndUser(sessionToken) {
return
},
async updateSession({ sessionToken }) {
return
},
async deleteSession(sessionToken) {
return
},
async createVerificationToken({ identifier, expires, token }) {
return
},
async useVerificationToken({ identifier, token }) {
return
},
}
}
Required methods
These methods are required for all sign in flows:
createUser
getUser
getUserByEmail
getUserByAccount
linkAccount
createSession
getSessionAndUser
updateSession
deleteSession
updateUser
These methods are required to support email / passwordless sign in:
createVerificationToken
useVerificationToken
Unimplemented methods
These methods will be required in a future release, but are not yet invoked:
deleteUser
unlinkAccount