@@ -22,7 +22,7 @@ import { FileInterceptor } from '@nestjs/platform-express'
22
22
import { IRequest , IResponse } from 'src/utils/interface'
23
23
import { ApiResponseObject , ResponseUtil } from 'src/utils/response'
24
24
import { JwtAuthGuard } from 'src/authentication/jwt.auth.guard'
25
- import { UserWithProfile } from './entities/user'
25
+ import { User , UserWithProfile } from './entities/user'
26
26
import { SmsService } from 'src/authentication/phone/sms.service'
27
27
import { BindPhoneDto } from './dto/bind-phone.dto'
28
28
import { SmsVerifyCodeType } from 'src/authentication/entities/sms-verify-code'
@@ -108,18 +108,25 @@ export class UserController {
108
108
@ApiResponseObject ( UserWithProfile )
109
109
@UseGuards ( JwtAuthGuard )
110
110
@Post ( 'bind/phone' )
111
- async bindPhone ( @Body ( ) dto : BindPhoneDto , @Req ( ) req : IRequest ) {
111
+ async bindPhone ( @Body ( ) dto : BindPhoneDto , @Req ( ) user : User ) {
112
112
const { oldPhoneNumber, newPhoneNumber, oldSmsCode, newSmsCode } = dto
113
113
// check code valid
114
- let err = await this . smsService . validateCode (
115
- oldPhoneNumber ,
116
- oldSmsCode ,
117
- SmsVerifyCodeType . Unbind ,
118
- )
119
- if ( err ) {
120
- return ResponseUtil . error ( err )
114
+ if ( user . phone ) {
115
+ if ( user . phone !== dto . oldPhoneNumber ) {
116
+ return ResponseUtil . error (
117
+ 'the old phone number is not the same as the new one' ,
118
+ )
119
+ }
120
+ const err = await this . smsService . validateCode (
121
+ oldPhoneNumber ,
122
+ oldSmsCode ,
123
+ SmsVerifyCodeType . Unbind ,
124
+ )
125
+ if ( err ) {
126
+ return ResponseUtil . error ( err )
127
+ }
121
128
}
122
- err = await this . smsService . validateCode (
129
+ const err = await this . smsService . validateCode (
123
130
newPhoneNumber ,
124
131
newSmsCode ,
125
132
SmsVerifyCodeType . Bind ,
@@ -129,13 +136,13 @@ export class UserController {
129
136
}
130
137
131
138
// check phone if have already been bound
132
- const user = await this . userService . findOneByPhone ( newPhoneNumber )
133
- if ( user ) {
139
+ const _user = await this . userService . findOneByPhone ( newPhoneNumber )
140
+ if ( _user ) {
134
141
return ResponseUtil . error ( 'phone has already been bound' )
135
142
}
136
143
137
144
// bind phone
138
- const res = await this . userService . updateUser ( req . user . _id , {
145
+ const res = await this . userService . updateUser ( user . _id , {
139
146
phone : newPhoneNumber ,
140
147
} )
141
148
return res
0 commit comments