| 
									
										
										
										
											2018-10-12 17:26:42 +08:00
										 |  |  | package hooks | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | import ( | 
					
						
							|  |  |  | 	"github.com/grafana/grafana/pkg/api/dtos" | 
					
						
							| 
									
										
										
										
											2020-01-27 16:24:44 +08:00
										 |  |  | 	"github.com/grafana/grafana/pkg/models" | 
					
						
							| 
									
										
										
										
											2018-10-12 17:26:42 +08:00
										 |  |  | ) | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2020-01-27 16:24:44 +08:00
										 |  |  | type IndexDataHook func(indexData *dtos.IndexViewData, req *models.ReqContext) | 
					
						
							| 
									
										
										
										
											2018-10-12 17:26:42 +08:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2020-11-06 17:01:13 +08:00
										 |  |  | type LoginHook func(loginInfo *models.LoginInfo, req *models.ReqContext) | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2018-10-12 17:26:42 +08:00
										 |  |  | type HooksService struct { | 
					
						
							|  |  |  | 	indexDataHooks []IndexDataHook | 
					
						
							| 
									
										
										
										
											2020-11-06 17:01:13 +08:00
										 |  |  | 	loginHooks     []LoginHook | 
					
						
							| 
									
										
										
										
											2018-10-12 17:26:42 +08:00
										 |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2021-08-25 21:11:22 +08:00
										 |  |  | func ProvideService() *HooksService { | 
					
						
							|  |  |  | 	return &HooksService{} | 
					
						
							| 
									
										
										
										
											2018-10-12 17:26:42 +08:00
										 |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | func (srv *HooksService) AddIndexDataHook(hook IndexDataHook) { | 
					
						
							|  |  |  | 	srv.indexDataHooks = append(srv.indexDataHooks, hook) | 
					
						
							|  |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2020-01-27 16:24:44 +08:00
										 |  |  | func (srv *HooksService) RunIndexDataHooks(indexData *dtos.IndexViewData, req *models.ReqContext) { | 
					
						
							| 
									
										
										
										
											2018-10-12 17:26:42 +08:00
										 |  |  | 	for _, hook := range srv.indexDataHooks { | 
					
						
							| 
									
										
										
										
											2020-01-27 16:24:44 +08:00
										 |  |  | 		hook(indexData, req) | 
					
						
							| 
									
										
										
										
											2018-10-12 17:26:42 +08:00
										 |  |  | 	} | 
					
						
							|  |  |  | } | 
					
						
							| 
									
										
										
										
											2020-11-06 17:01:13 +08:00
										 |  |  | 
 | 
					
						
							|  |  |  | func (srv *HooksService) AddLoginHook(hook LoginHook) { | 
					
						
							|  |  |  | 	srv.loginHooks = append(srv.loginHooks, hook) | 
					
						
							|  |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | func (srv *HooksService) RunLoginHook(loginInfo *models.LoginInfo, req *models.ReqContext) { | 
					
						
							|  |  |  | 	for _, hook := range srv.loginHooks { | 
					
						
							|  |  |  | 		hook(loginInfo, req) | 
					
						
							|  |  |  | 	} | 
					
						
							|  |  |  | } |