|
16 | 16 | import org.springframework.beans.factory.annotation.Autowired; |
17 | 17 | import org.springframework.http.HttpStatus; |
18 | 18 | import org.springframework.http.ResponseEntity; |
| 19 | +import org.springframework.security.core.authority.SimpleGrantedAuthority; |
19 | 20 | import org.springframework.security.crypto.password.PasswordEncoder; |
20 | 21 | import org.springframework.stereotype.Service; |
21 | 22 |
|
@@ -79,19 +80,22 @@ public ResponseEntity<?> addUser(User user){ |
79 | 80 |
|
80 | 81 | public ResponseEntity<?> updateUser(User newUser, String username, UserPrincipal currentUser){ |
81 | 82 | User user = userRepository.findByUsername(username).orElseThrow(() -> new ResourceNotFoundException("User", "username", username)); |
82 | | - if(!user.getId().equals(currentUser.getId())){ |
83 | | - return new ResponseEntity<>(new ApiResponse(false, "You don't have permission to update profile of: " + username), HttpStatus.UNAUTHORIZED); |
| 83 | + if(user.getId().equals(currentUser.getId()) || currentUser.getAuthorities().contains(new SimpleGrantedAuthority(RoleName.ROLE_ADMIN.toString()))){ |
| 84 | + user.setFirstName(newUser.getFirstName()); |
| 85 | + user.setLastName(newUser.getLastName()); |
| 86 | + user.setPassword(passwordEncoder.encode(newUser.getPassword())); |
| 87 | + user.setAddress(newUser.getAddress()); |
| 88 | + user.setPhone(newUser.getPhone()); |
| 89 | + user.setWebsite(newUser.getWebsite()); |
| 90 | + user.setCompany(newUser.getCompany()); |
| 91 | + |
| 92 | + User updatedUser = userRepository.save(user); |
| 93 | + return new ResponseEntity<>(updatedUser, HttpStatus.OK); |
| 94 | + |
84 | 95 | } |
85 | | - user.setFirstName(newUser.getFirstName()); |
86 | | - user.setLastName(newUser.getLastName()); |
87 | | - user.setPassword(passwordEncoder.encode(newUser.getPassword())); |
88 | | - user.setAddress(newUser.getAddress()); |
89 | | - user.setPhone(newUser.getPhone()); |
90 | | - user.setWebsite(newUser.getWebsite()); |
91 | | - user.setCompany(newUser.getCompany()); |
92 | | - |
93 | | - User updatedUser = userRepository.save(user); |
94 | | - return new ResponseEntity<>(updatedUser, HttpStatus.OK); |
| 96 | + |
| 97 | + return new ResponseEntity<>(new ApiResponse(false, "You don't have permission to update profile of: " + username), HttpStatus.UNAUTHORIZED); |
| 98 | + |
95 | 99 | } |
96 | 100 |
|
97 | 101 | public ResponseEntity<?> deleteUser(String username, UserPrincipal currentUser){ |
@@ -128,16 +132,19 @@ public ResponseEntity<?> setOrUpdateInfo(UserPrincipal currentUser, InfoRequest |
128 | 132 | Geo geo = new Geo(infoRequest.getLat(), infoRequest.getLng()); |
129 | 133 | Address address = new Address(infoRequest.getStreet(), infoRequest.getSuite(), infoRequest.getCity(), infoRequest.getZipcode(), geo); |
130 | 134 | Company company = new Company(infoRequest.getCompanyName(), infoRequest.getCatchPhrase(), infoRequest.getBs()); |
131 | | - user.setAddress(address); |
132 | | - user.setCompany(company); |
133 | | - user.setWebsite(infoRequest.getWebsite()); |
134 | | - user.setPhone(infoRequest.getPhone()); |
135 | | - User updatedUser = userRepository.save(user); |
| 135 | + if (user.getId().equals(currentUser.getId()) || currentUser.getAuthorities().contains(new SimpleGrantedAuthority(RoleName.ROLE_ADMIN.toString()))){ |
| 136 | + user.setAddress(address); |
| 137 | + user.setCompany(company); |
| 138 | + user.setWebsite(infoRequest.getWebsite()); |
| 139 | + user.setPhone(infoRequest.getPhone()); |
| 140 | + User updatedUser = userRepository.save(user); |
136 | 141 |
|
137 | | - Long postCount = postRepository.countByCreatedBy(updatedUser.getId()); |
| 142 | + Long postCount = postRepository.countByCreatedBy(updatedUser.getId()); |
138 | 143 |
|
139 | 144 |
|
140 | | - UserProfile userProfile = new UserProfile(updatedUser.getId(), updatedUser.getUsername(), updatedUser.getFirstName(), updatedUser.getLastName(), updatedUser.getCreatedAt(), updatedUser.getEmail(), updatedUser.getAddress(), updatedUser.getPhone(), updatedUser.getWebsite(), updatedUser.getCompany(), postCount); |
141 | | - return new ResponseEntity<>(userProfile, HttpStatus.OK); |
| 145 | + UserProfile userProfile = new UserProfile(updatedUser.getId(), updatedUser.getUsername(), updatedUser.getFirstName(), updatedUser.getLastName(), updatedUser.getCreatedAt(), updatedUser.getEmail(), updatedUser.getAddress(), updatedUser.getPhone(), updatedUser.getWebsite(), updatedUser.getCompany(), postCount); |
| 146 | + return new ResponseEntity<>(userProfile, HttpStatus.OK); |
| 147 | + } |
| 148 | + return new ResponseEntity<>(new ApiResponse(false, "You don't have permission to update users profile"), HttpStatus.OK); |
142 | 149 | } |
143 | 150 | } |
0 commit comments