1 /*
2 * Copyright 2018-2022 Medical Information Systems Research Group (https://medical.zcu.cz),
3 * Department of Computer Science and Engineering, University of West Bohemia.
4 * Address: Univerzitni 8, 306 14 Plzen, Czech Republic.
5 *
6 * Author Petr Vcelak (vcelak@kiv.zcu.cz).
7 *
8 * This file is part of MRECore project.
9 *
10 * MRECore is free software: you can redistribute it and/or modify
11 * it under the terms of the GNU General Public License as published by
12 * the Free Software Foundation, either version 3 of the License.
13 *
14 * MRECore is distributed in the hope that it will be useful,
15 * but WITHOUT ANY WARRANTY; without even the implied warranty of
16 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
17 * GNU General Public License for more details.
18 *
19 * You should have received a copy of the GNU General Public License
20 * along with MRECore. If not, see <http://www.gnu.org/licenses/>.
21 */
22 package cz.zcu.mre.controller;
23
24 import cz.zcu.mre.data.account.Account;
25 import cz.zcu.mre.service.account.AccountService;
26 import java.security.Principal;
27 import org.springframework.beans.factory.annotation.Autowired;
28 import org.springframework.http.HttpStatus;
29 import org.springframework.security.access.annotation.Secured;
30 import org.springframework.stereotype.Controller;
31 import org.springframework.util.Assert;
32 import org.springframework.web.bind.annotation.RequestMapping;
33 import org.springframework.web.bind.annotation.RequestMethod;
34 import org.springframework.web.bind.annotation.ResponseBody;
35 import org.springframework.web.bind.annotation.ResponseStatus;
36
37 /**
38 *
39 * @author Petr Vcelak (vcelak@kiv.zcu.cz)
40 */
41 @Controller
42 class AccountController {
43
44 private final AccountService accountService;
45
46 @Autowired
47 public AccountController(AccountService accountService) {
48 this.accountService = accountService;
49 }
50
51 @RequestMapping(value = "account/current", method = RequestMethod.GET)
52 @ResponseStatus(value = HttpStatus.OK)
53 @ResponseBody
54 @Secured({"ROLE_USER", "ROLE_ADMIN"})
55 public Account currentAccount(Principal principal) {
56 Assert.notNull(principal, "Null principal not allowed.");
57 return accountService.findOneByEmail(principal.getName());
58 }
59
60 // @RequestMapping(value = "account/{id}", method = RequestMethod.GET)
61 // @ResponseStatus(value = HttpStatus.OK)
62 // @ResponseBody
63 // @Secured("ROLE_ADMIN")
64 // public Account account(@PathVariable("id") Long id) {
65 // return accountRepository.findOne(id);
66 // }
67 }