1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34 package fr.paris.lutece.plugins.grafana.web;
35
36 import java.util.Collection;
37 import java.util.List;
38 import java.util.Map;
39 import java.util.Optional;
40
41 import javax.servlet.http.HttpServletRequest;
42
43 import fr.paris.lutece.plugins.grafana.business.Dashboard;
44 import fr.paris.lutece.plugins.grafana.service.DashboardService;
45 import fr.paris.lutece.plugins.grafana.service.NoGrafanaServerException;
46 import fr.paris.lutece.plugins.grafana.service.NoGrafanaDashboardException;
47 import fr.paris.lutece.portal.business.right.Right;
48 import fr.paris.lutece.portal.business.user.AdminUser;
49 import fr.paris.lutece.portal.business.user.AdminUserHome;
50 import fr.paris.lutece.portal.service.admin.AdminUserService;
51 import fr.paris.lutece.portal.util.mvc.admin.MVCAdminJspBean;
52 import fr.paris.lutece.portal.util.mvc.admin.annotations.Controller;
53 import fr.paris.lutece.portal.util.mvc.commons.annotations.View;
54
55
56
57
58 @Controller( controllerJsp = "GrafanaDashboard.jsp", controllerPath = "jsp/admin/plugins/grafana/", right = GrafanaDashboardJspBean.RIGHT_GRAFANADASHBOARD )
59 public class GrafanaDashboardJspBean extends MVCAdminJspBean
60 {
61
62 public static final String RIGHT_GRAFANADASHBOARD = "GRAFANA_MANAGEMENT";
63
64
65 private static final long serialVersionUID = -8829869449480096316L;
66
67
68 private static final String TEMPLATE_DASHBOARD = "/admin/plugins/grafana/grafana_dashboard.html";
69 private static final String TEMPLATE_DASHBOARD_LIST = "/admin/plugins/grafana/grafana_dashboard_list.html";
70 private static final String TEMPLATE_NO_DASHBOARD = "/admin/plugins/grafana/no_dashboard.html";
71 private static final String TEMPLATE_SERVER_ERROR = "/admin/plugins/grafana/grafana_error.html";
72
73
74 private static final String VIEW_DASHBOARD = "dashboard";
75 private static final String VIEW_DASHBOARD_LIST = "dashboardList";
76
77
78 private static final String PROPERTY_PAGE_TITLE_DASHBOARD = "grafana.adminFeature.GrafanaDashboard.pageTitle";
79 private static final String PROPERTY_PAGE_TITLE_DASHBOARD_LIST = "grafana.adminFeature.GrafanaDashboard.list.pageTitle";
80
81
82 private static final String MARK_GRAFANA_SERVER_URL = "grafana_server_url";
83 private static final String MARK_GRAFANA_SERVER_USER_LOGIN = "grafana_server_user_login";
84 private static final String MARK_GRAFANA_SERVER_USER_PWD = "grafana_server_user_pwd";
85 private static final String MARK_ELASTICDATA_FORMS_MANAGEMENT = "right_elasticdata_forms_management";
86 private static final String MARK_ELASTICDATA_MANAGEMENT = "right_elasticdata_management";
87 private static final String MARK_DASHBOARDS_LIST = "dashboards_list";
88 private static final String MARK_DASHBOARD = "dashboard";
89 private static final String MARK_ERROR_MESSAGE = "error_message";
90 private static final String PARAMETER_TAB = "tab";
91
92
93 private static final String RIGHT_ELASTICDATA_FORMS_MANAGEMENT = "ELASTICDATA_FORMS_MANAGEMENT";
94 private static final String RIGHT_ELASTICDATA_MANAGEMENT = "ELASTICDATA_MANAGEMENT";
95
96
97
98
99
100
101
102
103 @View( value = VIEW_DASHBOARD )
104 public String getGrafanaDashboard( HttpServletRequest request )
105 {
106 try
107 {
108 List<Dashboard> listDashboards = DashboardService.getInstance( ).getDashboards( );
109 listDashboards = DashboardService.getInstance( ).filterDashboardListRBAC( listDashboards, request );
110 String strIdDashboard = request.getParameter( PARAMETER_TAB );
111 Optional<Dashboard> dashboard = listDashboards.stream( ).filter( o -> o.getIdGrafanaDashboard( ).equals( strIdDashboard ) ).findFirst( );
112
113 if ( dashboard.isPresent( ) )
114 {
115 Map<String, Object> model = getModel( );
116 model.put( MARK_DASHBOARD, dashboard.get( ) );
117 model.put( MARK_GRAFANA_SERVER_URL, DashboardService.getInstance( ).getGrafanaServerUrl( ) );
118
119 if ( DashboardService.getInstance( ).isGrafanaServerUserShow( ) )
120 {
121 model.put( MARK_GRAFANA_SERVER_USER_LOGIN, DashboardService.getInstance( ).getGrafanaServerUserLogin( ) );
122 model.put( MARK_GRAFANA_SERVER_USER_PWD, DashboardService.getInstance( ).getGrafanaServerUserPassword( ) );
123 }
124
125 AdminUser currentUser = AdminUserService.getAdminUser( request );
126 Collection<Right> rightList = AdminUserHome.getRightsListForUser( currentUser.getUserId( ) ).values( );
127
128 if ( rightList.stream( ).anyMatch( i -> i.getId( ).equals( RIGHT_ELASTICDATA_FORMS_MANAGEMENT ) ) )
129 {
130 model.put( MARK_ELASTICDATA_FORMS_MANAGEMENT, true );
131 }
132
133 if ( rightList.stream( ).anyMatch( i -> i.getId( ).equals( RIGHT_ELASTICDATA_MANAGEMENT ) ) )
134 {
135 model.put( MARK_ELASTICDATA_MANAGEMENT, true );
136 }
137
138 return getPage( PROPERTY_PAGE_TITLE_DASHBOARD, TEMPLATE_DASHBOARD, model );
139 }
140 else
141 {
142 Map<String, Object> model = getModel( );
143 model.put( MARK_GRAFANA_SERVER_URL, DashboardService.getInstance( ).getGrafanaServerUrl( ) );
144 return getPage( PROPERTY_PAGE_TITLE_DASHBOARD, TEMPLATE_NO_DASHBOARD, model );
145 }
146 }
147 catch( NoGrafanaDashboardException ex )
148 {
149 Map<String, Object> model = getModel( );
150 model.put( MARK_GRAFANA_SERVER_URL, DashboardService.getInstance( ).getGrafanaServerUrl( ) );
151 return getPage( PROPERTY_PAGE_TITLE_DASHBOARD, TEMPLATE_NO_DASHBOARD, model );
152 }
153 catch( NoGrafanaServerException ex )
154 {
155 Map<String, Object> model = getModel( );
156 model.put( MARK_ERROR_MESSAGE, ex.getMessage( ) );
157 return getPage( PROPERTY_PAGE_TITLE_DASHBOARD, TEMPLATE_SERVER_ERROR, model );
158 }
159 }
160
161
162
163
164
165
166
167
168 @View( value = VIEW_DASHBOARD_LIST, defaultView = true )
169 public String getGrafanaDashboardList( HttpServletRequest request )
170 {
171 try
172 {
173 List<Dashboard> listDashboards = DashboardService.getInstance( ).getDashboards( );
174 listDashboards = DashboardService.getInstance( ).filterDashboardListRBAC( listDashboards, request );
175 if ( !listDashboards.isEmpty( ) )
176 {
177 Map<String, Object> model = getModel( );
178 model.put( MARK_DASHBOARDS_LIST, listDashboards );
179 return getPage( PROPERTY_PAGE_TITLE_DASHBOARD_LIST, TEMPLATE_DASHBOARD_LIST, model );
180 }
181 else
182 {
183 Map<String, Object> model = getModel( );
184 model.put( MARK_GRAFANA_SERVER_URL, DashboardService.getInstance( ).getGrafanaServerUrl( ) );
185 return getPage( PROPERTY_PAGE_TITLE_DASHBOARD_LIST, TEMPLATE_NO_DASHBOARD, model );
186 }
187 }
188 catch( NoGrafanaDashboardException ex )
189 {
190 Map<String, Object> model = getModel( );
191 model.put( MARK_GRAFANA_SERVER_URL, DashboardService.getInstance( ).getGrafanaServerUrl( ) );
192 return getPage( PROPERTY_PAGE_TITLE_DASHBOARD_LIST, TEMPLATE_NO_DASHBOARD, model );
193 }
194 catch( NoGrafanaServerException ex )
195 {
196 Map<String, Object> model = getModel( );
197 model.put( MARK_ERROR_MESSAGE, ex.getMessage( ) );
198 return getPage( PROPERTY_PAGE_TITLE_DASHBOARD, TEMPLATE_SERVER_ERROR, model );
199 }
200 }
201 }