Skip to content

Commit

Permalink
WIP1
Browse files Browse the repository at this point in the history
  • Loading branch information
dima767 committed Nov 12, 2018
1 parent 1e6b97d commit d74edf6
Show file tree
Hide file tree
Showing 3 changed files with 69 additions and 0 deletions.
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
package edu.internet2.tier.shibboleth.admin.ui.security.repository;

import edu.internet2.tier.shibboleth.admin.ui.security.model.AdminRole;

import java.util.Optional;

/**
* Spring Data repository to manage entities of type {@link AdminRole}.
*
* @author Dmitriy Kopylenko
*/
public interface AdminRoleRepository {

Optional<AdminRole> findByName(final String name);
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
package edu.internet2.tier.shibboleth.admin.ui.security.repository;

import edu.internet2.tier.shibboleth.admin.ui.security.model.AdminUser;
import org.springframework.data.jpa.repository.JpaRepository;

/**
* Spring Data repository to manage entities of type {@link AdminUser}.
*
* @author Dmitriy Kopylenko
*/
public interface AdminUserRepository extends JpaRepository<AdminUser, Long> {

AdminUser findByUsername(String username);
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,40 @@
package edu.internet2.tier.shibboleth.admin.ui.security.springsecurity;

import edu.internet2.tier.shibboleth.admin.ui.security.model.AdminRole;
import edu.internet2.tier.shibboleth.admin.ui.security.model.AdminUser;
import edu.internet2.tier.shibboleth.admin.ui.security.repository.AdminUserRepository;
import lombok.RequiredArgsConstructor;
import org.springframework.security.core.GrantedAuthority;
import org.springframework.security.core.authority.SimpleGrantedAuthority;
import org.springframework.security.core.userdetails.UserDetails;
import org.springframework.security.core.userdetails.UserDetailsService;
import org.springframework.security.core.userdetails.UsernameNotFoundException;
import org.springframework.transaction.annotation.Transactional;

import java.util.HashSet;
import java.util.Set;

/**
* Spring Security {@link UserDetailsService} implementation for local administration of admin users ins the system.
*
* @author Dmitriy Kopylenko
*/
@RequiredArgsConstructor
public class AdminUserService implements UserDetailsService {

private final AdminUserRepository adminUserRepository;

@Override
@Transactional(readOnly = true)
public UserDetails loadUserByUsername(String username) throws UsernameNotFoundException {
AdminUser user = adminUserRepository.findByUsername(username);

Set<GrantedAuthority> grantedAuthorities = new HashSet<>();
for (AdminRole role : user.getRoles()) {
grantedAuthorities.add(new SimpleGrantedAuthority(role.getName()));
}

return new org.springframework.security.core.userdetails.User(user.getUsername(), user.getPassword(), grantedAuthorities);
}
}

0 comments on commit d74edf6

Please sign in to comment.