11import { DB , SCHEMA } from "@/db" ;
22import { logger } from "@/logger" ;
33import { createTRPCRouter , publicProcedure } from "@/trpc" ;
4- import { and , eq } from "drizzle-orm" ;
4+ import { eq } from "drizzle-orm" ;
55import { z } from "zod" ;
66
77export default createTRPCRouter ( {
@@ -19,27 +19,37 @@ export default createTRPCRouter({
1919 try {
2020 const { code, telegramId, telegramUsername } = input ;
2121 const s = SCHEMA . TG . link ;
22- const res = await DB . update ( s )
23- . set ( { telegramId } )
24- . where (
25- and ( eq ( s . code , code ) , eq ( s . telegramUsername , telegramUsername ) ) ,
26- )
27- . returning ( ) ;
22+ const rows = await DB . select ( ) . from ( s ) . where ( eq ( s . code , code ) ) ;
23+ if ( ! rows || rows . length === 0 )
24+ return { success : false , error : "Not found" } ;
2825
29- if ( res . length !== 1 ) return { success : false } ;
26+ const {
27+ userId,
28+ telegramUsername : savedTgUsername ,
29+ ttl,
30+ createdAt,
31+ } = rows [ 0 ] ;
32+ if ( savedTgUsername !== telegramUsername )
33+ return { success : false , error : "Username mismatch" } ;
34+
35+ if ( createdAt . getTime ( ) + ttl * 1000 < Date . now ( ) )
36+ return { success : false , error : "Expired code" } ;
37+
38+ await DB . update ( s ) . set ( { telegramId } ) . where ( eq ( s . code , code ) ) ;
3039
3140 const u = SCHEMA . AUTH . users ;
32- await DB . update ( u )
41+ await DB . update ( u ) // update the auth.user table
3342 . set ( { telegramId, telegramUsername } )
34- . where ( eq ( u . id , res [ 0 ] . userId ) ) ;
43+ . where ( eq ( u . id , userId ) ) ;
3544
36- return { success : true } ;
45+ return { success : true , error : undefined } ;
3746 } catch ( e ) {
3847 logger . error (
3948 e ,
40- "There was an error while linking telegram to user table" ,
49+ "There was an unexpected error while linking telegram to user table" ,
4150 ) ;
42- return { success : false } ;
51+ if ( e instanceof Error ) return { success : false , error : e . message } ;
52+ return { success : false , error : JSON . stringify ( e ) } ;
4353 }
4454 } ) ,
4555} ) ;
0 commit comments