c88e7c5ca6747bde6994f7cfaa2a0420048ebda7
[institute/sw-backend.git] /
1 package com.supwisdom.institute.backend.admin.bff.api.v1.controller.me;
2
3 import java.util.ArrayList;
4 import java.util.List;
5
6 import io.swagger.annotations.Api;
7 import io.swagger.annotations.ApiOperation;
8
9 import org.springframework.beans.factory.annotation.Autowired;
10 import org.springframework.util.MimeTypeUtils;
11 import org.springframework.web.bind.annotation.RequestMapping;
12 import org.springframework.web.bind.annotation.RequestMethod;
13 import org.springframework.web.bind.annotation.RestController;
14
15 import com.supwisdom.institute.backend.admin.bff.api.v1.model.base.Permission;
16 import com.supwisdom.institute.backend.admin.bff.api.v1.model.me.CurrentUser;
17 import com.supwisdom.institute.backend.admin.bff.api.v1.model.me.GrantedMenu;
18 import com.supwisdom.institute.backend.admin.bff.api.v1.service.base.AuthnService;
19 import com.supwisdom.institute.backend.admin.bff.api.v1.vo.me.response.data.CurrentUserResponseData;
20 import com.supwisdom.institute.backend.admin.bff.api.v1.vo.me.response.data.GrantedMenusResponseData;
21 import com.supwisdom.institute.backend.admin.bff.utils.CurrentUserUtil;
22 import com.supwisdom.institute.backend.common.core.transmit.user.User;
23 import com.supwisdom.institute.backend.common.framework.entity.EntityUtils;
24 import com.supwisdom.institute.backend.common.framework.vo.response.DefaultApiResponse;
25
26
27 @Api(value = "BFFMe", tags = { "me" }, description = "登录用户相关信息的接口")
28 @RestController
29 @RequestMapping(value = "/v1/me")
30 public class MeController {
31   
32   @Autowired
33   private AuthnService authnService;
34   
35   @ApiOperation(
36       tags = { "me" },
37       value = "获取登录用户的基本信息", notes = "获取登录用户的基本信息", nickname = "user"
38   )
39   @RequestMapping(method = RequestMethod.GET, path = "/user", produces = MimeTypeUtils.APPLICATION_JSON_VALUE)
40   public DefaultApiResponse<CurrentUserResponseData> user() {
41     
42     User user = CurrentUserUtil.currentUser();
43     
44     CurrentUser cu = new CurrentUser();
45     cu.setUsername(user.getUsername());
46     cu.setRoles(user.getRoles());
47     cu.setAttributes(user.getAttributes());
48     
49     // XXX: 如果需要放入其他信息,可以扩展CurrentUser,并从服务接口中获取后写入数据
50     
51     CurrentUserResponseData data = CurrentUserResponseData.of(cu);
52     return new DefaultApiResponse<CurrentUserResponseData>(data);
53   }
54   
55   @ApiOperation(
56       tags = { "me" },
57       value = "获取登录用户的访问菜单", notes = "获取登录用户的访问菜单", nickname = "accountMenus"
58   )
59   @RequestMapping(method = RequestMethod.GET, path = "/menus", produces = MimeTypeUtils.APPLICATION_JSON_VALUE)
60   public DefaultApiResponse<GrantedMenusResponseData> accountMenus() {
61     
62     String username = CurrentUserUtil.currentUsername();
63     
64     List<Permission> menus =  authnService.menus(username, "1");  // XXX: applicationId
65     
66     List<GrantedMenu> grantedMenus = new ArrayList<>();
67     
68     menus.forEach(m -> {
69       GrantedMenu grantedMenu = new GrantedMenu();
70       grantedMenu = EntityUtils.copy(m, grantedMenu);
71       grantedMenus.add(grantedMenu);
72     });
73     
74     GrantedMenusResponseData data = GrantedMenusResponseData.of(grantedMenus);
75     return new DefaultApiResponse<GrantedMenusResponseData>(data);
76     
77   }
78   
79 }