View Javadoc
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 }