diff --git a/backend/src/main/java/de/szut/casino/security/GitHubService.java b/backend/src/main/java/de/szut/casino/security/GitHubService.java index a345825..9ef8274 100644 --- a/backend/src/main/java/de/szut/casino/security/GitHubService.java +++ b/backend/src/main/java/de/szut/casino/security/GitHubService.java @@ -25,6 +25,8 @@ import java.util.*; @Service public class GitHubService { + private static final Logger logger = LoggerFactory.getLogger(GitHubService.class); + @Value("${spring.security.oauth2.client.registration.github.client-id}") private String clientId; @@ -69,27 +71,32 @@ public class GitHubService { ); Map responseBody = response.getBody(); + logger.info("GitHub token response: {}", responseBody); // Check if there's an error in the response if (responseBody.containsKey("error")) { String error = (String) responseBody.get("error"); String errorDescription = (String) responseBody.get("error_description"); - + logger.error("GitHub OAuth error: {} - {}", error, errorDescription); throw new RuntimeException("GitHub OAuth error: " + errorDescription); } String accessToken = (String) responseBody.get("access_token"); if (accessToken == null || accessToken.isEmpty()) { - + logger.error("No access token received from GitHub"); throw new RuntimeException("Failed to receive access token from GitHub"); } + logger.info("Received access token from GitHub"); + // Get user info HttpHeaders userInfoHeaders = new HttpHeaders(); userInfoHeaders.set("Authorization", "Bearer " + accessToken); HttpEntity userInfoRequestEntity = new HttpEntity<>(null, userInfoHeaders); + logger.info("Making request to GitHub API with token: {}", accessToken.substring(0, 5) + "..."); + ResponseEntity userResponse = restTemplate.exchange( "https://api.github.com/user", HttpMethod.GET, @@ -98,6 +105,7 @@ public class GitHubService { ); Map userAttributes = userResponse.getBody(); + logger.info("Retrieved user info from GitHub: {}", userAttributes.get("login")); // Get user emails HttpHeaders emailsHeaders = new HttpHeaders(); @@ -129,6 +137,8 @@ public class GitHubService { email = (String) emails.get(0).get("email"); } + logger.info("Using email: {}", email); + // Process user data String githubId = userAttributes.get("id").toString(); String username = (String) userAttributes.get("login"); @@ -140,6 +150,7 @@ public class GitHubService { if (userOptional.isPresent()) { // Update existing user user = userOptional.get(); + logger.info("Found existing user with providerId: {}", githubId); } else { // Check if email exists userOptional = userRepository.findByEmail(email); @@ -148,6 +159,7 @@ public class GitHubService { user = userOptional.get(); user.setProvider(AuthProvider.GITHUB); user.setProviderId(githubId); + logger.info("Updating existing user with email: {}", email); } else { // Create new user user = new UserEntity(); @@ -158,6 +170,7 @@ public class GitHubService { user.setEmailVerified(true); user.setBalance(new BigDecimal("1000.00")); + logger.info("Creating new user for: {}", username); } } @@ -170,10 +183,12 @@ public class GitHubService { // Generate JWT token String token = jwtUtils.generateToken(authentication); + logger.info("Generated JWT token"); return new AuthResponseDto(token); } catch (Exception e) { + logger.error("Error processing GitHub code", e); throw new RuntimeException("Failed to process GitHub authentication", e); } } diff --git a/backend/src/main/java/de/szut/casino/security/oauth2/GitHubOAuth2UserInfo.java b/backend/src/main/java/de/szut/casino/security/oauth2/GitHubOAuth2UserInfo.java index 77ac16c..baf8995 100644 --- a/backend/src/main/java/de/szut/casino/security/oauth2/GitHubOAuth2UserInfo.java +++ b/backend/src/main/java/de/szut/casino/security/oauth2/GitHubOAuth2UserInfo.java @@ -22,4 +22,9 @@ public class GitHubOAuth2UserInfo extends OAuth2UserInfo { public String getEmail() { return (String) attributes.get("email"); } + + @Override + public String getImageUrl() { + return (String) attributes.get("avatar_url"); + } } \ No newline at end of file diff --git a/backend/src/main/java/de/szut/casino/security/oauth2/OAuth2UserInfo.java b/backend/src/main/java/de/szut/casino/security/oauth2/OAuth2UserInfo.java index 5019bb1..3acd762 100644 --- a/backend/src/main/java/de/szut/casino/security/oauth2/OAuth2UserInfo.java +++ b/backend/src/main/java/de/szut/casino/security/oauth2/OAuth2UserInfo.java @@ -1,10 +1,7 @@ package de.szut.casino.security.oauth2; -import lombok.Getter; - import java.util.Map; -@Getter public abstract class OAuth2UserInfo { protected Map attributes; @@ -12,9 +9,15 @@ public abstract class OAuth2UserInfo { this.attributes = attributes; } + public Map getAttributes() { + return attributes; + } + public abstract String getId(); public abstract String getName(); public abstract String getEmail(); + + public abstract String getImageUrl(); } \ No newline at end of file diff --git a/backend/src/main/java/de/szut/casino/security/oauth2/UserPrincipal.java b/backend/src/main/java/de/szut/casino/security/oauth2/UserPrincipal.java index 1460982..6c993a0 100644 --- a/backend/src/main/java/de/szut/casino/security/oauth2/UserPrincipal.java +++ b/backend/src/main/java/de/szut/casino/security/oauth2/UserPrincipal.java @@ -1,8 +1,6 @@ package de.szut.casino.security.oauth2; import de.szut.casino.user.UserEntity; -import lombok.Getter; -import lombok.Setter; import org.springframework.security.core.GrantedAuthority; import org.springframework.security.core.authority.SimpleGrantedAuthority; import org.springframework.security.core.userdetails.UserDetails; @@ -14,14 +12,11 @@ import java.util.List; import java.util.Map; public class UserPrincipal implements OAuth2User, UserDetails { - @Getter private Long id; - @Getter private String email; private String username; private String password; private Collection authorities; - @Setter private Map attributes; public UserPrincipal(Long id, String email, String username, String password, Collection authorities) { @@ -51,6 +46,14 @@ public class UserPrincipal implements OAuth2User, UserDetails { return userPrincipal; } + public Long getId() { + return id; + } + + public String getEmail() { + return email; + } + @Override public String getPassword() { return password; @@ -96,6 +99,10 @@ public class UserPrincipal implements OAuth2User, UserDetails { return attributes; } + public void setAttributes(Map attributes) { + this.attributes = attributes; + } + @Override public String getName() { return String.valueOf(id);