1414import br .com .developers .domain .model .User ;
1515import br .com .developers .domain .repository .RoleRepository ;
1616import br .com .developers .domain .repository .UserRepository ;
17+ import br .com .developers .exception .ExistingEmailException ;
18+ import br .com .developers .exception .RoleNotFoundException ;
19+ import br .com .developers .exception .UserNotFoundException ;
1720import br .com .developers .login .dto .LoginDTO ;
1821import br .com .developers .login .dto .RegisterDTO ;
19- import br .com .developers .login .exception .ExistingEmailException ;
20- import br .com .developers .login .exception .RoleNotFoundException ;
2122import br .com .developers .login .http .request .AccessToken ;
2223import br .com .developers .login .service .UserService ;
2324import lombok .AccessLevel ;
2829class UserServiceImpl implements UserService {
2930
3031 private static final String ROLE_NOT_FOUND = "Fail! -> Cause: %s Role not found in database." ;
32+ private static final String USER_NOT_FOUND = "Fail! -> Cause: User not found with email [%s]" ;
3133
3234 private UserRepository userRepository ;
3335 private RoleRepository roleRepository ;
@@ -36,28 +38,48 @@ class UserServiceImpl implements UserService {
3638 private AuthenticationManager authenticationManager ;
3739
3840 public User registerUser (RegisterDTO registerData ) {
39- if (this .userRepository .existsByEmail (registerData .getEmail ())) {
41+ if (this .userRepository .existsByEmail (registerData .getEmail (). toLowerCase () )) {
4042 throw new ExistingEmailException ();
4143 }
4244
4345 User user = User .newBuilder ().firstName (registerData .getName ())
44- .lastName (registerData .getLastName ()).email (registerData .getEmail ())
46+ .lastName (registerData .getLastName ()).email (registerData .getEmail (). toLowerCase () )
4547 .password (this .encoder .encode (registerData .getPassword ())).build ();
48+ Set <Role > roles = getAllRoles (registerData );
49+
50+ user .setRoles (roles );
51+ return this .userRepository .saveAndFlush (user );
52+
53+ }
54+
55+
56+ private Set <Role > getAllRoles (RegisterDTO registerData ) {
4657 Set <String > strRoles = registerData .getRole ();
4758 Set <Role > roles = new HashSet <>();
48-
4959 strRoles .forEach (role -> {
5060 RoleName roleName = RoleName .find (role );
5161 Role permission = this .roleRepository .findByName (roleName )
5262 .orElseThrow (() -> new RoleNotFoundException (String .format (ROLE_NOT_FOUND , role )));
5363 roles .add (permission );
5464 });
65+ return roles ;
66+ }
5567
56- user .setRoles (roles );
57- return this .userRepository .saveAndFlush (user );
5868
69+ public void updateUser (RegisterDTO registerData ) {
70+ User user = this .userRepository .findByEmail (registerData .getEmail ().toLowerCase ()).orElseThrow (
71+ () -> new UserNotFoundException (String .format (USER_NOT_FOUND , registerData .getEmail ())));
72+ user .setFirstName (registerData .getName ());
73+ user .setLastName (registerData .getLastName ());
74+ user .setPassword (registerData .getPassword ());
75+ user .setRoles (getAllRoles (registerData ));
76+ }
77+
78+ public void delete (LoginDTO loginDTO ) {
79+ User user = this .userRepository .findByEmail (loginDTO .getEmail ().toLowerCase ()).orElseThrow (
80+ () -> new UserNotFoundException (String .format (USER_NOT_FOUND , loginDTO .getEmail ())));
81+ this .userRepository .delete (user );
5982 }
60-
6183
6284 public AccessToken authenticateUser (LoginDTO loginDto ) {
6385 Authentication authentication = this .authenticationManager .authenticate (
0 commit comments