|
33 | 33 | import org.springframework.web.bind.annotation.RequestMapping; |
34 | 34 | import org.springframework.web.bind.annotation.RestController; |
35 | 35 |
|
| 36 | +import java.time.LocalDateTime; |
36 | 37 | import java.util.Collections; |
37 | 38 | import java.util.Optional; |
38 | 39 |
|
@@ -144,46 +145,65 @@ public ResponseEntity<JwtResponse> googleSignUp(@Valid @RequestBody GoogleSignUp |
144 | 145 | } |
145 | 146 |
|
146 | 147 | GoogleIdToken.Payload payload = idToken.getPayload(); |
147 | | - String email = payload.getEmail(); |
| 148 | + String email = (String) payload.get("email"); |
148 | 149 |
|
| 150 | + // Check if user already exists |
149 | 151 | Optional<User> existingUser = userRepository.findByEmail(email); |
150 | | - |
151 | 152 | if (existingUser.isPresent()) { |
152 | 153 | throw new BadApiRequestException("User already registered with this email"); |
153 | 154 | } |
154 | 155 |
|
155 | | - // Create new user |
| 156 | + // Create new User object |
156 | 157 | User newUser = User.builder() |
157 | 158 | .email(email) |
158 | 159 | .name((String) payload.get("name")) |
159 | 160 | .imageUrl((String) payload.get("picture")) |
160 | | - .role(Role.valueOf(request.getRole())) // Ensure enum matches (ROLE_USER or ROLE_HR) |
| 161 | + .role(Role.valueOf(request.getRole())) // Either ROLE_HR or ROLE_USER |
161 | 162 | .isGoogleUser(true) |
| 163 | + .createdAt(LocalDateTime.now().toString()) |
162 | 164 | .build(); |
163 | 165 |
|
164 | | - if(newUser.getRole().equals(Role.ROLE_HR)){ |
165 | | - String companyCode = CodeGenerator.generateBase64Code();; |
166 | | - while(companyRepository.findByCompanyCode(companyCode).isPresent()){ |
| 166 | + if (newUser.getRole().equals(Role.ROLE_HR)) { |
| 167 | + // Generate unique company code |
| 168 | + String companyCode = CodeGenerator.generateBase64Code(); |
| 169 | + while (companyRepository.findByCompanyCode(companyCode).isPresent()) { |
167 | 170 | companyCode = CodeGenerator.generateBase64Code(); |
168 | 171 | } |
169 | 172 | newUser.setCompanyCode(companyCode); |
170 | | - } |
171 | | - |
172 | | - |
173 | | - User savedUser = userRepository.save(newUser); |
174 | | - |
175 | | - Company company = Company.builder().hr(savedUser.getId()).companyCode(savedUser.getCompanyCode()).build(); |
176 | | - companyRepository.save(company); |
177 | | - |
178 | | - String jwt = jwtHelper.generateToken(savedUser, savedUser.getRole().name()); |
179 | | - UserResponseDto userResponseDto = modelMapper.map(savedUser, UserResponseDto.class); |
180 | 173 |
|
181 | | - JwtResponse jwtResponse = JwtResponse.builder() |
182 | | - .user(userResponseDto) |
183 | | - .token(jwt) |
184 | | - .build(); |
185 | | - |
186 | | - return ResponseEntity.ok(jwtResponse); |
| 174 | + // Save HR user |
| 175 | + User savedUser = userRepository.save(newUser); |
| 176 | + |
| 177 | + // Create and save company |
| 178 | + Company company = Company.builder() |
| 179 | + .companyCode(companyCode) |
| 180 | + .hr(savedUser.getId()) |
| 181 | + .createdDate(LocalDateTime.now().toString()) |
| 182 | + .build(); |
| 183 | + companyRepository.save(company); |
| 184 | + |
| 185 | + // Generate JWT |
| 186 | + String jwt = jwtHelper.generateToken(savedUser, savedUser.getRole().name()); |
| 187 | + UserResponseDto userResponseDto = modelMapper.map(savedUser, UserResponseDto.class); |
| 188 | + JwtResponse jwtResponse = JwtResponse.builder() |
| 189 | + .user(userResponseDto) |
| 190 | + .token(jwt) |
| 191 | + .build(); |
| 192 | + return ResponseEntity.ok(jwtResponse); |
| 193 | + |
| 194 | + } else { |
| 195 | + // ROLE_USER – no company code provided |
| 196 | + User savedUser = userRepository.save(newUser); |
| 197 | + |
| 198 | + // Generate JWT |
| 199 | + String jwt = jwtHelper.generateToken(savedUser, savedUser.getRole().name()); |
| 200 | + UserResponseDto userResponseDto = modelMapper.map(savedUser, UserResponseDto.class); |
| 201 | + JwtResponse jwtResponse = JwtResponse.builder() |
| 202 | + .user(userResponseDto) |
| 203 | + .token(jwt) |
| 204 | + .build(); |
| 205 | + return ResponseEntity.ok(jwtResponse); |
| 206 | + } |
187 | 207 | } |
188 | 208 |
|
189 | 209 | } |
0 commit comments