2022-09-02 06:52:48 -04:00
// Copyright (c) 2015-present Mattermost, Inc. All Rights Reserved.
// See LICENSE.txt for license information.
package api4
import (
"encoding/json"
"net/http"
2023-06-11 01:24:35 -04:00
"github.com/mattermost/mattermost/server/public/model"
2022-09-02 06:52:48 -04:00
)
func handleNotifyAdmin ( c * Context , w http . ResponseWriter , r * http . Request ) {
var notifyAdminRequest * model . NotifyAdminToUpgradeRequest
err := json . NewDecoder ( r . Body ) . Decode ( & notifyAdminRequest )
2023-10-05 09:55:59 -04:00
if err != nil || notifyAdminRequest == nil {
2022-09-02 06:52:48 -04:00
c . SetInvalidParamWithErr ( "notifyAdminRequest" , err )
return
}
userId := c . AppContext . Session ( ) . UserId
appErr := c . App . SaveAdminNotification ( userId , notifyAdminRequest )
if appErr != nil {
c . Err = appErr
return
}
ReturnStatusOK ( w )
}
func handleTriggerNotifyAdminPosts ( c * Context , w http . ResponseWriter , r * http . Request ) {
if ! * c . App . Config ( ) . ServiceSettings . EnableAPITriggerAdminNotifications {
c . Err = model . NewAppError ( "Api4.handleTriggerNotifyAdminPosts" , "api.cloud.app_error" , nil , "Manual triggering of notifications not allowed" , http . StatusForbidden )
return
}
var notifyAdminRequest * model . NotifyAdminToUpgradeRequest
err := json . NewDecoder ( r . Body ) . Decode ( & notifyAdminRequest )
2023-10-05 09:55:59 -04:00
if err != nil || notifyAdminRequest == nil {
2022-09-02 06:52:48 -04:00
c . SetInvalidParamWithErr ( "notifyAdminRequest" , err )
return
}
// only system admins can manually trigger these notifications
if ! c . App . SessionHasPermissionTo ( * c . AppContext . Session ( ) , model . PermissionManageSystem ) {
c . SetPermissionError ( model . PermissionManageSystem )
return
}
appErr := c . App . SendNotifyAdminPosts ( c . AppContext , "" , "" , notifyAdminRequest . TrialNotification )
if appErr != nil {
c . Err = appErr
return
}
ReturnStatusOK ( w )
}