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.app.web.admin;
17  
18  import org.codelibs.fess.annotation.Secured;
19  import org.codelibs.fess.app.web.admin.accesstoken.AdminAccesstokenAction;
20  import org.codelibs.fess.app.web.admin.backup.AdminBackupAction;
21  import org.codelibs.fess.app.web.admin.badword.AdminBadwordAction;
22  import org.codelibs.fess.app.web.admin.boostdoc.AdminBoostdocAction;
23  import org.codelibs.fess.app.web.admin.crawlinginfo.AdminCrawlinginfoAction;
24  import org.codelibs.fess.app.web.admin.dashboard.AdminDashboardAction;
25  import org.codelibs.fess.app.web.admin.dataconfig.AdminDataconfigAction;
26  import org.codelibs.fess.app.web.admin.design.AdminDesignAction;
27  import org.codelibs.fess.app.web.admin.dict.AdminDictAction;
28  import org.codelibs.fess.app.web.admin.duplicatehost.AdminDuplicatehostAction;
29  import org.codelibs.fess.app.web.admin.elevateword.AdminElevatewordAction;
30  import org.codelibs.fess.app.web.admin.failureurl.AdminFailureurlAction;
31  import org.codelibs.fess.app.web.admin.fileauth.AdminFileauthAction;
32  import org.codelibs.fess.app.web.admin.fileconfig.AdminFileconfigAction;
33  import org.codelibs.fess.app.web.admin.general.AdminGeneralAction;
34  import org.codelibs.fess.app.web.admin.group.AdminGroupAction;
35  import org.codelibs.fess.app.web.admin.joblog.AdminJoblogAction;
36  import org.codelibs.fess.app.web.admin.keymatch.AdminKeymatchAction;
37  import org.codelibs.fess.app.web.admin.labeltype.AdminLabeltypeAction;
38  import org.codelibs.fess.app.web.admin.log.AdminLogAction;
39  import org.codelibs.fess.app.web.admin.maintenance.AdminMaintenanceAction;
40  import org.codelibs.fess.app.web.admin.pathmap.AdminPathmapAction;
41  import org.codelibs.fess.app.web.admin.plugin.AdminPluginAction;
42  import org.codelibs.fess.app.web.admin.relatedcontent.AdminRelatedcontentAction;
43  import org.codelibs.fess.app.web.admin.relatedquery.AdminRelatedqueryAction;
44  import org.codelibs.fess.app.web.admin.reqheader.AdminReqheaderAction;
45  import org.codelibs.fess.app.web.admin.role.AdminRoleAction;
46  import org.codelibs.fess.app.web.admin.scheduler.AdminSchedulerAction;
47  import org.codelibs.fess.app.web.admin.searchlog.AdminSearchlogAction;
48  import org.codelibs.fess.app.web.admin.sereq.AdminSereqAction;
49  import org.codelibs.fess.app.web.admin.storage.AdminStorageAction;
50  import org.codelibs.fess.app.web.admin.suggest.AdminSuggestAction;
51  import org.codelibs.fess.app.web.admin.systeminfo.AdminSysteminfoAction;
52  import org.codelibs.fess.app.web.admin.user.AdminUserAction;
53  import org.codelibs.fess.app.web.admin.webauth.AdminWebauthAction;
54  import org.codelibs.fess.app.web.admin.webconfig.AdminWebconfigAction;
55  import org.codelibs.fess.app.web.admin.wizard.AdminWizardAction;
56  import org.codelibs.fess.app.web.base.FessAdminAction;
57  import org.codelibs.fess.mylasta.action.FessUserBean;
58  import org.lastaflute.web.Execute;
59  import org.lastaflute.web.response.HtmlResponse;
60  
61  /**
62   * The action for admin pages.
63   */
64  public class AdminAction extends FessAdminAction {
65  
66      /**
67       * Default constructor.
68       */
69      public AdminAction() {
70          super();
71      }
72  
73      @Override
74      protected String getActionRole() {
75          return "admin";
76      }
77  
78      // ===================================================================================
79      //                                                                      Search Execute
80      //                                                                      ==============
81      /**
82       * Show the index page.
83       * @return The HTML response.
84       */
85      @Execute
86      @Secured({ //
87              AdminDashboardAction.ROLE, //
88              AdminDashboardAction.ROLE + VIEW, //
89              AdminWizardAction.ROLE, //
90              AdminWizardAction.ROLE + VIEW, //
91              AdminGeneralAction.ROLE, //
92              AdminGeneralAction.ROLE + VIEW, //
93              AdminSchedulerAction.ROLE, //
94              AdminSchedulerAction.ROLE + VIEW, //
95              AdminDesignAction.ROLE, //
96              AdminDesignAction.ROLE + VIEW, //
97              AdminDictAction.ROLE, //
98              AdminDictAction.ROLE + VIEW, //
99              AdminAccesstokenAction.ROLE, //
100             AdminAccesstokenAction.ROLE + VIEW, //
101             AdminPluginAction.ROLE, //
102             AdminPluginAction.ROLE + VIEW, //
103             AdminStorageAction.ROLE, //
104             AdminStorageAction.ROLE + VIEW, //
105             AdminWebconfigAction.ROLE, //
106             AdminWebconfigAction.ROLE + VIEW, //
107             AdminFileconfigAction.ROLE, //
108             AdminFileconfigAction.ROLE + VIEW, //
109             AdminDataconfigAction.ROLE, //
110             AdminDataconfigAction.ROLE + VIEW, //
111             AdminLabeltypeAction.ROLE, //
112             AdminLabeltypeAction.ROLE + VIEW, //
113             AdminKeymatchAction.ROLE, //
114             AdminKeymatchAction.ROLE + VIEW, //
115             AdminBoostdocAction.ROLE, //
116             AdminBoostdocAction.ROLE + VIEW, //
117             AdminRelatedcontentAction.ROLE, //
118             AdminRelatedcontentAction.ROLE + VIEW, //
119             AdminRelatedqueryAction.ROLE, //
120             AdminRelatedqueryAction.ROLE + VIEW, //
121             AdminPathmapAction.ROLE, //
122             AdminPathmapAction.ROLE + VIEW, //
123             AdminWebauthAction.ROLE, //
124             AdminWebauthAction.ROLE + VIEW, //
125             AdminFileauthAction.ROLE, //
126             AdminFileauthAction.ROLE + VIEW, //
127             AdminReqheaderAction.ROLE, //
128             AdminReqheaderAction.ROLE + VIEW, //
129             AdminDuplicatehostAction.ROLE, //
130             AdminDuplicatehostAction.ROLE + VIEW, //
131             AdminUserAction.ROLE, //
132             AdminUserAction.ROLE + VIEW, //
133             AdminRoleAction.ROLE, //
134             AdminRoleAction.ROLE + VIEW, //
135             AdminGroupAction.ROLE, //
136             AdminGroupAction.ROLE + VIEW, //
137             AdminSuggestAction.ROLE, //
138             AdminSuggestAction.ROLE + VIEW, //
139             AdminElevatewordAction.ROLE, //
140             AdminElevatewordAction.ROLE + VIEW, //
141             AdminBadwordAction.ROLE, //
142             AdminBadwordAction.ROLE + VIEW, //
143             AdminSysteminfoAction.ROLE, //
144             AdminSysteminfoAction.ROLE + VIEW, //
145             AdminSearchlogAction.ROLE, //
146             AdminSearchlogAction.ROLE + VIEW, //
147             AdminJoblogAction.ROLE, //
148             AdminJoblogAction.ROLE + VIEW, //
149             AdminCrawlinginfoAction.ROLE, //
150             AdminCrawlinginfoAction.ROLE + VIEW, //
151             AdminLogAction.ROLE, //
152             AdminLogAction.ROLE + VIEW, //
153             AdminFailureurlAction.ROLE, //
154             AdminFailureurlAction.ROLE + VIEW, //
155             AdminBackupAction.ROLE, //
156             AdminBackupAction.ROLE + VIEW, //
157             AdminMaintenanceAction.ROLE, //
158             AdminMaintenanceAction.ROLE + VIEW, //
159             AdminSereqAction.ROLE, //
160             AdminSereqAction.ROLE + VIEW, //
161             AdminDashboardAction.ROLE, //
162             AdminDashboardAction.ROLE + VIEW, //
163             AdminWizardAction.ROLE, //
164             AdminWizardAction.ROLE + VIEW, //
165             AdminGeneralAction.ROLE, //
166             AdminGeneralAction.ROLE + VIEW, //
167             AdminSchedulerAction.ROLE, //
168             AdminSchedulerAction.ROLE + VIEW, //
169             AdminDesignAction.ROLE, //
170             AdminDesignAction.ROLE + VIEW, //
171             AdminDictAction.ROLE, //
172             AdminDictAction.ROLE + VIEW, //
173             AdminAccesstokenAction.ROLE, //
174             AdminAccesstokenAction.ROLE + VIEW, //
175             AdminPluginAction.ROLE, //
176             AdminPluginAction.ROLE + VIEW, //
177             AdminStorageAction.ROLE, //
178             AdminStorageAction.ROLE + VIEW, //
179             AdminWebconfigAction.ROLE, //
180             AdminWebconfigAction.ROLE + VIEW, //
181             AdminFileconfigAction.ROLE, //
182             AdminFileconfigAction.ROLE + VIEW, //
183             AdminDataconfigAction.ROLE, //
184             AdminDataconfigAction.ROLE + VIEW, //
185             AdminLabeltypeAction.ROLE, //
186             AdminLabeltypeAction.ROLE + VIEW, //
187             AdminKeymatchAction.ROLE, //
188             AdminKeymatchAction.ROLE + VIEW, //
189             AdminBoostdocAction.ROLE, //
190             AdminBoostdocAction.ROLE + VIEW, //
191             AdminRelatedcontentAction.ROLE, //
192             AdminRelatedcontentAction.ROLE + VIEW, //
193             AdminRelatedqueryAction.ROLE, //
194             AdminRelatedqueryAction.ROLE + VIEW, //
195             AdminPathmapAction.ROLE, //
196             AdminPathmapAction.ROLE + VIEW, //
197             AdminWebauthAction.ROLE, //
198             AdminWebauthAction.ROLE + VIEW, //
199             AdminFileauthAction.ROLE, //
200             AdminFileauthAction.ROLE + VIEW, //
201             AdminReqheaderAction.ROLE, //
202             AdminReqheaderAction.ROLE + VIEW, //
203             AdminDuplicatehostAction.ROLE, //
204             AdminDuplicatehostAction.ROLE + VIEW, //
205             AdminUserAction.ROLE, //
206             AdminUserAction.ROLE + VIEW, //
207             AdminRoleAction.ROLE, //
208             AdminRoleAction.ROLE + VIEW, //
209             AdminGroupAction.ROLE, //
210             AdminGroupAction.ROLE + VIEW, //
211             AdminSuggestAction.ROLE, //
212             AdminSuggestAction.ROLE + VIEW, //
213             AdminElevatewordAction.ROLE, //
214             AdminElevatewordAction.ROLE + VIEW, //
215             AdminBadwordAction.ROLE, //
216             AdminBadwordAction.ROLE + VIEW, //
217             AdminSysteminfoAction.ROLE, //
218             AdminSysteminfoAction.ROLE + VIEW, //
219             AdminSearchlogAction.ROLE, //
220             AdminSearchlogAction.ROLE + VIEW, //
221             AdminJoblogAction.ROLE, //
222             AdminJoblogAction.ROLE + VIEW, //
223             AdminCrawlinginfoAction.ROLE, //
224             AdminCrawlinginfoAction.ROLE + VIEW, //
225             AdminLogAction.ROLE, //
226             AdminLogAction.ROLE + VIEW, //
227             AdminFailureurlAction.ROLE, //
228             AdminFailureurlAction.ROLE + VIEW, //
229             AdminBackupAction.ROLE, //
230             AdminBackupAction.ROLE + VIEW, //
231             AdminMaintenanceAction.ROLE, //
232             AdminMaintenanceAction.ROLE + VIEW, //
233             AdminSereqAction.ROLE, //
234             AdminSereqAction.ROLE + VIEW, //
235             AdminDashboardAction.ROLE, //
236             AdminDashboardAction.ROLE + VIEW, //
237             AdminWizardAction.ROLE, //
238             AdminWizardAction.ROLE + VIEW, //
239             AdminGeneralAction.ROLE, //
240             AdminGeneralAction.ROLE + VIEW, //
241             AdminSchedulerAction.ROLE, //
242             AdminSchedulerAction.ROLE + VIEW, //
243             AdminDesignAction.ROLE, //
244             AdminDesignAction.ROLE + VIEW, //
245             AdminDictAction.ROLE, //
246             AdminDictAction.ROLE + VIEW, //
247             AdminAccesstokenAction.ROLE, //
248             AdminAccesstokenAction.ROLE + VIEW, //
249             AdminPluginAction.ROLE, //
250             AdminPluginAction.ROLE + VIEW, //
251             AdminStorageAction.ROLE, //
252             AdminStorageAction.ROLE + VIEW, //
253             AdminWebconfigAction.ROLE, //
254             AdminWebconfigAction.ROLE + VIEW, //
255             AdminFileconfigAction.ROLE, //
256             AdminFileconfigAction.ROLE + VIEW, //
257             AdminDataconfigAction.ROLE, //
258             AdminDataconfigAction.ROLE + VIEW, //
259             AdminLabeltypeAction.ROLE, //
260             AdminLabeltypeAction.ROLE + VIEW, //
261             AdminKeymatchAction.ROLE, //
262             AdminKeymatchAction.ROLE + VIEW, //
263             AdminBoostdocAction.ROLE, //
264             AdminBoostdocAction.ROLE + VIEW, //
265             AdminRelatedcontentAction.ROLE, //
266             AdminRelatedcontentAction.ROLE + VIEW, //
267             AdminRelatedqueryAction.ROLE, //
268             AdminRelatedqueryAction.ROLE + VIEW, //
269             AdminPathmapAction.ROLE, //
270             AdminPathmapAction.ROLE + VIEW, //
271             AdminWebauthAction.ROLE, //
272             AdminWebauthAction.ROLE + VIEW, //
273             AdminFileauthAction.ROLE, //
274             AdminFileauthAction.ROLE + VIEW, //
275             AdminReqheaderAction.ROLE, //
276             AdminReqheaderAction.ROLE + VIEW, //
277             AdminDuplicatehostAction.ROLE, //
278             AdminDuplicatehostAction.ROLE + VIEW, //
279             AdminUserAction.ROLE, //
280             AdminUserAction.ROLE + VIEW, //
281             AdminRoleAction.ROLE, //
282             AdminRoleAction.ROLE + VIEW, //
283             AdminGroupAction.ROLE, //
284             AdminGroupAction.ROLE + VIEW, //
285             AdminSuggestAction.ROLE, //
286             AdminSuggestAction.ROLE + VIEW, //
287             AdminElevatewordAction.ROLE, //
288             AdminElevatewordAction.ROLE + VIEW, //
289             AdminBadwordAction.ROLE, //
290             AdminBadwordAction.ROLE + VIEW, //
291             AdminSysteminfoAction.ROLE, //
292             AdminSysteminfoAction.ROLE + VIEW, //
293             AdminSearchlogAction.ROLE, //
294             AdminSearchlogAction.ROLE + VIEW, //
295             AdminJoblogAction.ROLE, //
296             AdminJoblogAction.ROLE + VIEW, //
297             AdminCrawlinginfoAction.ROLE, //
298             AdminCrawlinginfoAction.ROLE + VIEW, //
299             AdminLogAction.ROLE, //
300             AdminLogAction.ROLE + VIEW, //
301             AdminFailureurlAction.ROLE, //
302             AdminFailureurlAction.ROLE + VIEW, //
303             AdminBackupAction.ROLE, //
304             AdminBackupAction.ROLE + VIEW, //
305             AdminMaintenanceAction.ROLE, //
306             AdminMaintenanceAction.ROLE + VIEW, //
307             AdminSereqAction.ROLE, //
308             AdminSereqAction.ROLE + VIEW,//
309 
310     })
311     public HtmlResponse index() {
312         return redirect(getUserBean().map(user -> {
313             final Class<? extends FessAdminAction> actionClass = getAdminActionClass(user);
314             if (actionClass != null) {
315                 return actionClass;
316             }
317             return AdminDashboardAction.class;
318         }).orElse(AdminDashboardAction.class));
319     }
320 
321     /**
322      * Get the admin action class.
323      * @param user The user.
324      * @return The admin action class.
325      */
326     public static Class<? extends FessAdminAction> getAdminActionClass(final FessUserBean user) {
327         if (user.hasRoles(getActionRoles(AdminDashboardAction.ROLE))) {
328             return AdminDashboardAction.class;
329         }
330         if (user.hasRoles(getActionRoles(AdminWizardAction.ROLE))) {
331             return AdminWizardAction.class;
332         }
333         if (user.hasRoles(getActionRoles(AdminGeneralAction.ROLE))) {
334             return AdminGeneralAction.class;
335         }
336         if (user.hasRoles(getActionRoles(AdminSchedulerAction.ROLE))) {
337             return AdminSchedulerAction.class;
338         }
339         if (user.hasRoles(getActionRoles(AdminDesignAction.ROLE))) {
340             return AdminDesignAction.class;
341         }
342         if (user.hasRoles(getActionRoles(AdminDictAction.ROLE))) {
343             return AdminDictAction.class;
344         }
345         if (user.hasRoles(getActionRoles(AdminAccesstokenAction.ROLE))) {
346             return AdminAccesstokenAction.class;
347         }
348         if (user.hasRoles(getActionRoles(AdminPluginAction.ROLE))) {
349             return AdminPluginAction.class;
350         }
351         if (user.hasRoles(getActionRoles(AdminStorageAction.ROLE))) {
352             return AdminStorageAction.class;
353         }
354         if (user.hasRoles(getActionRoles(AdminWebconfigAction.ROLE))) {
355             return AdminWebconfigAction.class;
356         }
357         if (user.hasRoles(getActionRoles(AdminFileconfigAction.ROLE))) {
358             return AdminFileconfigAction.class;
359         }
360         if (user.hasRoles(getActionRoles(AdminDataconfigAction.ROLE))) {
361             return AdminDataconfigAction.class;
362         }
363         if (user.hasRoles(getActionRoles(AdminLabeltypeAction.ROLE))) {
364             return AdminLabeltypeAction.class;
365         }
366         if (user.hasRoles(getActionRoles(AdminKeymatchAction.ROLE))) {
367             return AdminKeymatchAction.class;
368         }
369         if (user.hasRoles(getActionRoles(AdminBoostdocAction.ROLE))) {
370             return AdminBoostdocAction.class;
371         }
372         if (user.hasRoles(getActionRoles(AdminRelatedcontentAction.ROLE))) {
373             return AdminRelatedcontentAction.class;
374         }
375         if (user.hasRoles(getActionRoles(AdminRelatedqueryAction.ROLE))) {
376             return AdminRelatedqueryAction.class;
377         }
378         if (user.hasRoles(getActionRoles(AdminPathmapAction.ROLE))) {
379             return AdminPathmapAction.class;
380         }
381         if (user.hasRoles(getActionRoles(AdminWebauthAction.ROLE))) {
382             return AdminWebauthAction.class;
383         }
384         if (user.hasRoles(getActionRoles(AdminFileauthAction.ROLE))) {
385             return AdminFileauthAction.class;
386         }
387         if (user.hasRoles(getActionRoles(AdminReqheaderAction.ROLE))) {
388             return AdminReqheaderAction.class;
389         }
390         if (user.hasRoles(getActionRoles(AdminDuplicatehostAction.ROLE))) {
391             return AdminDuplicatehostAction.class;
392         }
393         if (user.hasRoles(getActionRoles(AdminUserAction.ROLE))) {
394             return AdminUserAction.class;
395         }
396         if (user.hasRoles(getActionRoles(AdminRoleAction.ROLE))) {
397             return AdminRoleAction.class;
398         }
399         if (user.hasRoles(getActionRoles(AdminGroupAction.ROLE))) {
400             return AdminGroupAction.class;
401         }
402         if (user.hasRoles(getActionRoles(AdminSuggestAction.ROLE))) {
403             return AdminSuggestAction.class;
404         }
405         if (user.hasRoles(getActionRoles(AdminElevatewordAction.ROLE))) {
406             return AdminElevatewordAction.class;
407         }
408         if (user.hasRoles(getActionRoles(AdminBadwordAction.ROLE))) {
409             return AdminBadwordAction.class;
410         }
411         if (user.hasRoles(getActionRoles(AdminSysteminfoAction.ROLE))) {
412             return AdminSysteminfoAction.class;
413         }
414         if (user.hasRoles(getActionRoles(AdminSearchlogAction.ROLE))) {
415             return AdminSearchlogAction.class;
416         }
417         if (user.hasRoles(getActionRoles(AdminJoblogAction.ROLE))) {
418             return AdminJoblogAction.class;
419         }
420         if (user.hasRoles(getActionRoles(AdminCrawlinginfoAction.ROLE))) {
421             return AdminCrawlinginfoAction.class;
422         }
423         if (user.hasRoles(getActionRoles(AdminLogAction.ROLE))) {
424             return AdminLogAction.class;
425         }
426         if (user.hasRoles(getActionRoles(AdminFailureurlAction.ROLE))) {
427             return AdminFailureurlAction.class;
428         }
429         if (user.hasRoles(getActionRoles(AdminBackupAction.ROLE))) {
430             return AdminBackupAction.class;
431         }
432         if (user.hasRoles(getActionRoles(AdminMaintenanceAction.ROLE))) {
433             return AdminMaintenanceAction.class;
434         }
435         if (user.hasRoles(getActionRoles(AdminSereqAction.ROLE))) {
436             return AdminSereqAction.class;
437         }
438         return null;
439     }
440 
441     private static String[] getActionRoles(final String role) {
442         return new String[] { role, role + VIEW };
443     }
444 
445 }