Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- package com.ateam.egrocery.api.listener;
- import com.ateam.egrocery.api.domain.User;
- import com.ateam.egrocery.api.domain.enums.Role;
- import com.ateam.egrocery.api.repository.UserRepository;
- import org.springframework.context.event.EventListener;
- import org.springframework.security.authentication.event.AuthenticationSuccessEvent;
- import org.springframework.security.core.userdetails.UsernameNotFoundException;
- import org.springframework.security.oauth2.provider.OAuth2Authentication;
- import org.springframework.security.oauth2.provider.authentication.OAuth2AuthenticationDetails;
- import org.springframework.stereotype.Component;
- import java.util.Map;
- @Component
- public class AuthenticationSuccessListener {
- private final UserRepository userRepository;
- public AuthenticationSuccessListener(UserRepository userRepository) {
- this.userRepository = userRepository;
- }
- @EventListener
- void onAuthenticationSuccess(AuthenticationSuccessEvent authenticationSuccessEvent) {
- try {
- OAuth2Authentication authentication = (OAuth2Authentication) authenticationSuccessEvent.getAuthentication();
- OAuth2AuthenticationDetails oAuth2AuthenticationDetails = (OAuth2AuthenticationDetails) authentication.getDetails();
- try {
- userRepository.findByUsername(authentication.getName())
- .orElseThrow(() ->
- new UsernameNotFoundException("User With Username " + authentication.getName() + " Not Found")
- );
- } catch (UsernameNotFoundException e) {
- User newUser = new User();
- newUser.setUsername(authentication.getName());
- Map<String, String> map = (Map<String, String>) authentication.getUserAuthentication().getDetails();
- String name = map.get("name").toString();
- String[] names = name.split(" ");
- if (names.length > 1) {
- newUser.setFirstName(names[0]);
- newUser.setLastName(names[1]);
- }
- else {
- newUser.setFirstName(name);
- }
- newUser.setRole(Role.ROLE_USER);
- userRepository.save(newUser);
- }
- } catch (ClassCastException e) {
- System.out.println("Authentication unsuccessful: " + e.getMessage());
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement