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);
}
}