@@ -469,19 +469,17 @@ public JwtResponse unlockAccount(
469469 @ Override
470470 @ Transactional
471471 public ApiKeyResponse generateApiKey (HttpServletRequest request , LoginForm loginForm ) {
472- // if user is unauthenticated, use loginForm else user token to authenticate
472+ Authentication authentication =
473+ authenticationManager .authenticate (
474+ new UsernamePasswordAuthenticationToken (loginForm .getEmail (), loginForm .getPassword ()));
475+ if (authentication == null ) {
476+ return new ApiKeyResponse (null , UserMessage .INVALID_CREDENTIALS );
477+ }
478+ log .info ("Generate Api Key for user: {}" , loginForm .getEmail ());
473479 User user ;
474480 if (request == null || jwtAuthTokenFilter .getToken (request ) == null ) {
475481 user = userRepository .findByEmail (loginForm .getEmail ());
476482 } else {
477- log .info ("Generate Api Key for user: {}" , loginForm .getEmail ());
478- Authentication authentication =
479- authenticationManager .authenticate (
480- new UsernamePasswordAuthenticationToken (
481- loginForm .getEmail (), loginForm .getPassword ()));
482- if (authentication == null ) {
483- return new ApiKeyResponse (null , UserMessage .INVALID_CREDENTIALS );
484- }
485483 user = getUserFromToken (request );
486484 }
487485 if (user == null ) {
@@ -493,14 +491,47 @@ public ApiKeyResponse generateApiKey(HttpServletRequest request, LoginForm login
493491 log .debug ("Api Key already generated for user: {}" , user .getEmail ());
494492 return new ApiKeyResponse (user .getApiKey ());
495493 }
496- log .info ("Generate Api Key for user in token: {}" , user .getEmail ());
497494 String apiKey = ApiKeyGenerator .generateRandom (512 );
498- log .debug ("Api Key for user in token {}: {}" , user .getEmail (), apiKey );
495+ log .debug ("Api Key for user {}: {}" , user .getEmail (), apiKey );
499496 user .setApiKey (apiKey );
500497 userRepository .save (user );
501498 return new ApiKeyResponse (user .getApiKey (), UserMessage .API_KEY_GENERATED_MESSAGE );
502499 }
503500
501+ /**
502+ * @param request None
503+ * @param loginForm LoginForm with user email and password
504+ * @return JwtResponse with generated JWT token
505+ */
506+ @ Override
507+ @ Transactional
508+ public JwtResponse generateJwtToken (HttpServletRequest request , LoginForm loginForm ) {
509+ Authentication authentication =
510+ authenticationManager .authenticate (
511+ new UsernamePasswordAuthenticationToken (loginForm .getEmail (), loginForm .getPassword ()));
512+ if (authentication == null ) {
513+ return new JwtResponse (null , UserMessage .INVALID_CREDENTIALS );
514+ }
515+ log .info ("Generate JWT token for user: {}" , loginForm .getEmail ());
516+ User user ;
517+ if (request == null || jwtAuthTokenFilter .getToken (request ) == null ) {
518+ user = userRepository .findByEmail (loginForm .getEmail ());
519+ } else {
520+ user = getUserFromToken (request );
521+ }
522+ if (user == null ) {
523+ log .debug ("User not found to generate JWT token" );
524+ return new JwtResponse (null , UserMessage .INVALID_CREDENTIALS );
525+ }
526+ String jwt = jwtProvider .generateJwtToken (user );
527+ log .debug ("JWT token for user {}: {}" , user .getEmail (), jwt );
528+ if (jwt != null ) {
529+ return new JwtResponse (jwt , UserMessage .JWT_TOKEN_GENERATED_MESSAGE );
530+ } else {
531+ return new JwtResponse (null , UserMessage .JWT_TOKEN_GENERATION_FAILED );
532+ }
533+ }
534+
504535 /**
505536 * @param changePhoneForm contains old phone number and new phone number, api will send otp to
506537 * change number to email address.
0 commit comments