1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16 package org.codelibs.fess.app.service;
17
18 import java.util.List;
19
20 import javax.annotation.Resource;
21
22 import org.codelibs.core.beans.util.BeanUtil;
23 import org.codelibs.core.lang.StringUtil;
24 import org.codelibs.fess.Constants;
25 import org.codelibs.fess.app.pager.UserPager;
26 import org.codelibs.fess.app.web.base.login.FessLoginAssist;
27 import org.codelibs.fess.es.user.cbean.UserCB;
28 import org.codelibs.fess.es.user.exbhv.UserBhv;
29 import org.codelibs.fess.es.user.exentity.User;
30 import org.codelibs.fess.exception.FessUserNotFoundException;
31 import org.codelibs.fess.mylasta.direction.FessConfig;
32 import org.codelibs.fess.util.ComponentUtil;
33 import org.dbflute.cbean.result.PagingResultBean;
34 import org.dbflute.optional.OptionalEntity;
35
36 public class UserService {
37
38 @Resource
39 protected UserBhv userBhv;
40
41 @Resource
42 protected FessLoginAssist fessLoginAssist;
43
44 @Resource
45 protected FessConfig fessConfig;
46
47 public List<User> getUserList(final UserPager userPager) {
48
49 final PagingResultBean<User> userList = userBhv.selectPage(cb -> {
50 cb.paging(userPager.getPageSize(), userPager.getCurrentPageNumber());
51 setupListCondition(cb, userPager);
52 });
53
54
55 BeanUtil.copyBeanToBean(userList, userPager, option -> option.include(Constants.PAGER_CONVERSION_RULE));
56 userPager.setPageNumberList(userList.pageRange(op -> {
57 op.rangeSize(fessConfig.getPagingPageRangeSizeAsInteger());
58 }).createPageNumberList());
59
60 return userList;
61 }
62
63 public OptionalEntity<User> getUser(final String id) {
64 return userBhv.selectByPK(id).map(u -> ComponentUtil.getAuthenticationManager().load(u));
65 }
66
67 public OptionalEntity<User> getUserByName(final String username) {
68 return userBhv.selectEntity(cb -> {
69 cb.query().setName_Equal(username);
70 });
71 }
72
73 public void store(final User user) {
74 if (StringUtil.isBlank(user.getSurname())) {
75 user.setSurname(user.getName());
76 }
77
78 ComponentUtil.getAuthenticationManager().insert(user);
79
80 userBhv.insertOrUpdate(user, op -> {
81 op.setRefreshPolicy(Constants.TRUE);
82 });
83
84 }
85
86 public void changePassword(final String username, final String password) {
87 final boolean changed = ComponentUtil.getAuthenticationManager().changePassword(username, password);
88 if (changed) {
89 userBhv.selectEntity(cb -> cb.query().setName_Equal(username)).ifPresent(entity -> {
90 final String encodedPassword = fessLoginAssist.encryptPassword(password);
91 entity.setPassword(encodedPassword);
92 userBhv.insertOrUpdate(entity, op -> op.setRefreshPolicy(Constants.TRUE));
93 }).orElse(() -> {
94 throw new FessUserNotFoundException(username);
95 });
96 }
97
98 }
99
100 public void delete(final User user) {
101 ComponentUtil.getAuthenticationManager().delete(user);
102
103 userBhv.delete(user, op -> {
104 op.setRefreshPolicy(Constants.TRUE);
105 });
106
107 }
108
109 protected void setupListCondition(final UserCB cb, final UserPager userPager) {
110 if (userPager.id != null) {
111 cb.query().docMeta().setId_Equal(userPager.id);
112 }
113
114
115
116 cb.query().addOrderBy_Name_Asc();
117
118
119
120 }
121
122 public List<User> getAvailableUserList() {
123 return userBhv.selectList(cb -> {
124 cb.query().matchAll();
125 cb.fetchFirst(fessConfig.getPageUserMaxFetchSizeAsInteger());
126 });
127 }
128
129 }