github.com/adacta-ru/mattermost-server/v6@v6.0.0/api4/bleve.go (about)

     1  // Copyright (c) 2015-present Mattermost, Inc. All Rights Reserved.
     2  // See LICENSE.txt for license information.
     3  
     4  package api4
     5  
     6  import (
     7  	"net/http"
     8  
     9  	"github.com/adacta-ru/mattermost-server/v6/audit"
    10  	"github.com/adacta-ru/mattermost-server/v6/model"
    11  )
    12  
    13  func (api *API) InitBleve() {
    14  	api.BaseRoutes.Bleve.Handle("/purge_indexes", api.ApiSessionRequired(purgeBleveIndexes)).Methods("POST")
    15  }
    16  
    17  func purgeBleveIndexes(c *Context, w http.ResponseWriter, r *http.Request) {
    18  	auditRec := c.MakeAuditRecord("purgeBleveIndexes", audit.Fail)
    19  	defer c.LogAuditRec(auditRec)
    20  
    21  	if !c.App.SessionHasPermissionTo(*c.App.Session(), model.PERMISSION_SYSCONSOLE_WRITE_EXPERIMENTAL) {
    22  		c.SetPermissionError(model.PERMISSION_SYSCONSOLE_WRITE_EXPERIMENTAL)
    23  		return
    24  	}
    25  
    26  	if *c.App.Config().ExperimentalSettings.RestrictSystemAdmin {
    27  		c.Err = model.NewAppError("purgeBleveIndexes", "api.restricted_system_admin", nil, "", http.StatusForbidden)
    28  		return
    29  	}
    30  
    31  	if err := c.App.PurgeBleveIndexes(); err != nil {
    32  		c.Err = err
    33  		return
    34  	}
    35  
    36  	auditRec.Success()
    37  
    38  	ReturnStatusOK(w)
    39  }