pparth602

Auth Service Impl

Nov 1st, 2022
790
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 4.20 KB | Software | 0 0
  1. @Service
  2. @RequiredArgsConstructor
  3. public class AuthServiceImpl implements AuthService {
  4.  
  5.   private final EmailValidator emailValidator;
  6.   private final EmailSenderService emailSenderService;
  7.   private final AuthenticationManager authenticationManager;
  8.   private final JwtUtils jwtUtils;
  9.   private final PasswordEncoder encoder;
  10.   private final UserRepository userRepository;
  11.   private final RoleRepository roleRepository;
  12.   private final OrgRepository orgRepository;
  13.  
  14.   @Override
  15.   public ResponseEntity<?> authenticateUser(LoginRequest loginRequest) {
  16.     Authentication authentication =
  17.         authenticationManager.authenticate(
  18.             new UsernamePasswordAuthenticationToken(
  19.                 loginRequest.getUsername(), loginRequest.getPassword()));
  20.  
  21.     SecurityContextHolder.getContext().setAuthentication(authentication);
  22.     String jwt = jwtUtils.generateJwtToken(authentication);
  23.  
  24.     UserDetailsImpl userDetails = (UserDetailsImpl) authentication.getPrincipal();
  25.     List<String> roles =
  26.         userDetails.getAuthorities().stream()
  27.             .map(item -> item.getAuthority())
  28.             .collect(Collectors.toList());
  29.  
  30.     return ResponseEntity.ok(
  31.         new JwtResponse(
  32.             jwt, userDetails.getId(), userDetails.getUsername(), userDetails.getEmail(), roles));
  33.   }
  34.  
  35.   @Override
  36.   public ResponseEntity<?> registerUser(SignupRequest signUpRequest) {
  37.     boolean isValidEmail = emailValidator.test(signUpRequest.getEmail());
  38.     if (!isValidEmail) {
  39.       throw new InvalidEmailCustomException("PLEASE ENTER VALID EMAIL ADDRESS", "INVALID_REQUEST");
  40.     }
  41.     if (userRepository.existsByUsername(signUpRequest.getUsername())) {
  42.       return ResponseEntity.badRequest()
  43.           .body(new MessageResponse("Error: Username is already taken!"));
  44.     }
  45.  
  46.     if (userRepository.existsByEmail(signUpRequest.getEmail())) {
  47.       return ResponseEntity.badRequest()
  48.           .body(
  49.               new MessageResponse(
  50.                   "Error: Email is already taken by someone else. Please "
  51.                       + "Enter different email!"));
  52.     }
  53.  
  54.     if (!orgRepository.existsByOrgName(signUpRequest.getOrganization().getOrgName())) {
  55.       orgRepository.save(signUpRequest.getOrganization());
  56.     }
  57.  
  58.     // Create new user's account
  59.     String verificationCode = RandomString.make(64);
  60.     User user =
  61.         new User(
  62.             signUpRequest.getUsername(),
  63.             signUpRequest.getEmail(),
  64.             encoder.encode(signUpRequest.getPassword()),
  65.             verificationCode,
  66.             false,
  67.             signUpRequest.getOrganization());
  68.  
  69.     Set<String> strRoles = signUpRequest.getRoles();
  70.     Set<Role> roles = new HashSet<>();
  71.  
  72.     if (strRoles == null) {
  73.       Role userRole =
  74.           roleRepository
  75.               .findByName(ERole.ROLE_USER)
  76.               .orElseThrow(() -> new RuntimeException("Error: Role is not found."));
  77.       roles.add(userRole);
  78.     } else {
  79.       strRoles.forEach(
  80.           role -> {
  81.             switch (role) {
  82.               case "admin":
  83.                 Role adminRole =
  84.                     roleRepository
  85.                         .findByName(ERole.ROLE_ADMIN)
  86.                         .orElseThrow(() -> new RuntimeException("Error: Role is not found."));
  87.                 roles.add(adminRole);
  88.  
  89.                 break;
  90.  
  91.               default:
  92.                 Role userRole =
  93.                     roleRepository
  94.                         .findByName(ERole.ROLE_USER)
  95.                         .orElseThrow(() -> new RuntimeException("Error: Role is not found."));
  96.                 roles.add(userRole);
  97.             }
  98.           });
  99.  
  100.       emailSenderService.sendVerificationEmail(user, user.getEmail(), user.getVerificationCode());
  101.     }
  102.  
  103.     user.setRoles(roles);
  104.     userRepository.save(user);
  105.     return ResponseEntity.ok(new MessageResponse("User registered successfully!"));
  106.   }
  107.  
  108.   public boolean verify(String verificationCode) {
  109.     User user = userRepository.findByVerificationCode(verificationCode);
  110.  
  111.     if (user == null || user.isEnabled()) {
  112.       return false;
  113.     } else {
  114.       user.setEnabled(true);
  115.       user.setVerificationCode(null);
  116.       userRepository.save(user);
  117.       return true;
  118.     }
  119.   }
  120. }
  121.  
Advertisement
Add Comment
Please, Sign In to add comment