@@ -52,6 +52,7 @@ const (
5252
5353type  NotificationRestHandler  interface  {
5454	SaveNotificationSettings (w  http.ResponseWriter , r  * http.Request )
55+ 	SaveNotificationSettingsV2 (w  http.ResponseWriter , r  * http.Request )
5556	UpdateNotificationSettings (w  http.ResponseWriter , r  * http.Request )
5657	SaveNotificationChannelConfig (w  http.ResponseWriter , r  * http.Request )
5758	FindSESConfig (w  http.ResponseWriter , r  * http.Request )
@@ -117,6 +118,7 @@ func NewNotificationRestHandlerImpl(dockerRegistryConfig pipeline.DockerRegistry
117118	}
118119}
119120
121+ // SaveNotificationSettings will be deprecated in future 
120122func  (impl  NotificationRestHandlerImpl ) SaveNotificationSettings (w  http.ResponseWriter , r  * http.Request ) {
121123	userId , err  :=  impl .userAuthService .GetLoggedInUser (r )
122124	if  userId  ==  0  ||  err  !=  nil  {
@@ -146,6 +148,65 @@ func (impl NotificationRestHandlerImpl) SaveNotificationSettings(w http.Response
146148	}
147149	//RBAC 
148150
151+ 	providers  :=  notificationSetting .Providers 
152+ 
153+ 	if  len (providers ) !=  0  {
154+ 		for  _ , provider  :=  range  providers  {
155+ 			if  provider .Destination  ==  util .SMTP  ||  provider .Destination  ==  util .SES  {
156+ 				if  provider .Recipient  ==  ""  {
157+ 					userEmail , err  :=  impl .userAuthService .GetEmailById (int32 (provider .ConfigId ))
158+ 					if  err  !=  nil  {
159+ 						impl .logger .Errorw ("service err, SaveNotificationSettings" , "err" , err , "payload" , notificationSetting )
160+ 						common .WriteJsonResp (w , err , nil , http .StatusInternalServerError )
161+ 						return 
162+ 					}
163+ 					provider .Recipient  =  userEmail 
164+ 				}
165+ 				// get default configID for SES and SMTP 
166+ 				provider .ConfigId  =  notificationSetting .SesConfigId 
167+ 			}
168+ 		}
169+ 	}
170+ 
171+ 	res , err  :=  impl .notificationService .CreateOrUpdateNotificationSettings (& notificationSetting , userId )
172+ 	if  err  !=  nil  {
173+ 		impl .logger .Errorw ("service err, SaveNotificationSettings" , "err" , err , "payload" , notificationSetting )
174+ 		common .WriteJsonResp (w , err , nil , http .StatusInternalServerError )
175+ 		return 
176+ 	}
177+ 	w .Header ().Set ("Content-Type" , "application/json" )
178+ 	common .WriteJsonResp (w , nil , res , http .StatusOK )
179+ }
180+ 
181+ func  (impl  NotificationRestHandlerImpl ) SaveNotificationSettingsV2 (w  http.ResponseWriter , r  * http.Request ) {
182+ 	userId , err  :=  impl .userAuthService .GetLoggedInUser (r )
183+ 	if  userId  ==  0  ||  err  !=  nil  {
184+ 		common .WriteJsonResp (w , err , "Unauthorized User" , http .StatusUnauthorized )
185+ 		return 
186+ 	}
187+ 	var  notificationSetting  beans.NotificationRequest 
188+ 	err  =  json .NewDecoder (r .Body ).Decode (& notificationSetting )
189+ 	if  err  !=  nil  {
190+ 		impl .logger .Errorw ("request err, SaveNotificationSettings" , "err" , err , "payload" , notificationSetting )
191+ 		common .WriteJsonResp (w , err , nil , http .StatusBadRequest )
192+ 		return 
193+ 	}
194+ 	impl .logger .Infow ("request payload, SaveNotificationSettings" , "err" , err , "payload" , notificationSetting )
195+ 	err  =  impl .validator .Struct (notificationSetting )
196+ 	if  err  !=  nil  {
197+ 		impl .logger .Errorw ("validation err, SaveNotificationSettings" , "err" , err , "payload" , notificationSetting )
198+ 		common .WriteJsonResp (w , err , nil , http .StatusBadRequest )
199+ 		return 
200+ 	}
201+ 
202+ 	//RBAC 
203+ 	token  :=  r .Header .Get ("token" )
204+ 	if  isSuperAdmin  :=  impl .enforcer .Enforce (token , casbin .ResourceGlobal , casbin .ActionGet , "*" ); ! isSuperAdmin  {
205+ 		common .WriteJsonResp (w , err , nil , http .StatusForbidden )
206+ 		return 
207+ 	}
208+ 	//RBAC 
209+ 
149210	res , err  :=  impl .notificationService .CreateOrUpdateNotificationSettings (& notificationSetting , userId )
150211	if  err  !=  nil  {
151212		impl .logger .Errorw ("service err, SaveNotificationSettings" , "err" , err , "payload" , notificationSetting )
0 commit comments