@@ -7,6 +7,7 @@ import CredentialsProvider from "next-auth/providers/credentials";
77import DiscordProvider from "next-auth/providers/discord" ;
88import EmailProvider from "next-auth/providers/email" ;
99import prisma from "src/lib/prismadb" ;
10+ import { generateUsername } from "unique-username-generator" ;
1011
1112const providers : Provider [ ] = [ ] ;
1213
@@ -97,10 +98,11 @@ export const authOptions: AuthOptions = {
9798 * This let's use forward the role to the session object.
9899 */
99100 async jwt ( { token } ) {
100- const { isNew, role } = await prisma . user . findUnique ( {
101+ const { isNew, name , role } = await prisma . user . findUnique ( {
101102 where : { id : token . sub } ,
102- select : { role : true , isNew : true } ,
103+ select : { name : true , role : true , isNew : true } ,
103104 } ) ;
105+ token . name = name ;
104106 token . role = role ;
105107 token . isNew = isNew ;
106108 return token ;
@@ -110,7 +112,18 @@ export const authOptions: AuthOptions = {
110112 /**
111113 * Update the user's role after they have successfully signed in
112114 */
113- async signIn ( { user, account } ) {
115+ async signIn ( { user, account, isNewUser } ) {
116+ if ( isNewUser && account . provider === "email" ) {
117+ await prisma . user . update ( {
118+ data : {
119+ name : generateUsername ( ) ,
120+ } ,
121+ where : {
122+ id : user . id ,
123+ } ,
124+ } ) ;
125+ }
126+
114127 // Get the admin list for the user's auth type.
115128 const adminForAccountType = adminUserMap . get ( account . provider ) ;
116129
0 commit comments