Skip to content
This repository has been archived by the owner on Nov 3, 2022. It is now read-only.

Commit

Permalink
[#141] add principalExtraction
Browse files Browse the repository at this point in the history
  • Loading branch information
jenarp committed Jan 17, 2022
1 parent 4b73ad8 commit 04e66ba
Show file tree
Hide file tree
Showing 6 changed files with 473 additions and 28 deletions.
14 changes: 7 additions & 7 deletions src/main/java/de/bonndan/nivio/Application.java
Original file line number Diff line number Diff line change
Expand Up @@ -17,11 +17,11 @@ public static void main(String[] args) {
SpringApplication.run(Application.class, args);
}

@Bean
CommandLineRunner commandLineRunner(AppUserRepository userRepository) {
return args -> {
AppUser mary = new AppUser("Mary", "mary88", "[email protected]", "avatarURL", AppUserRole.USER, false, true );
userRepository.save(mary);
};
}
// @Bean
// CommandLineRunner commandLineRunner(AppUserRepository userRepository) {
// return args -> {
// AppUser mary = new AppUser("Mary", "mary88", "[email protected]", "avatarURL", AppUserRole.USER, false, true );
// userRepository.save(mary);
// };
// }
}
7 changes: 7 additions & 0 deletions src/main/java/de/bonndan/nivio/appuser/AppUser.java
Original file line number Diff line number Diff line change
Expand Up @@ -64,6 +64,13 @@ public class AppUser implements UserDetails {
)
private String email;

@Column(
name = "principal_id",
nullable = false,
columnDefinition = "TEXT"
)
private String principalId;

@Column(
name = "avatar_url",
nullable = false,
Expand Down
3 changes: 3 additions & 0 deletions src/main/java/de/bonndan/nivio/appuser/AppUserRepository.java
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
package de.bonndan.nivio.appuser;

import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.data.repository.PagingAndSortingRepository;
import org.springframework.stereotype.Repository;
import org.springframework.transaction.annotation.Transactional;

Expand All @@ -10,6 +11,8 @@
@Transactional(readOnly = true)
public interface AppUserRepository extends JpaRepository<AppUser, Long> {

AppUser findByPrincipalId(String principalID);

Optional<AppUser> findByEmail(String email);

}
43 changes: 22 additions & 21 deletions src/main/java/de/bonndan/nivio/security/SecurityConfig.java
Original file line number Diff line number Diff line change
@@ -1,17 +1,17 @@
package de.bonndan.nivio.security;

import de.bonndan.nivio.appuser.AppUser;
import de.bonndan.nivio.appuser.AppUserRepository;
import de.bonndan.nivio.appuser.AppUserRole;
import de.bonndan.nivio.appuser.AppUserService;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.boot.autoconfigure.security.oauth2.resource.PrincipalExtractor;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.security.authentication.dao.DaoAuthenticationProvider;
import org.springframework.security.config.annotation.authentication.builders.AuthenticationManagerBuilder;
import org.springframework.security.config.annotation.web.builders.HttpSecurity;
import org.springframework.security.config.annotation.web.configuration.EnableWebSecurity;
import org.springframework.security.config.annotation.web.configuration.WebSecurityConfigurerAdapter;
import org.springframework.security.crypto.bcrypt.BCryptPasswordEncoder;
import org.springframework.security.web.header.HeaderWriter;
import org.springframework.security.web.util.matcher.AntPathRequestMatcher;
import org.springframework.web.cors.CorsConfiguration;
Expand Down Expand Up @@ -156,23 +156,24 @@ public void writeHeaders(HttpServletRequest request, HttpServletResponse respons

}

// @Bean
// public PrincipalExtractor githubPrincipalExtractor() {
// return new GithubPrincipalExtractor();
// }
//
// @Override
// protected void configure(AuthenticationManagerBuilder auth) throws Exception {
// auth.authenticationProvider(daoAuthenticationProvider());
// }
//
// @Bean
// public DaoAuthenticationProvider daoAuthenticationProvider() {
// DaoAuthenticationProvider provider =
// new DaoAuthenticationProvider();
// provider.setUserDetailsService(appUserService);
//
// return provider;
// }
@Bean
public PrincipalExtractor principalExtractor(AppUserRepository appUserRepository) {
return map -> {
String principalId = (String) map.get("id");
AppUser appUser = appUserRepository.findByPrincipalId(principalId);
if (appUser == null) {
LOGGER.info("No user found, generating profile for {}", principalId);
appUser = new AppUser();
appUser.setPrincipalId(principalId);
appUser.setEmail((String) map.get("email"));
appUser.setName((String) map.get("name"));
appUser.setAlias((String) map.get("alias"));
appUser.setAppUserRole(AppUserRole.USER);
appUser.setAvatarUrl((String) map.get("avatar_url"));
}

appUserRepository.save(appUser);
return appUser;
};
}
}
Binary file modified src/main/resources/data/user.mv.db
Binary file not shown.
Loading

0 comments on commit 04e66ba

Please sign in to comment.