1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16 package org.codelibs.fess.auth;
17
18 import static org.codelibs.core.stream.StreamUtil.stream;
19
20 import org.apache.commons.lang3.ArrayUtils;
21 import org.codelibs.core.stream.StreamUtil.StreamOf;
22 import org.codelibs.fess.auth.chain.AuthenticationChain;
23 import org.codelibs.fess.es.user.exentity.User;
24
25 public class AuthenticationManager {
26
27 protected AuthenticationChain[] chains = new AuthenticationChain[0];
28
29 public void insert(final User user) {
30 chains().of(stream -> stream.forEach(c -> c.update(user)));
31 }
32
33 public boolean changePassword(final String username, final String password) {
34 return chains().get(stream -> stream.allMatch(c -> c.changePassword(username, password)));
35 }
36
37 public void delete(final User user) {
38 chains().of(stream -> stream.forEach(c -> c.delete(user)));
39 }
40
41 public User load(final User user) {
42 User u = user;
43 for (final AuthenticationChain chain : chains) {
44 u = chain.load(u);
45 }
46 return u;
47 }
48
49 public void addChain(final AuthenticationChain chain) {
50 chains = ArrayUtils.addAll(chains, chain);
51 }
52
53 protected StreamOf<AuthenticationChain> chains() {
54 return stream(chains);
55 }
56
57 }