package thymeleafexamples.layouts.account;
import org.springframework.http.HttpStatus;
import org.springframework.security.access.annotation.Secured;
import org.springframework.util.Assert;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.ResponseStatus;
import org.springframework.web.bind.annotation.RestController;
import java.security.Principal;
@RestController
public class AccountController {
private final AccountRepository accountRepository;
public AccountController(AccountRepository accountRepository) {
this.accountRepository = accountRepository;
}
@GetMapping("account/current")
@ResponseStatus(value = HttpStatus.OK)
@Secured({"ROLE_USER", "ROLE_ADMIN"})
public Account currentAccount(Principal principal) {
Assert.notNull(principal);
return accountRepository.findOneByEmail(principal.getName());
}
@GetMapping("account/{id}")
@ResponseStatus(value = HttpStatus.OK)
@Secured("ROLE_ADMIN")
public Account account(@PathVariable("id") Long id) {
return accountRepository.findOne(id);
}
}