Returns ProfilePicture Image Url in UserResponse
This commit is contained in:
@@ -15,6 +15,11 @@ public class GithubOAuthMap implements OAuthMap {
|
|||||||
return oAuth2User.getAttribute("login");
|
return oAuth2User.getAttribute("login");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public String getProfilePicture() {
|
||||||
|
return this.oAuth2User.getAttribute("avatar_url");
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public Provider getProvider() {
|
public Provider getProvider() {
|
||||||
return Provider.GITHUB;
|
return Provider.GITHUB;
|
||||||
|
|||||||
@@ -8,11 +8,16 @@ import org.springframework.security.oauth2.core.user.OAuth2User;
|
|||||||
@AllArgsConstructor
|
@AllArgsConstructor
|
||||||
public class GoogleOAuthMap implements OAuthMap {
|
public class GoogleOAuthMap implements OAuthMap {
|
||||||
|
|
||||||
private OAuth2User oauthUser;
|
private OAuth2User oAuth2User;
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public String getPrincipal() {
|
public String getPrincipal() {
|
||||||
return this.oauthUser.getAttribute("given_name");
|
return this.oAuth2User.getAttribute("given_name");
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public String getProfilePicture() {
|
||||||
|
return this.oAuth2User.getAttribute("picture");
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@@ -20,5 +25,4 @@ public class GoogleOAuthMap implements OAuthMap {
|
|||||||
return Provider.GOOGLE;
|
return Provider.GOOGLE;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -7,6 +7,8 @@ public interface OAuthMap {
|
|||||||
|
|
||||||
String getPrincipal();
|
String getPrincipal();
|
||||||
|
|
||||||
|
String getProfilePicture();
|
||||||
|
|
||||||
Provider getProvider();
|
Provider getProvider();
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,8 +1,9 @@
|
|||||||
package com.hideyoshi.backendportfolio.base.security.oauth.mapper;
|
package com.hideyoshi.backendportfolio.base.security.oauth.mapper;
|
||||||
|
|
||||||
import com.hideyoshi.backendportfolio.base.user.entity.Provider;
|
import com.hideyoshi.backendportfolio.base.user.entity.Provider;
|
||||||
|
import lombok.Getter;
|
||||||
|
|
||||||
public enum OAuthMapEnum {
|
public enum OAuthMapper {
|
||||||
|
|
||||||
GOOGLE(GoogleOAuthMap.class, Provider.GOOGLE),
|
GOOGLE(GoogleOAuthMap.class, Provider.GOOGLE),
|
||||||
|
|
||||||
@@ -10,9 +11,10 @@ public enum OAuthMapEnum {
|
|||||||
|
|
||||||
private final Class oAuthMap;
|
private final Class oAuthMap;
|
||||||
|
|
||||||
|
@Getter
|
||||||
private final Provider provider;
|
private final Provider provider;
|
||||||
|
|
||||||
private OAuthMapEnum(Class oAuthMap, Provider provider) {
|
private OAuthMapper(Class oAuthMap, Provider provider) {
|
||||||
this.oAuthMap = oAuthMap;
|
this.oAuthMap = oAuthMap;
|
||||||
this.provider = provider;
|
this.provider = provider;
|
||||||
}
|
}
|
||||||
@@ -21,12 +23,8 @@ public enum OAuthMapEnum {
|
|||||||
return oAuthMap;
|
return oAuthMap;
|
||||||
}
|
}
|
||||||
|
|
||||||
public Provider getProvider() {
|
public static OAuthMapper byValue(String name) {
|
||||||
return provider;
|
for (OAuthMapper e : values()) {
|
||||||
}
|
|
||||||
|
|
||||||
public static OAuthMapEnum byValue(String name) {
|
|
||||||
for (OAuthMapEnum e : values()) {
|
|
||||||
if (e.getProvider().getName().equals(name)) {
|
if (e.getProvider().getName().equals(name)) {
|
||||||
return e;
|
return e;
|
||||||
}
|
}
|
||||||
@@ -6,12 +6,13 @@ import com.auth0.jwt.algorithms.Algorithm;
|
|||||||
import com.auth0.jwt.interfaces.DecodedJWT;
|
import com.auth0.jwt.interfaces.DecodedJWT;
|
||||||
import com.fasterxml.jackson.databind.ObjectMapper;
|
import com.fasterxml.jackson.databind.ObjectMapper;
|
||||||
import com.hideyoshi.backendportfolio.base.security.oauth.mapper.OAuthMap;
|
import com.hideyoshi.backendportfolio.base.security.oauth.mapper.OAuthMap;
|
||||||
import com.hideyoshi.backendportfolio.base.security.oauth.mapper.OAuthMapEnum;
|
import com.hideyoshi.backendportfolio.base.security.oauth.mapper.OAuthMapper;
|
||||||
import com.hideyoshi.backendportfolio.base.user.entity.Provider;
|
import com.hideyoshi.backendportfolio.base.user.entity.Provider;
|
||||||
import com.hideyoshi.backendportfolio.base.user.entity.Role;
|
import com.hideyoshi.backendportfolio.base.user.entity.Role;
|
||||||
import com.hideyoshi.backendportfolio.base.user.model.TokenDTO;
|
import com.hideyoshi.backendportfolio.base.user.model.TokenDTO;
|
||||||
import com.hideyoshi.backendportfolio.base.user.model.UserDTO;
|
import com.hideyoshi.backendportfolio.base.user.model.UserDTO;
|
||||||
import com.hideyoshi.backendportfolio.base.user.service.UserService;
|
import com.hideyoshi.backendportfolio.base.user.service.UserService;
|
||||||
|
import com.hideyoshi.backendportfolio.microservice.storageService.service.StorageService;
|
||||||
import com.hideyoshi.backendportfolio.util.exception.BadRequestException;
|
import com.hideyoshi.backendportfolio.util.exception.BadRequestException;
|
||||||
import lombok.RequiredArgsConstructor;
|
import lombok.RequiredArgsConstructor;
|
||||||
import lombok.extern.log4j.Log4j2;
|
import lombok.extern.log4j.Log4j2;
|
||||||
@@ -56,6 +57,8 @@ public class AuthServiceImpl implements AuthService {
|
|||||||
|
|
||||||
private final UserService userService;
|
private final UserService userService;
|
||||||
|
|
||||||
|
private final StorageService storageService;
|
||||||
|
|
||||||
@Autowired
|
@Autowired
|
||||||
@Qualifier("handlerExceptionResolver")
|
@Qualifier("handlerExceptionResolver")
|
||||||
private HandlerExceptionResolver resolver;
|
private HandlerExceptionResolver resolver;
|
||||||
@@ -172,11 +175,36 @@ public class AuthServiceImpl implements AuthService {
|
|||||||
|
|
||||||
user.setProvider(Provider.LOCAL);
|
user.setProvider(Provider.LOCAL);
|
||||||
|
|
||||||
return this.generateUserWithTokens(
|
UserDTO authenticatedUser = this.generateUserWithTokens(
|
||||||
this.userService.saveUser(user),
|
this.userService.saveUser(user),
|
||||||
request
|
request
|
||||||
);
|
);
|
||||||
|
|
||||||
|
authenticatedUser.setProfilePictureUrl(
|
||||||
|
this.storageService.getFileUrl(authenticatedUser.getUsername(), "profile")
|
||||||
|
.getPresignedUrl()
|
||||||
|
);
|
||||||
|
|
||||||
|
return authenticatedUser;
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void loginUser(HttpServletRequest request, HttpServletResponse response, @Valid UserDTO user) throws IOException {
|
||||||
|
|
||||||
|
UserDTO authenticatedUser = this.generateUserWithTokens(
|
||||||
|
user,
|
||||||
|
request
|
||||||
|
);
|
||||||
|
|
||||||
|
authenticatedUser.setProfilePictureUrl(
|
||||||
|
this.storageService.getFileUrl(authenticatedUser.getUsername(), "profile")
|
||||||
|
.getPresignedUrl()
|
||||||
|
);
|
||||||
|
|
||||||
|
response.setContentType(APPLICATION_JSON_VALUE);
|
||||||
|
new ObjectMapper()
|
||||||
|
.writeValue(response.getOutputStream(), authenticatedUser);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@@ -204,20 +232,6 @@ public class AuthServiceImpl implements AuthService {
|
|||||||
}
|
}
|
||||||
|
|
||||||
return this.generateUserWithTokens(user, request);
|
return this.generateUserWithTokens(user, request);
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public void loginUser(HttpServletRequest request, HttpServletResponse response, @Valid UserDTO user) throws IOException {
|
|
||||||
|
|
||||||
UserDTO authenticatedUser = this.generateUserWithTokens(
|
|
||||||
user,
|
|
||||||
request
|
|
||||||
);
|
|
||||||
|
|
||||||
response.setContentType(APPLICATION_JSON_VALUE);
|
|
||||||
new ObjectMapper()
|
|
||||||
.writeValue(response.getOutputStream(), authenticatedUser);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public void loginOAuthUser(HttpServletRequest request,
|
public void loginOAuthUser(HttpServletRequest request,
|
||||||
@@ -229,7 +243,7 @@ public class AuthServiceImpl implements AuthService {
|
|||||||
|
|
||||||
OAuthMap oauthMap = null;
|
OAuthMap oauthMap = null;
|
||||||
try {
|
try {
|
||||||
oauthMap = (OAuthMap) OAuthMapEnum.byValue(clientId).getMap()
|
oauthMap = (OAuthMap) OAuthMapper.byValue(clientId).getMap()
|
||||||
.getDeclaredConstructor(OAuth2User.class).newInstance(oauthUser);
|
.getDeclaredConstructor(OAuth2User.class).newInstance(oauthUser);
|
||||||
} catch (Exception e) {
|
} catch (Exception e) {
|
||||||
throw new BadRequestException("No Such Provider");
|
throw new BadRequestException("No Such Provider");
|
||||||
@@ -238,6 +252,7 @@ public class AuthServiceImpl implements AuthService {
|
|||||||
UserDTO user = null;
|
UserDTO user = null;
|
||||||
try {
|
try {
|
||||||
user = this.userService.getUser(oauthMap.getPrincipal());
|
user = this.userService.getUser(oauthMap.getPrincipal());
|
||||||
|
user.setProfilePictureUrl(oauthMap.getProfilePicture());
|
||||||
} catch (BadRequestException e) {
|
} catch (BadRequestException e) {
|
||||||
user = UserDTO.builder()
|
user = UserDTO.builder()
|
||||||
.name(oauthUser.getAttribute("name"))
|
.name(oauthUser.getAttribute("name"))
|
||||||
@@ -245,6 +260,7 @@ public class AuthServiceImpl implements AuthService {
|
|||||||
.email(oauthUser.getAttribute("email"))
|
.email(oauthUser.getAttribute("email"))
|
||||||
.roles(Arrays.asList(Role.USER))
|
.roles(Arrays.asList(Role.USER))
|
||||||
.provider(oauthMap.getProvider())
|
.provider(oauthMap.getProvider())
|
||||||
|
.profilePictureUrl(oauthMap.getProfilePicture())
|
||||||
.build();
|
.build();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -17,14 +17,16 @@ public class SessionManagerServiceImpl implements SessionManagerService {
|
|||||||
@Override
|
@Override
|
||||||
public UserDTO validateSession(HttpSession session) {
|
public UserDTO validateSession(HttpSession session) {
|
||||||
|
|
||||||
UserDTO sessionObjects = (UserDTO) session.getAttribute("user");
|
UserDTO sessionObject = (UserDTO) session.getAttribute("user");
|
||||||
|
|
||||||
if (Objects.nonNull(sessionObjects)) {
|
if (Objects.nonNull(sessionObject)) {
|
||||||
return this.userService.getUser(sessionObjects.getUsername())
|
sessionObject = sessionObject.toResponse(
|
||||||
.toResponse(sessionObjects.getAccessToken(), sessionObjects.getRefreshToken());
|
sessionObject.getAccessToken(),
|
||||||
|
sessionObject.getRefreshToken()
|
||||||
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
return null;
|
return sessionObject;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
|||||||
@@ -83,16 +83,6 @@ public class UserController {
|
|||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
@GetMapping("/profile-picture")
|
|
||||||
@UserResourceGuard(accessType = UserResourceGuardEnum.USER)
|
|
||||||
public StorageServiceDownloadResponse getProfilePicture() {
|
|
||||||
UserDTO user = this.authService.getLoggedUser();
|
|
||||||
return this.storageService.getFileUrl(
|
|
||||||
user.getUsername(),
|
|
||||||
"profile"
|
|
||||||
);
|
|
||||||
}
|
|
||||||
|
|
||||||
@PostMapping("/profile-picture/proccess")
|
@PostMapping("/profile-picture/proccess")
|
||||||
@UserResourceGuard(accessType = UserResourceGuardEnum.USER)
|
@UserResourceGuard(accessType = UserResourceGuardEnum.USER)
|
||||||
public void processProfilePicture() {
|
public void processProfilePicture() {
|
||||||
|
|||||||
@@ -53,6 +53,8 @@ public class UserDTO implements UserDetails {
|
|||||||
@Size(min=1)
|
@Size(min=1)
|
||||||
private List<Role> roles;
|
private List<Role> roles;
|
||||||
|
|
||||||
|
private String profilePictureUrl;
|
||||||
|
|
||||||
private TokenDTO accessToken;
|
private TokenDTO accessToken;
|
||||||
|
|
||||||
private TokenDTO refreshToken;
|
private TokenDTO refreshToken;
|
||||||
@@ -121,6 +123,7 @@ public class UserDTO implements UserDetails {
|
|||||||
.email(this.email)
|
.email(this.email)
|
||||||
.username(this.username)
|
.username(this.username)
|
||||||
.provider(this.provider)
|
.provider(this.provider)
|
||||||
|
.profilePictureUrl(this.profilePictureUrl)
|
||||||
.build();
|
.build();
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -132,6 +135,7 @@ public class UserDTO implements UserDetails {
|
|||||||
.username(this.username)
|
.username(this.username)
|
||||||
.provider(this.provider)
|
.provider(this.provider)
|
||||||
.roles(this.roles)
|
.roles(this.roles)
|
||||||
|
.profilePictureUrl(this.profilePictureUrl)
|
||||||
.accessToken(accessToken)
|
.accessToken(accessToken)
|
||||||
.refreshToken(refreshToken)
|
.refreshToken(refreshToken)
|
||||||
.build();
|
.build();
|
||||||
|
|||||||
@@ -2,12 +2,9 @@ package com.hideyoshi.backendportfolio.microservice.storageService.model;
|
|||||||
|
|
||||||
|
|
||||||
import com.fasterxml.jackson.annotation.JsonProperty;
|
import com.fasterxml.jackson.annotation.JsonProperty;
|
||||||
import lombok.AllArgsConstructor;
|
import lombok.*;
|
||||||
import lombok.Data;
|
|
||||||
import lombok.NoArgsConstructor;
|
|
||||||
import lombok.NonNull;
|
|
||||||
|
|
||||||
|
|
||||||
|
@Getter
|
||||||
@NoArgsConstructor
|
@NoArgsConstructor
|
||||||
@AllArgsConstructor
|
@AllArgsConstructor
|
||||||
public class StorageServiceDownloadResponse {
|
public class StorageServiceDownloadResponse {
|
||||||
|
|||||||
@@ -4,8 +4,10 @@ package com.hideyoshi.backendportfolio.microservice.storageService.model;
|
|||||||
import com.fasterxml.jackson.annotation.JsonProperty;
|
import com.fasterxml.jackson.annotation.JsonProperty;
|
||||||
import lombok.AllArgsConstructor;
|
import lombok.AllArgsConstructor;
|
||||||
import lombok.Data;
|
import lombok.Data;
|
||||||
|
import lombok.Getter;
|
||||||
import lombok.NonNull;
|
import lombok.NonNull;
|
||||||
|
|
||||||
|
@Getter
|
||||||
@AllArgsConstructor
|
@AllArgsConstructor
|
||||||
public class StorageServiceUploadResponse {
|
public class StorageServiceUploadResponse {
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user