package com.piggymetrics.account.controller; import com.piggymetrics.account.domain.Account; import com.piggymetrics.account.domain.User; import com.piggymetrics.account.service.AccountService; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.security.access.prepost.PreAuthorize; import org.springframework.web.bind.annotation.*; import javax.validation.Valid; import java.security.Principal; @RestController public class AccountController { @Autowired private AccountService accountService; @PreAuthorize("#oauth2.hasScope('server') or #name.equals('demo')") @RequestMapping(path = "/{name}", method = RequestMethod.GET) public Account getAccountByName(@PathVariable String name) { return accountService.findByName(name); } @RequestMapping(path = "/current", method = RequestMethod.GET) public Account getCurrentAccount(Principal principal) { return accountService.findByName(principal.getName()); } @RequestMapping(path = "/current", method = RequestMethod.PUT) public void saveCurrentAccount(Principal principal, @Valid @RequestBody Account account) { accountService.saveChanges(principal.getName(), account); } @RequestMapping(path = "/", method = RequestMethod.POST) public Account createNewAccount(@Valid @RequestBody User user) { return accountService.create(user); } }