Skip to content

Commit

Permalink
Pass accountNonLocked over BanService to org.springframework.security…
Browse files Browse the repository at this point in the history
….core.userdetails.User
  • Loading branch information
IDragonfire committed Mar 9, 2017
1 parent e1d62fe commit 307918f
Show file tree
Hide file tree
Showing 6 changed files with 36 additions and 13 deletions.
22 changes: 22 additions & 0 deletions src/main/java/com/faforever/api/ban/BanService.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,22 @@
package com.faforever.api.ban;

import com.faforever.api.data.domain.Player;
import com.faforever.api.player.PlayerRepository;
import org.springframework.stereotype.Service;

@Service
public class BanService {
private final PlayerRepository playerRepository;

public BanService(PlayerRepository playerRepository) {
this.playerRepository = playerRepository;
}

public boolean hasActiveGlobalBan(Player player) {
return player.isGlobalBanned();
}

public boolean hasActiveGlobalBan(String username) {
return hasActiveGlobalBan(playerRepository.findOneByLoginIgnoreCase(username));
}
}
3 changes: 2 additions & 1 deletion src/main/java/com/faforever/api/data/domain/Player.java
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,7 @@
import lombok.Setter;

import javax.persistence.Entity;
import javax.persistence.FetchType;
import javax.persistence.OneToMany;
import javax.persistence.OneToOne;
import javax.persistence.Table;
Expand Down Expand Up @@ -51,7 +52,7 @@ public Clan getClan() {
return null;
}

