Skip to content

Latest commit

 

History

History
104 lines (78 loc) · 2.44 KB

in-memory-specific-user.md

File metadata and controls

104 lines (78 loc) · 2.44 KB
  • Create new User Details for Spring Security
  • Create new user details SERVICE for security
  • Create new security config with new user details service bean
package com.alper.leasesoftprobe.security;

import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.NoArgsConstructor;
import org.springframework.security.core.GrantedAuthority;
import org.springframework.security.core.userdetails.UserDetails;

import java.util.Collection;
import java.util.List;

@AllArgsConstructor
@NoArgsConstructor
@Builder
public class LesaUser  implements UserDetails {

    private String uname;
    private String pass;
    private  String authority;

    @Override
    public Collection<? extends GrantedAuthority> getAuthorities() {
        return List.of(() -> authority);
    }

    @Override
    public String getPassword() {
        return pass;
    }

    @Override
    public String getUsername() {
        return uname;
    }

    @Override
    public boolean isAccountNonExpired() {
        return true;
    }

    @Override
    public boolean isAccountNonLocked() {
        return true;
    }

    @Override
    public boolean isCredentialsNonExpired() {
        return true;
    }

    @Override
    public boolean isEnabled() {
        return true;
    }
}
@AllArgsConstructor
public class LeaseSoftInMemUserDetailsService  implements UserDetailsService {

    private List<UserDetails> userDetailsList;

    @Override
    public UserDetails loadUserByUsername(String username) throws UsernameNotFoundException {
       return  userDetailsList.stream().filter(userDetails -> userDetails.getUsername().equals(username)).findFirst().get();
    }
}
@Configuration
public class LeaseSoftSecurityConfInMemory extends WebSecurityConfigurerAdapter {

    @Bean
    public UserDetailsService userDetailsService(){
        LesaUser u1 = LesaUser.builder().uname("alperm").pass("1234").authority("read").build();
        LesaUser u2 = LesaUser.builder().uname("alperm2").pass("1235").authority("read").build();

        return new LeaseSoftInMemUserDetailsService(List.of(u1,u2));
    }

    @Bean
    public PasswordEncoder passwordEncoder(){
        return  NoOpPasswordEncoder.getInstance();
    }

    @Override
    protected void configure(HttpSecurity http) throws Exception {
        super.configure(http);
    }
}