Advertisement
Guest User

Untitled

a guest
Jan 19th, 2018
67
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 2.43 KB | None | 0 0
  1. package com.ateam.egrocery.api.listener;
  2.  
  3. import com.ateam.egrocery.api.domain.User;
  4. import com.ateam.egrocery.api.domain.enums.Role;
  5. import com.ateam.egrocery.api.repository.UserRepository;
  6. import org.springframework.context.event.EventListener;
  7. import org.springframework.security.authentication.event.AuthenticationSuccessEvent;
  8. import org.springframework.security.core.userdetails.UsernameNotFoundException;
  9. import org.springframework.security.oauth2.provider.OAuth2Authentication;
  10. import org.springframework.security.oauth2.provider.authentication.OAuth2AuthenticationDetails;
  11. import org.springframework.stereotype.Component;
  12.  
  13. import java.util.Map;
  14.  
  15. @Component
  16. public class AuthenticationSuccessListener {
  17.  
  18.     private final UserRepository userRepository;
  19.  
  20.     public AuthenticationSuccessListener(UserRepository userRepository) {
  21.         this.userRepository = userRepository;
  22.     }
  23.  
  24.     @EventListener
  25.     void onAuthenticationSuccess(AuthenticationSuccessEvent authenticationSuccessEvent) {
  26.         try {
  27.             OAuth2Authentication authentication = (OAuth2Authentication) authenticationSuccessEvent.getAuthentication();
  28.             OAuth2AuthenticationDetails oAuth2AuthenticationDetails = (OAuth2AuthenticationDetails) authentication.getDetails();
  29.  
  30.             try {
  31.                 userRepository.findByUsername(authentication.getName())
  32.                         .orElseThrow(() ->
  33.                                 new UsernameNotFoundException("User With Username " + authentication.getName() + " Not Found")
  34.                         );
  35.             } catch (UsernameNotFoundException e) {
  36.                 User newUser = new User();
  37.                 newUser.setUsername(authentication.getName());
  38.                 Map<String, String> map = (Map<String, String>) authentication.getUserAuthentication().getDetails();
  39.                 String name = map.get("name").toString();
  40.                 String[] names = name.split(" ");
  41.                 if (names.length > 1) {
  42.                     newUser.setFirstName(names[0]);
  43.                     newUser.setLastName(names[1]);
  44.                 }
  45.                 else {
  46.                     newUser.setFirstName(name);
  47.                 }
  48.                 newUser.setRole(Role.ROLE_USER);
  49.                 userRepository.save(newUser);
  50.             }
  51.         } catch (ClassCastException e) {
  52.             System.out.println("Authentication unsuccessful: " + e.getMessage());
  53.         }
  54.     }
  55. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement