Commit bece6557 by Bogdan Andjelkovic

working login and register

parent f37547c0
package com.example.SkuciSe.configuration;
import com.example.SkuciSe.model.korisnik.KorisnikDetailsService;
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.core.userdetails.UserDetailsService;
import org.springframework.security.crypto.bcrypt.BCryptPasswordEncoder;
@Configuration
@EnableWebSecurity
public class WebSecurityConfig extends WebSecurityConfigurerAdapter
{
@Bean
public UserDetailsService userDetailsService() {
return new KorisnikDetailsService();
}
@Bean
public BCryptPasswordEncoder passwordEncoder() {
return new BCryptPasswordEncoder();
}
@Bean
public DaoAuthenticationProvider authenticationProvider() {
DaoAuthenticationProvider authenticationProvider = new DaoAuthenticationProvider();
authenticationProvider.setUserDetailsService( this.userDetailsService());
authenticationProvider.setPasswordEncoder( this.passwordEncoder());
return authenticationProvider;
}
@Override
protected void configure(AuthenticationManagerBuilder auth) throws Exception {
auth.authenticationProvider( authenticationProvider());
}
@Override
protected void configure(HttpSecurity http) throws Exception {
http.authorizeRequests()
.antMatchers("/proba").authenticated()
.anyRequest().permitAll()
.and().formLogin()
.usernameParameter("email")
.defaultSuccessUrl("/proba")
.permitAll()
.and().logout().logoutSuccessUrl("/index").permitAll();
}
}
package com.example.SkuciSe.controller;
import com.example.SkuciSe.model.korisnik.KorisnikDetails;
import lombok.Getter;
import org.springframework.security.core.annotation.AuthenticationPrincipal;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;
@RestController
public class AppRestController
{
@GetMapping("/proba")
public String proba(@AuthenticationPrincipal KorisnikDetails korisnik)
{
return("<h1>Dobrodosao, "+korisnik.getKorisnik().getIme()+"/h1>");
}
}
package com.example.SkuciSe.model.korisnik;
import org.springframework.security.core.GrantedAuthority;
import org.springframework.security.core.userdetails.UserDetails;
import java.util.Collection;
public class KorisnikDetails implements UserDetails {
private Korisnik korisnik;
public Korisnik getKorisnik()
{
return korisnik;
}
public KorisnikDetails(Korisnik korisnik) {
this.korisnik = korisnik;
}
@Override
public Collection<? extends GrantedAuthority> getAuthorities() {
return null;
}
@Override
public String getPassword() {
return korisnik.getSifra();
}
@Override
public String getUsername() {
return korisnik.getEmail();
}
@Override
public boolean isAccountNonExpired() {
return true;
}
@Override
public boolean isAccountNonLocked() {
return true;
}
@Override
public boolean isCredentialsNonExpired() {
return true;
}
@Override
public boolean isEnabled() {
return true;
}
}
package com.example.SkuciSe.model.korisnik;
import com.example.SkuciSe.repository.KorisnikRepository;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.security.core.userdetails.UserDetails;
import org.springframework.security.core.userdetails.UserDetailsService;
import org.springframework.security.core.userdetails.UsernameNotFoundException;
public class KorisnikDetailsService implements UserDetailsService
{
@Autowired
KorisnikRepository kRepo;
@Override
public UserDetails loadUserByUsername(String email) throws UsernameNotFoundException {
Korisnik korisnik = kRepo.findByEmail(email);
System.out.println( korisnik.toString());
if (korisnik != null)
{
return new KorisnikDetails( korisnik);
}
return null;
}
}
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment