Skip to content

Commit 3cf7c61

Browse files
author
Harshdev098
committed
fix: check if email is already registered and show toast notification
Signed-off-by: Harshdev098 <harshoxfordgkp@gmail.com>
1 parent c31285b commit 3cf7c61

File tree

3 files changed

+160
-83
lines changed

3 files changed

+160
-83
lines changed

src/learning-token-backend/src/modules/auth/auth.controller.ts

Lines changed: 52 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -32,10 +32,19 @@ export class AuthController {
3232
try {
3333
registerRequestDto.type = 'Admin'
3434
const result = await this.service.register(registerRequestDto)
35-
return {
36-
status: HttpStatus.CREATED,
37-
message: 'User has been created',
38-
result: result
35+
if (result) {
36+
console.log('registered', result)
37+
return {
38+
status: HttpStatus.CREATED,
39+
message: 'User has been created',
40+
result: result
41+
}
42+
} else {
43+
return {
44+
status: HttpStatus.FOUND,
45+
message: 'User already registered',
46+
result: null
47+
}
3948
}
4049
} catch (error) {
4150
throw new ConflictException(error.message)
@@ -88,10 +97,19 @@ export class AuthController {
8897
try {
8998
registerRequestDto.type = 'Institution'
9099
const result = await this.service.register(registerRequestDto)
91-
return {
92-
status: HttpStatus.CREATED,
93-
message: 'User has been created',
94-
result: result
100+
if (result) {
101+
console.log('registered', result)
102+
return {
103+
status: HttpStatus.CREATED,
104+
message: 'User has been created',
105+
result: result
106+
}
107+
} else {
108+
return {
109+
status: HttpStatus.FOUND,
110+
message: 'User already registered',
111+
result: null
112+
}
95113
}
96114
} catch (error) {
97115
console.log(error)
@@ -127,10 +145,19 @@ export class AuthController {
127145
try {
128146
registerRequestDto.type = 'Learner'
129147
const result = await this.service.register(registerRequestDto)
130-
return {
131-
status: HttpStatus.CREATED,
132-
message: 'User has been created',
133-
result: result
148+
if (result) {
149+
console.log('registered', result)
150+
return {
151+
status: HttpStatus.CREATED,
152+
message: 'User has been created',
153+
result: result
154+
}
155+
} else {
156+
return {
157+
status: HttpStatus.FOUND,
158+
message: 'User already registered',
159+
result: null
160+
}
134161
}
135162
} catch (error) {
136163
throw new ConflictException(error.message)
@@ -165,10 +192,19 @@ export class AuthController {
165192
try {
166193
registerRequestDto.type = 'Instructor'
167194
const result = await this.service.register(registerRequestDto)
168-
return {
169-
status: HttpStatus.CREATED,
170-
message: 'User has been created',
171-
result: result
195+
if (result) {
196+
console.log('registered', result)
197+
return {
198+
status: HttpStatus.CREATED,
199+
message: 'User has been created',
200+
result: result
201+
}
202+
} else {
203+
return {
204+
status: HttpStatus.FOUND,
205+
message: 'User already registered',
206+
result: null
207+
}
172208
}
173209
} catch (error) {
174210
throw new ConflictException(error.message)

src/learning-token-backend/src/modules/auth/service/auth.service.ts

Lines changed: 104 additions & 67 deletions
Original file line numberDiff line numberDiff line change
@@ -29,7 +29,7 @@ export class AuthService {
2929
private readonly jwtService: JwtService,
3030
@InjectRepository(Role)
3131
private readonly roleRepository: Repository<Role>
32-
) {}
32+
) { }
3333

3434
/**
3535
* REGISTRATION OF A USER
@@ -43,80 +43,93 @@ export class AuthService {
4343
longitude
4444
}: any) {
4545
if (type == 'Admin') {
46-
const user = new User()
47-
user.name = name
48-
user.email = email
49-
user.password = this.jwtService.encodePassword(password)
50-
const registeredUser = await this.userRepository.save(user)
51-
return {
52-
id: registeredUser.id,
53-
name: registeredUser.name,
54-
email: registeredUser.email,
55-
token: null,
56-
createdAt: registeredUser.createdAt,
57-
updatedAt: registeredUser.updatedAt
46+
if (!(await this.checkUser(email, type))) {
47+
const user = new User()
48+
user.name = name
49+
user.email = email
50+
user.password = this.jwtService.encodePassword(password)
51+
console.log('name,email', user.name, user.email)
52+
const registeredUser = await this.userRepository.save(user)
53+
return {
54+
id: registeredUser.id,
55+
name: registeredUser.name,
56+
email: registeredUser.email,
57+
token: null,
58+
createdAt: registeredUser.createdAt,
59+
updatedAt: registeredUser.updatedAt
60+
}
5861
}
5962
} else if (type == 'Institution') {
60-
const user = new Institution()
61-
user.name = name
62-
user.email = email
63-
user.password = this.jwtService.encodePassword(password)
64-
user.latitude = latitude
65-
user.longitude = longitude
66-
67-
const role = await this.roleRepository.findOne({
68-
where: {
69-
name: 'institution'
70-
}
71-
})
72-
user.roleId = role.id // default to institution
63+
if (!(await this.checkUser(email, type))) {
64+
const user = new Institution()
65+
user.name = name
66+
user.email = email
67+
user.password = this.jwtService.encodePassword(password)
68+
user.latitude = latitude
69+
user.longitude = longitude
7370

74-
const registeredUser = await this.institutionRepository.save(user)
75-
const wallet = await getWallet('institution', registeredUser.id)
76-
await this.institutionRepository.update(registeredUser.id, {
77-
publicAddress: wallet.address,
78-
role: role
79-
})
80-
return {
81-
id: registeredUser.id,
82-
name: registeredUser.name,
83-
email: registeredUser.email,
84-
token: null,
85-
createdAt: registeredUser.createdAt,
86-
updatedAt: registeredUser.updatedAt
71+
const role = await this.roleRepository.findOne({
72+
where: {
73+
name: 'institution'
74+
}
75+
})
76+
user.roleId = role.id // default to institution
77+
78+
const registeredUser = await this.institutionRepository.save(
79+
user
80+
)
81+
const wallet = await getWallet('institution', registeredUser.id)
82+
await this.institutionRepository.update(registeredUser.id, {
83+
publicAddress: wallet.address,
84+
role: role
85+
})
86+
return {
87+
id: registeredUser.id,
88+
name: registeredUser.name,
89+
email: registeredUser.email,
90+
token: null,
91+
createdAt: registeredUser.createdAt,
92+
updatedAt: registeredUser.updatedAt
93+
}
8794
}
8895
//no longer registering from the api
8996
} else if (type == 'Learner') {
90-
const user = new Learner()
91-
user.name = name
92-
user.email = email
93-
// user.publicAddress = publicAddress
94-
user.password = this.jwtService.encodePassword(password)
95-
user.latitude = latitude
96-
user.longitude = longitude
97-
const registeredUser = await this.learnerRepository.save(user)
98-
return {
99-
id: registeredUser.id,
100-
name: registeredUser.name,
101-
email: registeredUser.email,
102-
token: null,
103-
createdAt: registeredUser.createdAt,
104-
updatedAt: registeredUser.updatedAt
97+
if (!(await this.checkUser(email, type))) {
98+
const user = new Learner()
99+
user.name = name
100+
user.email = email
101+
// user.publicAddress = publicAddress
102+
user.password = this.jwtService.encodePassword(password)
103+
user.latitude = latitude
104+
user.longitude = longitude
105+
const registeredUser = await this.learnerRepository.save(user)
106+
return {
107+
id: registeredUser.id,
108+
name: registeredUser.name,
109+
email: registeredUser.email,
110+
token: null,
111+
createdAt: registeredUser.createdAt,
112+
updatedAt: registeredUser.updatedAt
113+
}
105114
}
106115
} else if (type == 'Instructor') {
107-
const user = new Instructor()
108-
user.name = name
109-
user.email = email
110-
// user.publicAddress = publicAddress
111-
user.password = this.jwtService.encodePassword(password)
112-
const registeredUser = await this.insturctorRepository.save(user)
113-
return {
114-
id: registeredUser.id,
115-
name: registeredUser.name,
116-
email: registeredUser.email,
117-
token: null,
118-
createdAt: registeredUser.createdAt,
119-
updatedAt: registeredUser.updatedAt
116+
if (!(await this.checkUser(email, type))) {
117+
const user = new Instructor()
118+
user.name = name
119+
user.email = email
120+
// user.publicAddress = publicAddress
121+
user.password = this.jwtService.encodePassword(password)
122+
const registeredUser = await this.insturctorRepository.save(
123+
user
124+
)
125+
return {
126+
id: registeredUser.id,
127+
name: registeredUser.name,
128+
email: registeredUser.email,
129+
token: null,
130+
createdAt: registeredUser.createdAt,
131+
updatedAt: registeredUser.updatedAt
132+
}
120133
}
121134
}
122135
}
@@ -209,6 +222,30 @@ export class AuthService {
209222
}
210223
}
211224

225+
public checkUser = async (email, type) => {
226+
if (type == 'Admin') {
227+
const found = await this.userRepository.findOne({
228+
where: { email: email }
229+
})
230+
return found ? true : false
231+
} else if (type == 'Learner') {
232+
const found = await this.learnerRepository.findOne({
233+
where: { email: email }
234+
})
235+
return found ? true : false
236+
} else if (type == 'Instructor') {
237+
const found = await this.insturctorRepository.findOne({
238+
where: { email: email }
239+
})
240+
return found ? true : false
241+
} else if (type == 'Institution') {
242+
const found = await this.institutionRepository.findOne({
243+
where: { email: email }
244+
})
245+
return found ? true : false
246+
}
247+
}
248+
212249
/**
213250
* VALIDATING A USER
214251
*/

src/learning-token-dashboard/src/pages/Register.tsx

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -90,6 +90,8 @@ const Login = () => {
9090
navigate("/");
9191
}
9292
});
93+
}else if(result && result.status === 302){
94+
alert("User already exist")
9395
}
9496
});
9597
} else if (values.type === "institution") {
@@ -123,6 +125,8 @@ const Login = () => {
123125
navigate("/");
124126
}
125127
});
128+
}else if(result && result.status === 302){
129+
alert("User already exist")
126130
}
127131
});
128132
}

0 commit comments

Comments
 (0)