1 /*
2 * Copyright 2012-2025 CodeLibs Project and the Others.
3 *
4 * Licensed under the Apache License, Version 2.0 (the "License");
5 * you may not use this file except in compliance with the License.
6 * You may obtain a copy of the License at
7 *
8 * http://www.apache.org/licenses/LICENSE-2.0
9 *
10 * Unless required by applicable law or agreed to in writing, software
11 * distributed under the License is distributed on an "AS IS" BASIS,
12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND,
13 * either express or implied. See the License for the specific language
14 * governing permissions and limitations under the License.
15 */
16 package org.codelibs.fess.mylasta.action;
17
18 import static org.codelibs.core.stream.StreamUtil.stream;
19
20 import org.codelibs.core.lang.StringUtil;
21 import org.codelibs.fess.Constants;
22 import org.codelibs.fess.entity.FessUser;
23 import org.lastaflute.web.login.TypicalUserBean;
24
25 /**
26 * The user bean for Fess.
27 *
28 * @author jflute
29 */
30 public class FessUserBean extends TypicalUserBean<String> { // #change_it also LoginAssist
31
32 // ===================================================================================
33 // Definition
34 // ==========
35 /** The serial version UID for object serialization. (Default) */
36 private static final long serialVersionUID = 1L;
37 private final FessUser user;
38
39 // ===================================================================================
40 // Attribute
41 // =========
42
43 // ===================================================================================
44 // Constructor
45 // ===========
46 public FessUserBean(final FessUser user) {
47 this.user = user;
48 }
49
50 // ===================================================================================
51 // Implementation
52 // ==============
53 @Override
54 public String getUserId() {
55 return user.getName();
56 }
57
58 // ===================================================================================
59 // Accessor
60 // ========
61 public String[] getPermissions() {
62 return user.getPermissions();
63 }
64
65 public String[] getRoles() {
66 return user.getRoleNames();
67 }
68
69 public String[] getGroups() {
70 return user.getGroupNames();
71 }
72
73 public boolean isEditable() {
74 return user.isEditable();
75 }
76
77 public boolean hasRole(final String role) {
78 return stream(user.getRoleNames()).get(stream -> stream.anyMatch(s -> s.equals(role)));
79 }
80
81 public boolean hasRoles(final String[] acceptedRoles) {
82 return stream(user.getRoleNames())
83 .get(stream -> stream.anyMatch(s1 -> stream(acceptedRoles).get(s3 -> s3.anyMatch(s2 -> s2.equals(s1)))));
84 }
85
86 public boolean hasGroup(final String group) {
87 return stream(user.getGroupNames()).get(stream -> stream.anyMatch(s -> s.equals(group)));
88 }
89
90 public boolean hasGroups(final String[] acceptedGroups) {
91 return stream(user.getGroupNames())
92 .get(stream -> stream.anyMatch(s1 -> stream(acceptedGroups).get(s3 -> s3.anyMatch(s2 -> s2.equals(s1)))));
93 }
94
95 public FessUser getFessUser() {
96 return user;
97 }
98
99 public static FessUserBean empty() {
100 return new FessUserBean(null) {
101 private static final long serialVersionUID = 1L;
102
103 @Override
104 public String getUserId() {
105 return Constants.EMPTY_USER_ID;
106 }
107
108 @Override
109 public boolean hasRoles(final String[] acceptedRoles) {
110 return true;
111 }
112
113 @Override
114 public String[] getRoles() {
115 return StringUtil.EMPTY_STRINGS;
116 }
117
118 @Override
119 public boolean isEditable() {
120 return false;
121 }
122
123 @Override
124 public String[] getPermissions() {
125 return StringUtil.EMPTY_STRINGS;
126 }
127
128 @Override
129 public String[] getGroups() {
130 return StringUtil.EMPTY_STRINGS;
131 }
132
133 @Override
134 public boolean hasRole(final String role) {
135 return false;
136 }
137
138 @Override
139 public boolean hasGroup(final String group) {
140 return false;
141 }
142
143 @Override
144 public boolean hasGroups(final String[] acceptedGroups) {
145 return false;
146 }
147 };
148 }
149 }