@OneToMany(mappedBy = "player")
@OneToMany(mappedBy = "player", fetch = FetchType.EAGER)
@UpdatePermission(any = {Role.ALL.class}) // Permission is managed by BanInfo class
public List<BanInfo> getBans() {
return this.bans;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -6,5 +6,5 @@

@Repository
public interface PlayerRepository extends JpaRepository<Player, Integer> {

Player findOneByLoginIgnoreCase(String login);
}
4 changes: 2 additions & 2 deletions src/main/java/com/faforever/api/security/FafUserDetails.java
Original file line number Diff line number Diff line change
Expand Up @@ -17,12 +17,12 @@ public class FafUserDetails extends org.springframework.security.core.userdetail
private final PermissionService permissionService;
private User user;

public FafUserDetails(User user) {
public FafUserDetails(User user, boolean accountNonLocked) {
// TODO implement lobby_admin
this(user.getId(),
user.getLogin(),
user.getPassword(),
true, // TODO use new ban system
accountNonLocked,
singletonList(new SimpleGrantedAuthority("ROLE_USER")),
null);
this.user = user;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -23,6 +23,6 @@ public FafUserDetailsService(UserRepository userRepository) {

@Override
public UserDetails loadUserByUsername(String username) throws UsernameNotFoundException {
return new FafUserDetails(userRepository.findOneByLoginIgnoreCase(username));
return new FafUserDetails(userRepository.findOneByLoginIgnoreCase(username), true);
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -162,7 +162,7 @@ public String createUserAndGetAccessToken(String login, String password) throws
public void getBansWithoutPermission() {
String accessToken = createUserAndGetAccessToken("Dragonfire", "foo");

BanInfo ban = new BanInfo().setAuthor(me).setReason("I want to ban me").setPlayer(me).setType(BanType.GLOBAL);
BanInfo ban = new BanInfo().setAuthor(me).setReason("I want to ban me").setPlayer(me).setType(BanType.CHAT);
banRepository.save(ban);

assertEquals(1, banRepository.count());
Expand All @@ -181,14 +181,14 @@ public void getBansWithPermission() {
Role role = permissionService.createRole("TestRole", permission);
permissionService.assignUserToRole(userRepository.findOneByLoginIgnoreCase(me.getLogin()), role);

BanInfo ban = new BanInfo().setAuthor(me).setReason("I want to ban me").setPlayer(me).setType(BanType.GLOBAL);
BanInfo ban = new BanInfo().setAuthor(me).setReason("I want to ban me").setPlayer(me).setType(BanType.CHAT);
banRepository.save(ban);

assertEquals(1, banRepository.count());
ResultActions action = this.mvc.perform(get("/data/banInfo")
.header("Authorization", accessToken));
action
.andExpect(content().string(String.format("{\"data\":[{\"type\":\"banInfo\",\"id\":\"%s\",\"attributes\":{\"createTime\":null,\"expiresAt\":null,\"reason\":\"I want to ban me\",\"type\":\"GLOBAL\",\"updateTime\":null},\"relationships\":{\"author\":{\"data\":{\"type\":\"player\",\"id\":\"%s\"}},\"banRevokeData\":{\"data\":null},\"player\":{\"data\":{\"type\":\"player\",\"id\":\"%s\"}}}}]}", ban.getId(), me.getId(), me.getId())))
.andExpect(content().string(String.format("{\"data\":[{\"type\":\"banInfo\",\"id\":\"%s\",\"attributes\":{\"createTime\":null,\"expiresAt\":null,\"reason\":\"I want to ban me\",\"type\":\"CHAT\",\"updateTime\":null},\"relationships\":{\"author\":{\"data\":{\"type\":\"player\",\"id\":\"%s\"}},\"banRevokeData\":{\"data\":null},\"player\":{\"data\":{\"type\":\"player\",\"id\":\"%s\"}}}}]}", ban.getId(), me.getId(), me.getId())))
.andExpect(status().is(200));
}

Expand Down Expand Up @@ -246,7 +246,7 @@ public void updateBanWithPermission() {
permissionService.assignUserToRole(userRepository.findOneByLoginIgnoreCase(me.getLogin()), role);

String reason = "I want to ban him";
BanInfo ban = new BanInfo().setAuthor(me).setReason(reason).setPlayer(me).setType(BanType.GLOBAL);
BanInfo ban = new BanInfo().setAuthor(me).setReason(reason).setPlayer(me).setType(BanType.CHAT);
banRepository.save(ban);


Expand Down Expand Up @@ -277,9 +277,9 @@ public void updateBanWithoutUpdatePermission() {
permissionService.assignUserToRole(userRepository.findOneByLoginIgnoreCase(me.getLogin()), role);

String reason = "I want to ban him";
BanInfo ban = new BanInfo().setAuthor(me).setReason(reason).setPlayer(me).setType(BanType.GLOBAL);
BanInfo ban = new BanInfo().setAuthor(me).setReason(reason).setPlayer(me).setType(BanType.CHAT);
banRepository.save(ban);

assertEquals(1, banRepository.count());
assertEquals(reason, banRepository.findAll().get(0).getReason());

Expand Down Expand Up @@ -307,7 +307,7 @@ public void updateBanWithoutReadPermission() {
permissionService.assignUserToRole(userRepository.findOneByLoginIgnoreCase(me.getLogin()), role);

String reason = "I want to ban him";
BanInfo ban = new BanInfo().setAuthor(me).setReason(reason).setPlayer(me).setType(BanType.GLOBAL);
BanInfo ban = new BanInfo().setAuthor(me).setReason(reason).setPlayer(me).setType(BanType.CHAT);
banRepository.save(ban);

assertEquals(1, banRepository.count());
Expand All @@ -334,7 +334,7 @@ public void updateBanWithoutPermission() {
String accessToken = createUserAndGetAccessToken("Dragonfire", "foo");

String reason = "I want to ban him";
BanInfo ban = new BanInfo().setAuthor(me).setReason(reason).setPlayer(me).setType(BanType.GLOBAL);
BanInfo ban = new BanInfo().setAuthor(me).setReason(reason).setPlayer(me).setType(BanType.CHAT);
banRepository.save(ban);

assertEquals(1, banRepository.count());
Expand Down

0 comments on commit 307918f

Please sign in to comment.